cours/unix redirection de flux.md
Oscar Plaisant 602a41e7f8 update
2024-12-25 22:30:24 +01:00

3.5 KiB

up::unix redirection de flux #s/informatique


Par défaut, les commandes récupèrent les données tapées par l'utilisateur au clavier en entrée (unix stdin). Par défaut, la sortie des commandes (unix stdout) est affichée à l'écran. Par défaut, la sortie des erreur (unix stderr) est également affichée à l'écran.

Commandes de redirection

  • < entree les données de la commande (stdin) seront lues dans le fichier entree plutôt qu'au clavier
  • > sortie la sortie de la command (stdout) sera écrite dans le fichier sortie, en l'écrasant si il existait déjà
  • >> sortie comme > sortie sauf que le fichier n'est pas écrasé (le stdout de la commande est ajouté à la fin du fichier)
  • 2> erreur les messages d'erreur de la commande (stderr) seront écrits dans le fichier erreur. Son ancien contenu est effacé
  • 2>> erreur le stderr de la commande est ajouté à la fin du fichier erreur
  • 2>&1 le stderr est fusionné avec le stdout
  • 1>&2 les données en sortie sont fusionnées avec les messages d'erreur (cas rare)

Exemples

  • sort monfichier affiche à l'écran les lignes du fichier classées par ordre alphabétique. Si le fichier n'existe pas, un message d'erreur apparaît à l'écran
  • sort monfichier > resultat 2> problemes écrit les lignes de monfichier triées par ordre alphabétique dans resultat. Si le fichier monfichier n'existe pas, le message d'erreur est écrit dans le fichier problemes

Enchaînement des commandes

Syntaxe générale

commande1 options arguments | commande2 options | commande3 ...

Exemple

  • find / -size +1000k -mtime -7 | sort | tee trace | less
    • la commande find recherche dans tous les répertoires de l'ordinateur les fichiers de plus de 1000 kilooctets modifiés durant les 7 derniers jours et affiche leur chemin d'accès
    • la commande sort fait un tri alphabétique des données reçues en entrée
    • la commande tee envoie son stdin à la fois dans le fichier trace et dans le stdout
    • la commande less permet de visualiser un texte trop long pour tenir en entier à l'écran.

Métacaractères

Utilisés pour exprimer des noms de fichiers.

  • ? n'importe quel caractère, une seule fois
  • * n'importe quel caractère, 0, une ou plusieurs fois
  • [c1-c2] n'importe quel caractères de l'ensemble ordonné commençant par c1 et terminant par c2
  • \ le caractère suivant de doit pas être traité comme un métacaractère (échappement)
  • . le caractère . en première position doit être précisé explicitement (car les fichiers dont le nom commence par ce caractère sont des fichiers cachés, ils ne sont dont pas considérés pas défaut)

Résultat d'une commande comme argument d'une autre

Les ` entourant une commande permettent d'utiliser le résultat de cette commande comme argument(s) dans la line de commande

Exemples

$ echo "Nous sommes le" `date +%d/%m/%y` "et il est" `date +%H:%M:%S`
$ echo "2 + 2 =" `expr 2 + 2`

Faire se suivre des commandes

  • ; entre deux commandes pour les exécuter l'une après l'autre
  • && (signifie "et") entre deux commandes pour exécuter la seconde uniquement si la première n'a pas renvoyé d'erreur
  • || (signifie "ou") entre deux commandes pour exécuter la seconde uniquement si la première a renvoyé une erreur
  • & à la fin d'une commande, lance celle-ci en tâche de fond (et renvoie son PID)