Étiquette : pipe

19 décembre 2015 /

Redirection simple

Le Pipe  » | « :

Le symbole pipe  » |  »  permet de passer le résultat d’une commande a la suivante.

Exemple:

commande1 | commande2

 

Plus grand que  » > « :

Le symbole >  redirige le résultat de la commande vers un fichier.
Si le fichier existe déjà, son contenu sera effacé.

Exemple:

commande > fichier

 

Deux fois plus grand que  » >> « :
Redirige le résultat de la commande vers un fichier.

Si le fichier existe déjà, le résultat de la commande est ajouté à la suite du fichier.

Exemple:

commande >> fichier

 

Plus petit que  » < « :

La commande prend en argument le contenu du fichier

Exemple:

commande < fichier

 

Redirection avancées

Pour l’entrée standard, la sortie standard et la sortie d’erreur le numéro identifiant sera respectivement 0, 1 et 2.
Ces identifiants vont nous permettre de faire des redirections plus évolués.

Si l’identifiant source n’est pas précisé, c’est la valeur 1 qui sera prise par défaut (1>&2 peut s’écrire alors >&2).


Rediriger la sortie standard dans un fichier:

1> fichier.txt

qui s’écrit aussi comme ça (1  par défaut):

> fichier.txt


Rediriger la sortie d’erreur dans un fichier:

2> fichier.txt


Rediriger la sortie standard sur la sortie d’erreur:

1>&2

qui s’écrit aussi comme ça (1  par défaut):

>&2

1 étant l’identifiant descripteur source et 2 l’identifiant du descripteur sur lequel on veut rediriger.


Rediriger la sortie d’erreur sur la sortie standard:

2>&1

2 étant l’identifiant descripteur source et 1 l’identifiant du descripteur sur lequel on veut rediriger.


Rediriger la sortie standard et la sortie d’erreur dans un fichier:

> fichier.txt 2>&1

qui s’écrit aussi comme ça:

1>>fichier.txt 2>>fichier.txt

ou comme ça (1  par défaut):

>>fichier.txt 2>>fichier.txt

Le trou noir

Le fichier /dev/null est un peu particulier.
Si on affiche son contenu on n’obtient rien, et si on écrit quelque chose dedans ça disparaît.
Cela est très pratique pour supprimer une sortie.

Pour rediriger la sortie standard vers /dev/null :

> /dev/null

Pour rediriger toutes les sorties vers /dev/null :

> /dev/null 2>&1

14 juin 2015 /

Le signe « – » n’est pas en lui-même un opérateur lorsqu’un nom de fichier est attendu, c’est plutôt une option reconnue par certains Unix et Linux. Cela écrit dans la sortie standard (stdout) ou lit dans l’entrée standard (stdin), comme par exemple tar ou cat, mais il y en a d’autre

Voici un exemple avec cat:

echo "salut" | cat -

Cela affichera:

salut

Voici un exemple avec tar:

tar -cvf - /home/starmate | ssh sauvegarde@sauvegarde.home "cat > sauvegarde.tar"

Ici tar va envoyer la création de l’archive dans la sortie standard, qui sera pipée ( | ) via SSH sur le serveur « sauvegarde.home ». Puis son affichage via cat sera redirigé dans un fichier sauvegarde.tar dans le répertoire personnel de l’utilisateur local « sauvegarde ».

Un  » –  » redirige donc la sortie vers stdout ou accepte une entrée de stdin, plutôt qu’un fichier.
Cette méthode est utilisé principalement lorsque l’on juge utile de manipuler des fichiers à travers des tubes.