Chevron >
On peut se placer
tout d'abord dans le dossier désiré, puis on tape la commande suivante :
> nomdufichier
Ou, de façon plus générale
on tape :
> /chemin/du/repertoire/nomdufichierC'est-à-dire que l'on crée le “nomdufichier” depuis son répertoire personnel, sans s'être déplacé au niveau du répertoire dans lequel on veut placer “nomdufichier”.
Si le fichier existe :
son contenu est effacé.
Si le fichier n'existe pas :
il est créé vide.
Complément
Pour créer un fichier, les commandes
La touch sert avant tout à mettre à jour la date et l'heure d’accès pour la dernière modification d'un ou plusieurs fichiers selon la date actuelle.
Dans le cas d'un seul fichier, s'il n'existe pas, il sera alors créé.
La subtilité de la commande
Avec la commande
Libre à chacun de choisir la commande qu'il désire (ou de ne pas utiliser de commande et passer par les applications graphiques, ce que feront beaucoup de débutants).
>
et commande touch sont équivalentes.
La touch sert avant tout à mettre à jour la date et l'heure d’accès pour la dernière modification d'un ou plusieurs fichiers selon la date actuelle.
Dans le cas d'un seul fichier, s'il n'existe pas, il sera alors créé.
La subtilité de la commande
>
c'est qu'elle permet de vider rapidement un fichier.
Avec la commande
touch
tu feras :
rm fichier | touch /fichierAvec la commande
>
, tu feras simplement :
> /fichierCe sont bien sûr des détails, mais cela nous donne une façon différente de procéder.
Libre à chacun de choisir la commande qu'il désire (ou de ne pas utiliser de commande et passer par les applications graphiques, ce que feront beaucoup de débutants).
Corollaire rigolo
Prenons un fichier d'environs 100Mo.
dd if=/dev/zero of=fichier bs=1 count=1 seek=100M
1+0 enregistrements lus 1+0 enregistrements écrits 1 octet (1 B) copié, 4,4267e-05 s, 22,6 kB/s
ls -lhi
>total 4,0K 1163 -rw-r--r-- 1 user user 101M oct. 16 20:34 fichier
> fichier
ls -lhi
total 0 1163 -rw-r--r-- 1 fgivors fgivors 0 oct. 16 20:33 fichier
Autrement dit : il n'y a pas création ni suppression de fichier.
Redirection
Les redirections sont l'une des plus importantes possibilités offerte par le shell.
Par redirection, on entend la possibilité de rediriger l'affichage de l'écran vers un fichier, une imprimante ou tout autre périphérique, les messages d'erreurs vers un autre fichier, remplacer la saisie clavier par le contenu d'un fichier.
Unix utilise des canaux d'entrées/sorties pour lire et écrire ses données.
Par défaut le canal d'entrée est le clavier, et le canal de sortie, l'écran.
Un troisième canal, le canal d'erreur, est aussi redirigé vers l'écran.
Il est donc possible de rediriger ces canaux vers des fichiers, ou du flux texte de manière transparente pour les commandes Unix.
Par redirection, on entend la possibilité de rediriger l'affichage de l'écran vers un fichier, une imprimante ou tout autre périphérique, les messages d'erreurs vers un autre fichier, remplacer la saisie clavier par le contenu d'un fichier.
Unix utilise des canaux d'entrées/sorties pour lire et écrire ses données.
Par défaut le canal d'entrée est le clavier, et le canal de sortie, l'écran.
Un troisième canal, le canal d'erreur, est aussi redirigé vers l'écran.
Il est donc possible de rediriger ces canaux vers des fichiers, ou du flux texte de manière transparente pour les commandes Unix.
Il est aussi important de savoir dans quel sens le shell interprète les redirections.
Les redirections étant en principe en fin de commande, le shell recherche d'abord les caractères « <, >, » » en fin de ligne.
Les redirections étant en principe en fin de commande, le shell recherche d'abord les caractères « <, >, » » en fin de ligne.
Préparation
Créer les éléments nécessaires pour réaliser les exemples de ce tuto :
mkdir dossier1 dossier2
vim dossier1/test1.txtÉcrivez :
fichier de test1
vim dossier2/test2.txtÉcrivez :
fichier de test2
Entrée
Les commandes qui attendent des données ou des paramètres depuis le clavier peuvent aussi en recevoir depuis un fichier, à l'aide du caractère inverse :
Utilisation avec “ < ” :
<Un exemple avec la commande wc (word count) qui permet de compter le nombre de lignes, de mots et de caractères d'un fichier.
wc dossier1/test1.txt
1 3 17 dossier1/test1.txt
- “1” : est le nombre de lignes.
- “3” : est le nombre de mots.
- “17” : est le nombre d'octets.
options intéressantes :
- -l : compte le nombre le lignes uniquement ;
- -w : compte le nombre de mots uniquement ;
- -c : compte le nombre d'octets uniquement ;
- -m : compte le nombre de caractères uniquement.
< ~/dossier1/test1.txt wc # retour : 1 3 17ou
wc < ~/dossier1/test1.txt # retour : 1 3 17
Sortie
Sortie simple
Première commande dans le terminal :
Seconde commande :
Continuons avec une troisième commande :
ls -l dossier1
total 4 -rw-r--r-- 1 user user 17 oct. 16 18:31 test1.txt
ls -l dossier1 > resultat.txt
cat resultat.txt
total 4 -rw-r--r-- 1 user user 17 oct. 16 18:31 test1.txt
- Si le fichier n'existe pas, il sera créé.
- S'il existe, son contenu sera écrasé, même si la commande tapée est incorrecte.
Le shell commence d’abord par créer le fichier puis exécute ensuite la commande.
Seconde commande :
ls -l dossier2 > resultat.txt
cat resultat.txt
total 4 -rw-r--r-- 1 user user 17 oct. 16 18:31 test2.txt
Continuons avec une troisième commande :
ls -l dossier3 > resultat.txt
cat resultat.txt
Le contenu du répertoire a été remplacé par rien, puisque la commande ne donnait aucune écriture à transcrire, il n'y avait pas de dossier3 !
Sorties ajoutées
Pour ne rien effacer et/ou ajouter des données à la suite du fichier resultat.txt on utilise la double redirection :
>>Le résultat est ajouté à la fin du fichier. Exemple :
ls -l dossier1 > resultat.txt
ls -l dossier2 >> resultat.txt
cat resultat.txt
total 4 -rw-r--r-- 1 user user 17 oct. 16 18:53 test1.txt total 4 -rw-r--r-- 1 user user 17 oct. 16 18:50 test2.txt
Les canaux standards
On peut considérer un canal comme un fichier, qui possède son propre descripteur par défaut, et dans lequel on peut ou lire ou écrire.
- Le canal d' entrée standard se nomme « stdin » et porte le descripteur 0.
- Le canal de sortie standard se nomme « stdout » et porte le descripteur 1.
- La canal d' erreur standard se nomme « stderr » et porte le descripteur 2.
rmdir dossier3
rmdir: échec de suppression de « dossier3 »: Aucun fichier ou dossier de ce type
rmdir dossier3 2>error.log
cat error.log
rmdir: échec de suppression de « dossier3 »: Aucun fichier ou dossier de ce type
Sorties dirigées
On pourrait souhaiter enregistrer les erreurs dans un fichier à part pour ne pas les oublier et pour pouvoir les analyser ensuite. Pour cela, on utilise l'opérateur :
2>
Sorties doubles
Faisons une seconde redirection avec une erreur en utilisant le dossier3 inexistant à la fin d'une commande, par exemple :
Et dans le fichier de redirection error.log :
ls -l dossier3 > resultat.txt 2> error.logIl y a deux redirections ici :
- > resultat.txt : redirige le résultat de la commande (sauf les erreurs) dans le fichier resultat.txt. C'est la sortie standard ;
- 2> error.log : redirige les erreurs éventuelles dans le fichier error.log. C'est la sortie d'erreurs.
cat resultat.txt
Il est devenu vierge. Et dans le fichier de redirection error.log :
cat error.log
ls: impossible d'accéder à dossier3: Aucun fichier ou dossier de ce type
Sorties doubles sauvegardées
Pour ajouter une éventuelle redirection dans le fichier error.log en conservant l'intégrité des écritures dans nos 2 fichiers de redirection :
Réécrivons et vérifions le fichier resultat.txt :
resultat.txt error.logNous devons utiliser la double redirection en sortie pour chacun d'eux.
Réécrivons et vérifions le fichier resultat.txt :
ls -l dossier1 > resultat.txt
cat resultat.txt
total 4 -rw-r--r-- 1 user user 17 oct. 16 18:53 test1.txt
ls -l dossier3 >> resultat.txt 2>> error.logVérifions chacun des fichiers :
cat resultat.txt
total 4 -rw-r--r-- 1 user user 17 oct. 16 18:53 test1.txt
cat error.log
ls: impossible d'accéder à dossier3: Aucun fichier ou dossier de ce type
Sorties fusionnées
Il est possible de fusionner les sorties dans un seul et même fichier.Il faut utiliser le code suivant :
2>&1.Cela a pour effet de rediriger toute la sortie d'erreurs dans la sortie standard.
ls -l dossier4 > resultat.txt 2>&1
cat resultat.txt
ls: impossible d'accéder à dossier4: Aucun fichier ou dossier de ce type
Sorties liées
Pour préserver le répertoire de ses précédentes écritures il suffit de doubler la sortie ainsi :
ls -l dossier5 >> resultat.txt 2>&1
cat resultat.txt
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
Entrée - Sortie
On peut aussi utiliser à la fois les deux types de redirection.
wc < resultat.txt > comptes.txt
cat comptes.txt 2 24 170On peut aussi se reporter à la commande « tee ».
0 commentaires:
Enregistrer un commentaire