Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT →
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
doc:programmation:shell:chevrons [23/03/2015 17:50] milou [Entrée] |
doc:programmation:shell:chevrons [01/05/2021 12:58] (Version actuelle) jpt [Sortie] |
||
---|---|---|---|
Ligne 2: | Ligne 2: | ||
* Objet : commandes de redirection | * Objet : commandes de redirection | ||
- | * Niveau requis : {{tag>débutant}} | + | * Niveau requis : {{tag>débutant avisé}} |
* Commentaires : // Par redirection, on entend la possibilité de rediriger l'affichage de l'écran vers un fichier ou tout autre périphérique...// | * Commentaires : // Par redirection, on entend la possibilité de rediriger l'affichage de l'écran vers un fichier ou tout autre périphérique...// | ||
* Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-) | * Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-) | ||
Ligne 59: | Ligne 59: | ||
Prenons un fichier d'environs 100Mo. | Prenons un fichier d'environs 100Mo. | ||
<code user> | <code user> | ||
- | dd if=/dev/zero of=fichier bs=1 count=1 seek=100M | + | dd if=/dev/zero of=fichier bs=1 count=1 seek=100M</code> |
- | 1+0 enregistrements lus | + | <file config retour de la commande>1+0 enregistrements lus |
1+0 enregistrements écrits | 1+0 enregistrements écrits | ||
- | 1 octet (1 B) copié, 4,4267e-05 s, 22,6 kB/s</code> | + | 1 octet (1 B) copié, 4,4267e-05 s, 22,6 kB/s</file> |
- | <code user>ls -lhi | + | <code user>ls -lhi</code> |
- | total 4,0K | + | <file config retour de la commande>>total 4,0K |
- | 1163 -rw-r--r-- 1 user user 101M oct. 16 20:34 fichier</code> | + | 1163 -rw-r--r-- 1 user user 101M oct. 16 20:34 fichier</file> |
Vider le fichier se fait aussi simplement que ça : | Vider le fichier se fait aussi simplement que ça : | ||
Ligne 72: | Ligne 72: | ||
<code user> | <code user> | ||
- | ls -lhi | + | ls -lhi</code> |
- | total 0 | + | <file config retour de la commande>total 0 |
- | 1163 -rw-r--r-- 1 fgivors fgivors 0 oct. 16 20:33 fichier</code> | + | 1163 -rw-r--r-- 1 fgivors fgivors 0 oct. 16 20:33 fichier</file> |
L'intérêt de vider un fichier de cette manière, par rapport à un rm et un touch, c'est que l'on conserve le numéro d'inode (le numéro marqué à gauche). | L'intérêt de vider un fichier de cette manière, par rapport à un rm et un touch, c'est que l'on conserve le numéro d'inode (le numéro marqué à gauche). | ||
Ligne 123: | Ligne 123: | ||
Un exemple avec la commande [[:doc:systeme:wc]] (word count) qui permet de compter le nombre de lignes, de mots et de caractères d'un fichier. | Un exemple avec la commande [[:doc:systeme:wc]] (word count) qui permet de compter le nombre de lignes, de mots et de caractères d'un fichier. | ||
<code user> | <code user> | ||
- | wc dossier1/test1.txt | + | wc dossier1/test1.txt</code> |
- | 1 3 17 dossier1/test1.txt</code> | + | <file config retour de la commande> 1 3 17 dossier1/test1.txt</file> |
Ces trois nombres signifie : | Ces trois nombres signifie : | ||
Ligne 157: | Ligne 157: | ||
Première commande dans le terminal : | Première commande dans le terminal : | ||
- | <code bash> | + | <code user> |
- | ls -l dossier1 | + | ls -l dossier1</code> |
- | total 4 | + | <file config retour de la commande>total 4 |
- | -rw-r--r-- 1 user user 17 oct. 16 18:31 test1.txt</code> | + | -rw-r--r-- 1 user user 17 oct. 16 18:31 test1.txt</file> |
On se sert du caractère « > » pour rediriger la sortie standard (celle qui va normalement sur écran). | On se sert du caractère « > » pour rediriger la sortie standard (celle qui va normalement sur écran). | ||
On indique ensuite le nom du fichier où seront placés les résultats de sortie. | On indique ensuite le nom du fichier où seront placés les résultats de sortie. | ||
- | <code bash> | + | <code user> |
ls -l dossier1 > resultat.txt</code> | ls -l dossier1 > resultat.txt</code> | ||
- | <code bash> | + | <code user> |
- | cat resultat.txt | + | cat resultat.txt</code> |
- | total 4 | + | <code config retour de la commande>total 4 |
-rw-r--r-- 1 user user 17 oct. 16 18:31 test1.txt</code> | -rw-r--r-- 1 user user 17 oct. 16 18:31 test1.txt</code> | ||
Ligne 177: | Ligne 177: | ||
Seconde commande : | Seconde commande : | ||
- | <code bash> | + | <code user> |
ls -l dossier2 > resultat.txt</code> | ls -l dossier2 > resultat.txt</code> | ||
- | <code bash> | + | <code user> |
- | cat resultat.txt | + | cat resultat.txt</code> |
- | total 4 | + | <file config retour de la commande>total 4 |
- | -rw-r--r-- 1 user user 17 oct. 16 18:31 test2.txt</code> | + | -rw-r--r-- 1 user user 17 oct. 16 18:31 test2.txt</file> |
On voit que l'écriture précédente a été remplacée. | On voit que l'écriture précédente a été remplacée. | ||
Continuons avec une troisième commande : | Continuons avec une troisième commande : | ||
- | <code bash> | + | <code user> |
ls -l dossier3 > resultat.txt</code> | ls -l dossier3 > resultat.txt</code> | ||
- | <code bash> | + | <code user> |
cat resultat.txt</code> | cat resultat.txt</code> | ||
Ligne 202: | Ligne 202: | ||
Le résultat est ajouté à la fin du fichier. Exemple : | Le résultat est ajouté à la fin du fichier. Exemple : | ||
- | <code bash> | + | <code user> |
ls -l dossier1 > resultat.txt</code> | ls -l dossier1 > resultat.txt</code> | ||
- | <code bash> | + | <code user> |
ls -l dossier2 >> resultat.txt</code> | ls -l dossier2 >> resultat.txt</code> | ||
- | <code bash> | + | <code user> |
- | cat resultat.txt | + | cat resultat.txt</code> |
- | total 4 | + | <file config retour de la commande>total 4 |
-rw-r--r-- 1 user user 17 oct. 16 18:53 test1.txt | -rw-r--r-- 1 user user 17 oct. 16 18:53 test1.txt | ||
total 4 | total 4 | ||
- | -rw-r--r-- 1 user user 17 oct. 16 18:50 test2.txt</code> | + | -rw-r--r-- 1 user user 17 oct. 16 18:50 test2.txt</file> |
Ligne 225: | Ligne 225: | ||
On peut ainsi rediriger les canaux de sortie 1 et 2 vers un autre fichier. | On peut ainsi rediriger les canaux de sortie 1 et 2 vers un autre fichier. | ||
- | <code bash> | + | <code user> |
- | rmdir dossier3 | + | rmdir dossier3</code> |
- | rmdir: échec de suppression de « dossier3 »: Aucun fichier ou dossier de ce type</code> | + | <file config retour de la commande>rmdir: échec de suppression de « dossier3 »: Aucun fichier ou dossier de ce type</file> |
- | <code bash> | + | <code user> |
rmdir dossier3 2>error.log</code> | rmdir dossier3 2>error.log</code> | ||
- | <code bash> | + | <code user> |
- | cat error.log | + | cat error.log</code> |
- | rmdir: échec de suppression de « dossier3 »: Aucun fichier ou dossier de ce type</code> | + | <file config retour de la commande>rmdir: échec de suppression de « dossier3 »: Aucun fichier ou dossier de ce type</file> |
==== Sorties dirigées ==== | ==== Sorties dirigées ==== | ||
Ligne 244: | Ligne 244: | ||
Faisons une seconde redirection avec une erreur en utilisant le dossier3 inexistant à la fin d'une commande, par exemple : | Faisons une seconde redirection avec une erreur en utilisant le dossier3 inexistant à la fin d'une commande, par exemple : | ||
- | <code bash> | + | <code user> |
ls -l dossier3 > resultat.txt 2> error.log</code> | ls -l dossier3 > resultat.txt 2> error.log</code> | ||
Ligne 252: | Ligne 252: | ||
Résultat dans le fichier **resultat.txt** : | Résultat dans le fichier **resultat.txt** : | ||
- | <code bash> | + | <code user> |
cat resultat.txt</code> | cat resultat.txt</code> | ||
Il est devenu vierge. \\ | Il est devenu vierge. \\ | ||
Et dans le fichier de redirection error.log : | Et dans le fichier de redirection error.log : | ||
- | <code bash> | + | <code user> |
- | cat error.log | + | cat error.log</code> |
- | ls: impossible d'accéder à dossier3: Aucun fichier ou dossier de ce type</code> | + | <file config retour de la commande>ls: impossible d'accéder à dossier3: Aucun fichier ou dossier de ce type</file> |
L'erreur s'est bien redirigée pour s'écrire dans le fichier **error.log**. | L'erreur s'est bien redirigée pour s'écrire dans le fichier **error.log**. | ||
Ligne 272: | Ligne 272: | ||
Réécrivons et vérifions le fichier resultat.txt : | Réécrivons et vérifions le fichier resultat.txt : | ||
- | <code bash> | + | <code user> |
ls -l dossier1 > resultat.txt</code> | ls -l dossier1 > resultat.txt</code> | ||
- | <code bash> | + | <code user> |
- | cat resultat.txt | + | cat resultat.txt</code> |
- | total 4 | + | <file config retour de la commande>total 4 |
- | -rw-r--r-- 1 user user 17 oct. 16 18:53 test1.txt</code> | + | -rw-r--r-- 1 user user 17 oct. 16 18:53 test1.txt</file> |
Utilisons maintenant la double direction en sortie des 2 fichiers : | Utilisons maintenant la double direction en sortie des 2 fichiers : | ||
- | <code bash> | + | <code user> |
ls -l dossier3 >> resultat.txt 2>> error.log</code> | ls -l dossier3 >> resultat.txt 2>> error.log</code> | ||
Vérifions chacun des fichiers : | Vérifions chacun des fichiers : | ||
- | <code bash> | + | <code user> |
- | cat tuto_resultat.txt | + | cat resultat.txt</code> |
- | total 4 | + | <file config retour de la commande>total 4 |
- | -rw-r--r-- 1 user user 17 oct. 16 18:53 test1.txt</code> | + | -rw-r--r-- 1 user user 17 oct. 16 18:53 test1.txt</file> |
- | <code bash> | + | <code user> |
- | cat error.log | + | cat error.log</code> |
- | ls: impossible d'accéder à dossier3: Aucun fichier ou dossier de ce type</code> | + | <file config retour de la commande>ls: impossible d'accéder à dossier3: Aucun fichier ou dossier de ce type</file> |
Les erreurs se sont bien ajoutées dans le fichier **error.log** et le fichier **resultat.txt** n'a pas subi de modification. :-) | Les erreurs se sont bien ajoutées dans le fichier **error.log** et le fichier **resultat.txt** n'a pas subi de modification. :-) | ||
Ligne 299: | Ligne 299: | ||
==== Sorties fusionnées ==== | ==== Sorties fusionnées ==== | ||
- | Il est possible de fusionner les sorties dans un seul et même fichier.Il faut utiliser le code suivant : | + | Il est possible de fusionner les sorties dans un seul et même fichier. Il faut utiliser le code suivant : |
- | 2>&1. | + | 2>&1 |
Cela a pour effet de rediriger toute la sortie d'erreurs dans la sortie standard((Traduction pour l'ordinateur : « envoie les erreurs au même endroit que le reste »)). | Cela a pour effet de rediriger toute la sortie d'erreurs dans la sortie standard((Traduction pour l'ordinateur : « envoie les erreurs au même endroit que le reste »)). | ||
- | <code bash> | + | <code user> |
ls -l dossier4 > resultat.txt 2>&1</code> | ls -l dossier4 > resultat.txt 2>&1</code> | ||
- | <code bash> | + | <code user> |
- | cat resultat.txt | + | cat resultat.txt</code> |
- | ls: impossible d'accéder à dossier4: Aucun fichier ou dossier de ce type</code> | + | <file config retour de la commande>ls: impossible d'accéder à dossier4: Aucun fichier ou dossier de ce type</file> |
- | Impec nous avons l'erreur redirigée en écriture dans notre répertoire resultat.txt | + | Impec, nous avons l'erreur redirigée en écriture dans notre fichier resultat.txt. |
==== Sorties liées ==== | ==== Sorties liées ==== | ||
- | Pour préserver le répertoire de ses précédentes écritures il suffit de doubler la sortie ainsi : | + | Pour conserver les précédentes écritures dans le fichier, il suffit de doubler la sortie ainsi : |
- | <code bash> | + | <code user> |
ls -l dossier5 >> resultat.txt 2>&1</code> | ls -l dossier5 >> resultat.txt 2>&1</code> | ||
- | <code bash> | + | <code user> |
- | cat resultat.txt | + | cat resultat.txt</code> |
- | ls: impossible d'accéder à dossier4: Aucun fichier ou dossier de ce type | + | <file config retour de la commande>ls: impossible d'accéder à dossier4: Aucun fichier ou dossier de ce type |
- | ls: impossible d'accéder à dossier5: Aucun fichier ou dossier de ce type</code> | + | ls: impossible d'accéder à dossier5: Aucun fichier ou dossier de ce type</file> |
===== Entrée - Sortie ===== | ===== Entrée - Sortie ===== | ||
On peut aussi utiliser à la fois les deux types de redirection. | On peut aussi utiliser à la fois les deux types de redirection. | ||
- | <code bash> | + | <code user> |
wc < resultat.txt > comptes.txt</code> | wc < resultat.txt > comptes.txt</code> | ||
- | <code bash> | + | <code user> |
cat comptes.txt | cat comptes.txt | ||
2 24 170</code> | 2 24 170</code> |