Bases de Linux et de la ligne de commande
$ ls
a.txt
$ ls a.txt nofile 2>&1 > out.txtComme ci-dessus, dans un répertoire où a.txt existe et nofile n'existe pas, on exécute la dernière commande. Quel est le résultat ?
- ASeule la ligne d'erreur est écrite dans out.txt, et la ligne a.txt s'affiche à l'écran
- BLa ligne d'erreur et la ligne a.txt sont toutes deux écrites dans out.txt, et rien ne s'affiche à l'écran
- CSeule la ligne a.txt est écrite dans out.txt, et la ligne d'erreur s'affiche à l'écran
Afficher la réponse et l'explication
Réponse : C. Seule la ligne a.txt est écrite dans out.txt, et la ligne d'erreur s'affiche à l'écran
Les redirections sont traitées de gauche à droite. « 2>&1 » signifie « envoyer la sortie d'erreur standard (2) là où va la sortie standard (1) à cet instant » ; à ce moment, la sortie standard est encore l'écran, donc les erreurs s'affichent à l'écran. Le « > out.txt » qui suit ne redirige que la sortie standard vers out.txt : le fichier ne reçoit donc que la ligne a.txt, qui est la sortie normale de ls. Pour écrire les deux dans le fichier, on redirige d'abord la sortie standard, puis on écrit 2>&1, comme dans « ls a.txt nofile > out.txt 2>&1 ».
Continuer : 9 autres questions sur Bases de Linux et de la ligne de commande