14 liens privés
En bash, pour rediriger la sortie dans un fichier, on utilise le symbole >... Ajouter set -o noclobber
dans .bashrc empêchera > d'écraser un fichier existant lors d'une commande tapée à la main. Pour y arriver, il faudra utiliser >| pour forcer.
2>&1 - Fusionner erreurs et sortie normale
&1 dit à bash "le 1 c'est un file descriptor, pas un fichier qui s'appelle littéralement 1". Du coup stderr (2) est redirigé vers le même endroit que stdout (1), ou plutôt vers là où stdout pointe au moment où bash évalue la ligne.
Attention à l'ordre ! Bash lit les redirections de gauche à droite.
> output.log 2>&1 -> stdout pointe vers le fichier, puis stderr suit... tout va dans le fichier.
2>&1 > output.log -> stderr copie stdout qui pointe ENCORE vers le terminal, puis stdout est redirigé vers le fichier. Résultat, les erreurs restent dans votre terminal.
Et &> fait la même chose en plus court : commande &> output.log. C'est super pratique, mais spécifique à bash / zsh.