Voici mes commandes pour une tâche.
find -name myname.tar tar -xvf myname.tar rm -r myname/*
Ces commandes multi-lignes fonctionnent correctement, mais j’ai besoin d’une commande d’une ligne. Puis j’ai utilisé cette commande,
find -name myname.tar | tar -xvf myname.tar | rm -r myname/*
Je reçois cette erreur:
"rm -r myname/* rm: cannot remove `myname/*': No such file or directory "
Quelqu’un peut-il m’aider à cela?
Merci
La plupart du temps, vous cherchez un moyen d’exécuter la commande suivante, si la précédente était exécutée sans erreur.
&&
vérifie le statut de sortie et continue, s’il est à 0
(pour OK) Donc, ce que vous semblez vouloir, c’est
find -name myname.tar && tar -xvf myname.tar && rm -r myname/*
Il existe deux façons courantes de le faire:
Joignez les commandes avec un point-virgule ;
qui exécutera les commandes les unes après les autres.
echo "Hello"; false; echo "There"; >> Hello >> There
L’autre est de joindre des commandes avec un &&
Le &&
fera UNIQUEMENT la commande suivante si celle avant elle avait un code de sortie zéro.
echo "Hello" && false && echo "There"; >> Hello
Le ‘|’ Le symbole fait quelque chose de complètement différent. Il exécute les deux commandes, sentant la sortie standard de l’une dans la norme de stdin
de l’autre. ( wc -w
compte le nombre de mots dans stdin
.)
echo "Two Words" | wc -w >> 2
Ce que vous utilisiez (|) s’appelle un homologue, qui transmet les données d’une commande à une autre. pour ex .:
$ cat test.php | grep '<'
pour exécuter plusieurs commandes les unes après les autres, vous pouvez utiliser ';':
echo 123; echo 456
ou si vous voulez que vos commandes dépendent du succès de chacun, vous pouvez "&&":
$ eho 123; echo 456 eho: command not found 456 $ eho 123 && echo 456 eho: command not found