+ Module Linux
Enseignante
S. BEN YAALA
Redirections, Tubes et filtres
+ Plan 2
Redirections
Tubes de communications
Filtres
+ Commande Linux 3
Une commande :
Entrée : arguments en entrée standard.
Sortie : une réponse en sotie standard
+
une réponse en sortie erreur standard.
+ Commande Linux 4
Les redirections sont le détournement des 3 descripteurs de
fichiers standards :
l'entrée standard (notée 0) : le clavier ;
la sortie standard (notée 1) : la console courante ;
la sortie des erreurs (notée 2) : la console courante
+ Redirections des entrées-sorties 5
Principe
• Il s’agit de renvoyer le résultat d’une commande vers une
sortie différente de la sortie normale .
• Valide pour une entrée ou une sortie
+ Redirection des entrées-sorties 6
Principe :
Redirection vers un fichier Redirection vers des fichiers
+ Flux de redirection 7
> et >> : renvoient le résultat vers un fichier.
> : rediriger dans un nouveau fichier
#ls > file1
Le contenu de fichier sera supprimé automatiquement si le fichier existe déjà.
>> : rediriger à la fin d’un fichier
#ls >> file1
Si le fichier n’existe pas, il sera créé. Sinon, les données seront ajoutées à la fin.
+ Flux de redirection 8
< et << : lire depuis un fichier ou le clavier
< : permet d’indiquer d’où vient l’entrée qu’on envoie à la commande.
Exemple : Le fichier est lu par la commande cat
#cat < fichier1
<< : lire depuis le clavier progressivement
Exemple : la commande cat lit du clavier jusqu’à ce qu’elle rencontre la chaine
END et redirige le résultat dans le fichier fin
#cat > fin <<END
>je suis dans le fichier fin, l'édition est stoppée lors de la rencontre du mot clé
END
#cat fin
je suis dans le fichier fin, l'édition est stoppée lors de la rencontre du mot clé END
+ Flux de redirection 9
Redirection des erreurs : (2>, 2>> et 2>&1)
Pour chaque commande exécutée, il existe deux possibilités :
Cas 1 : Tout va bien :
Le résultat de la commande sera affiché sur la sortie standard
Cas 2 : Une erreur se produit
Le résultat de la commande s’affiche dans la sortie d’erreurs.
Syntaxe
2> : Rediriger les erreurs dans un fichier à part
2>> : pour ajouter les erreurs à la fin du fichier.
+ Tubes de communication 10
Le symbole |, qui s’appelle ”tube” ou ”pipe”, permet de relier deux
commandes entre elles.
Il s’agit d’utiliser le premier paramètre à gauche comme entrée de
deuxième paramètre
commande1 | commande2 | commande3
Redirections = assure la communication entre (fichier, processus ).
Tube = assure la communication entre deux processus.
Exemple : P1 | P2 | P3.
+ Filtres 11
Ce sont des programmes traitant des données qui proviennent
de l’entrée standard.
Très utiles en les combinant avec des filtres.
+ les commandes filtres courantes 12
La commande sort
Tri sur des lignes de texte :
Options
- n: ordre numérique
- s : lexicographique (par défaut)
- d : selon le dictionnaire
- k : Tri d’un champ particulier
- r : Tri en ordre inverse
Req: Les champs sont délimités par défaut par le caractère de tabulation
mais il est possible de spécifier un autre caractère avec l’option ”-t”.
Exemples
+ La commande grep 13
La commande grep permet la recherche dans des fichiers d’une expression
particulière.
Les options basiques sont:
-n : numéro de ligne.
-i : ignorer majuscules et minuscules
-v : rechercher tout sauf la chaine de caractères dans un fichier.
Exemples
- Rechercher la chaine de caractères dans une arborescence /etc/
grep –r « chaine » /etc/
- Afficher la ligne contenant home sans tenir compte des majuscules et minuscules :
grep -i « home » < /etc/passwd
- Afficher les lignes ne contenant pas home :
grep –v « home » < /etc/passwd
+ La commande grep 14
Recherche avec des expressions
Caractère spécial Signification
. Caractère quelconque
^ Début de ligne
$ Fin de ligne
[] Un des caractères entre les crochets
L'élément précédent est optionnel (peut être
?
présent 0 ou 1 fois)
L'élément précédent peut être présent 0, 1 ou
*
plusieurs fois
L'élément précédent doit être présent 1 ou
+
plusieurs fois
| Ou
() Groupement d'expressions
+ La commande grep 15
• Rechercher une chaîne de caractères ‘chaine’ en début de ligne dans un fichier
#grep -E ^chaine fichier1
• Rechercher une chaîne de caractères ‘chaine’ en fin de ligne dans un fichier
#grep -E chaine $ fichier1
• Rechercher une chaîne de caractères ‘chaine’ ou ‘Chaine’ dans un fichier
#grep -E [Cc]haine fichier1
+ La commande wc 16
Cette commande permet de compter le nombre de lignes, de
mots et de caractères dans un fichier.
Options :
-l : nombre de lignes,
-w : nombre de mots
-c : nombre de caractères.
Exemples
+ La commande cut 17
Options :
- c : extraire des colonnes
- f : extraire des champs
- d : spécifier délimiteur
Exemples
+ La commande head 18
Identifie le début d’un fichier (ou de l’entrée standard).
Options :
- n : nombre de lignes
- c : nombre de caractères.
Exemples
+ La commande tail 19
Identifie la fin d’un fichier ou de l’entrée standard.
Options :
- c : nbre. de caractères
- n : nbre. de lignes
- b : nbre. de blocs (exemple 512 octets)
Exemples
+ La commande tr 20
Fonction : substituer ou supprimer des arguments
Arguments : - Deux chaines de caractères
- La 1ère chaine représente les caractères
recherchés
- La 2ème représente le remplacement
Options :
-c : inverse la recherche
-s : Traitement d’une seule occurrence
-d : suppression
+ Sed 21
sed est éditeur ligne non interactif, il lit les lignes d’un fichier une
à une (ou provenant de l’entrée standard) leur applique un
certain nombre de commandes d’édition et renvoie les lignes
résultantes sur la sortie standard.
Syntaxe : sed [-n] [-e commande] [-f fichier de commandes] [fichier]
-n : écrit seulement les lignes spécifiées (par l'option /p) sur la sortie
standard
-e : permet de spécifier les commandes à appliquer sur le fichier. Cette
option est utile lorsque vous appliquez plusieurs commandes. Afin
d’éviter que le shell interprète certains caractères, il faut mieux encadrer
la commande avec des ' ou des " .
-f : les commandes sont lu à partir d'un fichier.
+ Sed : fonction de substitution : s 22
s permet de changer la 1ère ou toutes les
occurrences d’une chaîne par une autre.
Syntaxe :
- sed "s/toto/TOTO/g" fichier : va changer
toutes les occurrences de la chaîne toto par
TOTO
+ Sed : La fonction de suppression : d 23
La fonction de suppression d supprime les lignes comprises dans
un intervalle donné.
Syntaxe : sed "20,30d" fichier1
Cette commande va supprimer les lignes 20 à 30 du fichier ‘fichier1’.
On peut utiliser les expressions régulières :
- sed "/toto/d" fichier1 : supprime les lignes contenant la chaîne toto
- sed "/toto/!d" fichier : supprime toutes les lignes ne contenant pas la
chaîne toto
En fait les lignes du fichier d’entrée ne sont pas supprimées, elles le
sont au niveau de la sortie standard.
+ Uniq 24
Prend en paramètre un fichier trié.
Elle identifie uniquement identiques qui sont successives.
uniq doubl.txt
Options :
- d : afficher les lignes en double
- c : nombre d’occurences
+ Find 25
La commande find permet de retrouver des fichiers à partir de certains critères.
Syntaxe : find repertoire-de-recherche critère-de-recherche
Options:
-name : nom du fichier , -perm : droits d’accès
-link : nombre de liens , -user : propriétaire
-group : recherche suivant le groupe , -type : recherche suivant le type
-size : recherche suivant la taille , -atime : date de dernier accès en
lecture
-mtime : date de dernière modification du fichier
-ctime : recherche sur la date de création du fichier
+ Find 26
Utilisation de la commande find
La commande find permet de chercher des fichiers, et éventuellement d‘exécuter
une action dessus :
• Rechercher un fichier nommé fichier1 dans le répertoire
/home/ludo #find /home/ludo –name fichier1 –print
+ Find 27
• Rechercher tous les fichiers appartenant a l’utilisateur tekup et les
deplacer dans son répertoire home
# find / -user tekup 2>/dev/null
# find / -user tekup -exec mv {} /home/tekup/ \; 2>/dev/null
• Rechercher tous les fichiers commençant par fichier ET appartenant a
l’utilisateur tekup et les copier dans le répertoire /root
#find / -name "fichier*" -a -user tekup -exec cp {} /root/* \; 2>/dev/null
+ Find 28
Option Signification Pour les options -size, -atime, -mtime, -
ctime et -links, Il faut spécifier une valeur,
Recherche par nom de fichier.
-name précédée par le signe ``+'' pour
-type Recherche par type de fichier.
``supérieur à'', ``-'' pour ``inférieur à'', ou rien
Recherche par propriétaire.
-user pour ``égal à''. Par exemple :
-group Recherche par appartenance à ungroupe.
find . -mtime -3 -print
-size Recherche par taille de fichier.
-atime Recherche par date de dernier accès. Cette commande affiche les fichiers dont
Recherche par date de dernière modification.
les dernières modifications remontent à
-mtime
moins de 3 jours (donc tous les fichiers
-ctime Recherche par date de création. modifiés entre aujourd'hui et il y a trois jours
-perm
Recherche par autorisations d'accès. seront affichés).
Recherche par nombre de liens au fichier.
-links De même, +5 afficherait les fichiers
dont les dernières modifications
remontent à plus de 5 jours.
+ Locate 29
la commande locate cherche les fichiers dans
une base de données.
Syntaxe : locate fichier
Il faut mettre à jour la base de locate :
Syntaxe : updatedb
+ 30
Merci