Le >
redirecteur écrit la sortie de la commande ( stdout
, pas stderr
- vous utilisez 2>
pour cela) dans le fichier spécifié après. S'il existe déjà, le fichier sera écrasé.
Ce comportement est utile pour la première de vos commandes: s'il existe un fichier existant, il doit être supprimé et remplacé par le nouveau.
Cependant, comme vous devez ajouter toutes les autres sorties au lieu de remplacer les précédentes, vous devez utiliser le redirecteur-append >>
. Cela créera un fichier s'il n'existe pas encore, mais ajoute la sortie redirigée au fichier, s'il existe déjà.
Et veuillez ne pas utiliser le canal |
pour écrire plusieurs commandes sur une seule ligne, ce qui redirigerait la sortie de la première commande ( stdout
) vers l'entrée de la deuxième commande ( stdin
).
Vous pouvez utiliser le point-virgule (;
) pour simplement dire à bash d'exécuter une commande après l'autre, comme s'il s'agissait d'un fichier de script. Si une commande échoue (le code retour n'est pas 0), les commandes restantes sont toujours exécutées.
Ou vous pouvez choisir les opérateurs logiques AND ( &&
) ou OR ( ||
):
Si vous utilisez &&
pour connecter deux commandes, la seconde ne sera exécutée que si la première réussit (le code retour est 0). S'il échoue, aucune des commandes suivantes ne s'exécutera.
Le ||
cependant n'exécute la seconde commande si le premier n'a pas (code retour est 0)!
Donc, dans votre cas, je vous recommande d'utiliser le point-virgule:
md5sum firefox.tar.gz > sha.txt ; sha1sum firefox.tar.gz >> sha.txt ; sha512sum firefox.tar.gz >> sha.txt
{}
ou()
? Merci.