Utilisez &&
pour combiner deux commandes dans une seule ligne de shell :
COMMAND1 && COMMAND2
mkdir -p /my/other/path/here/ && touch /my/other/path/here/cpedthing.txt
Remarque :Auparavant, je recommandais l'utilisation de ;
pour séparer les deux commandes mais comme l'a souligné @trysis, il est probablement préférable d'utiliser &&
dans la plupart des situations car dans le cas COMMAND1
échoue COMMAND2
ne sera pas exécuté non plus. (Sinon, cela pourrait entraîner des problèmes auxquels vous ne vous attendiez peut-être pas.)
Faites-le avec /usr/bin/install :
install -D /my/long/path/here/thing.txt /my/other/path/here/cpedthing.txt
quand vous n'avez pas de fichier source :
install -D <(echo 1) /my/other/path/here/cpedthing.txt
Vous devez d'abord créer tous les répertoires parents.
FILE=./base/data/sounds/effects/camera_click.ogg
mkdir -p "$(dirname "$FILE")" && touch "$FILE"
Si vous voulez faire preuve de créativité, vous pouvez créer une fonction :
mktouch() {
if [ $# -lt 1 ]; then
echo "Missing argument";
return 1;
fi
for f in "[email protected]"; do
mkdir -p -- "$(dirname -- "$f")"
touch -- "$f"
done
}
Puis utilisez-la comme n'importe quelle autre commande :
mktouch ./base/data/sounds/effects/camera_click.ogg ./some/other/file