Bases de Linux et de la ligne de commande

$ ls
a.txt
$ ls a.txt nofile 2>&1 > out.txt

Comme 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 ?

  1. ASeule la ligne d'erreur est écrite dans out.txt, et la ligne a.txt s'affiche à l'écran
  2. BLa ligne d'erreur et la ligne a.txt sont toutes deux écrites dans out.txt, et rien ne s'affiche à l'écran
  3. 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 ».

S'entraîner sur ce thème Retour au thème

Autres questions sur Bases de Linux et de la ligne de commande

  1. Dans la session ci-dessus, quelle valeur affiche la dernière commande ?
  2. Dans la session ci-dessus, quelles lignes affiche le dernier grep ?
  3. Les choix sont donnés sans les espaces en début de ligne. Dans la session ci-dessus, quelle ligne affiche le dernier enchaînement de commandes ?
  4. On veut afficher en continu à l'écran les lignes ajoutées par la suite au fichier journal du serveur /var/log/app.log, au fur et à mesure de leur ajout. Quelle commande convient ?
  5. Quelle est la sortie de la commande ci-dessus, qui extrait des colonnes d'une ligne dont les champs sont séparés par des virgules ?