Redirections et tubes

Les trois flux standard, les redirections >, >>, <, 2> et 2>&1, /dev/null, le tube et tee, et l'ordre dans lequel le shell les applique.

  • 23 cartes
  • 5 thèmes
  • Gratuit

Le programme, thème par thème

Le poids de chaque thème suit celui que lui donne l'examen.

  1. Notions
  2. Questions
  3. Ranger et relier
  4. Mises en situation
  5. Comprendre

Quelques cartes du deck

  • Flux standard : de quoi s'agit-il ?

    Voir la réponse

    Les trois canaux que chaque processus a ouverts au départ : l'entrée standard, la sortie standard et la sortie d'erreur.

    Par défaut, l'entrée est le clavier, la sortie et l'erreur sont l'écran. Séparer les deux sorties permet de rediriger les résultats sans perdre les messages d'erreur.

  • Avec ls /etc/passwd /nope > out, que contient l'écran et que contient out ?

    • Écran : l'erreur sur /nope ; out : /etc/passwd
    • L'écran reste vide ; out contient /etc/passwd et l'erreur
    • L'écran montre /etc/passwd ; out contient l'erreur sur /nope
    • L'écran montre les deux lignes ; out est créé mais reste vide
    Voir la réponse

    Écran : l'erreur sur /nope ; out : /etc/passwd

    > ne redirige que la sortie standard (descripteur 1). Le message « ls: cannot access '/nope': No such file or directory » part sur la sortie d'erreur, donc à l'écran.

  • L'entrée standard porte le numéro …, la sortie standard le … et la sortie d'erreur le ….

    Voir la réponse

    L'entrée standard porte le numéro 0, la sortie standard le 1 et la sortie d'erreur le 2.

    > seul est un raccourci de 1>. C'est pour cela que 2> est nécessaire pour attraper les erreurs.

  • > et >> : de quoi s'agit-il ?

    Voir la réponse

    Envoient la sortie standard dans un fichier : le premier l'écrase, le second ajoute à la fin.

    Les deux créent le fichier s'il n'existe pas. > le vide dès que le shell l'ouvre, avant même que la commande ne s'exécute.

  • Après sort notes.txt > notes.txt, le fichier notes.txt est vide. Quelle commande trie réellement le fichier ?

    • sort -o notes.txt notes.txt
    • sort notes.txt >> notes.txt
    • sort notes.txt | notes.txt
    • sort < notes.txt > notes.txt
    Voir la réponse

    sort -o notes.txt notes.txt

    Le shell ouvre notes.txt en écriture, donc le vide, avant que sort ne le lise. -o laisse sort lire tout le fichier avant d'écrire. >> ajouterait les lignes triées, | chercherait une commande notes.txt, et la version avec < vide le fichier de la même façon. On peut aussi passer par un fichier temporaire puis mv.