J'essaye de jeter la sortie de commande au dossier plus la console également. C'est parce que je veux garder une trace de la sortie dans un fichier. Je fais suivre et l'ajouter au fichier mais pas imprimer ls
sortie sur le terminal.
$ls 2>&1 > /tmp/ls.txt
Oui, si vous redirigez la sortie, elle n'apparaîtra pas sur la console. Utilisez tee
.
ls 2>&1 | tee /tmp/ls.txt
Il est à noter que 2> & 1 signifie que l'erreur standard sera également redirigée, avec la sortie standard. Alors
someCommand | tee someFile
vous donne seulement la sortie standard dans le fichier, mais pas l'erreur standard: l'erreur standard apparaîtra uniquement dans la console. Pour obtenir également une erreur standard dans le fichier, vous pouvez utiliser
someCommand 2>&1 | tee someFile
(source: Dans le shell, qu'est-ce que "2> et 1"? ). Enfin, les deux commandes ci-dessus tronqueront le fichier et commenceront en clair. Si vous utilisez une séquence de commandes, vous voudrez peut-être obtenir une sortie et une erreur de chacune d’elles, l’une après l’autre. Dans ce cas, vous pouvez utiliser -a flag pour "tee":
someCommand 2>&1 | tee -a someFile
Dans le cas où quelqu'un aurait besoin d'ajouter la sortie et de ne pas le remplacer, il est possible d'utiliser l'option "-a" ou "--append" de la commande "tee":
ls 2>&1 | tee -a /tmp/ls.txt
ls 2>&1 | tee --append /tmp/ls.txt