6.2. Manipulation Des Fichiers Et Répertoires

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 17

 Outils pour consulter le contenu d’un fichier

Ces commandes suivantes permettent de consulter le contenu d’un fichier à l’écran :

 page par page : pg, more, less


 en bloc : cat
 à l’envers : tac

 L’éditeur de texte vi
L'éditeur Unix par défaut se nomme vi (visual editor ; vim ou vim.tiny). S'il n'est pas des plus
ergonomiques par rapport à des éditeurs en mode graphique, il a l'avantage d'être
disponible et d'utiliser la même syntaxe de base sur tous les Unix. Chaque Unix propose
généralement une syntaxe étendue au-delà de la syntaxe de base. Pour en connaître les
détails : man vi.

vi [options] Fichier [Fichier2 ...]

Trois modes de fonctionnement :

- mode commande: les saisies représentent des commandes. On y accède en appuyant


sur « Echap ».
- mode saisie : saisie de texte classique
- mode ligne de commande: utilisation de commandes spéciales saisies et se terminant
par Entrée. Accès pas la touche « : ».

 Commandes de saisie

 Quitter

Introduction à l’Administration des systèmes LINUX/UNIX – M. DIOKH 1


 Déplacement en mode commande

 Copier-Coller

On utilise la commande « y » (Yank) pour copier du texte, elle-même devant être combinée
avec d'autres indications. Pour couper (déplacer), c'est la commande « d ». Pour coller le
texte à l'endroit choisi, c'est la commande « p » (derrière le caractère) ou « P » (devant le
caractère). Si c'est une ligne complète qui a été copiée, elle sera placée en-dessous de la
ligne active.

Pour copier une ligne : yy

Pour copier cinq lignes : 5yy

Pour placer les lignes copiées à un endroit donné : p

 Commande set

La commande set permet de configurer l'éditeur.

set number (ou nu) / nonumber (ou nonu) : affiche / supprime les numéros de lignes.

Introduction à l’Administration des systèmes LINUX/UNIX – M. DIOKH 2


 Redirection

Linux fonctionne avec trois types de flux de données :

- l’entrée standard identifiée par le descripteur 0, par exemple le clavier ;


- la sortie standard identifiée par le descripteur 1, par exemple l’écran ou
l’interpréteur de commande ;
- la sortie d’erreur standard identifiée par le descripteur 2, par exemple l’écran

 Sortie standard

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.

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.

Introduction à l’Administration des systèmes LINUX/UNIX – M. DIOKH 3


Pour rajouter des données à la suite du fichier, donc sans l'écraser, on utilise la double
redirection « >> ». Le résultat est ajouté à la fin du fichier.

 Sortie d’erreur

Enfin, pour rediriger la sortie d’erreur vers un fichier, on utilise le descripteur 2 de la sortie
standard « 2> » ou « 2>> » pour rajouter à la fin du fichier.

 Redirection des deux canaux de sortie dans un seul et même fichier

On peut aussi rediriger les deux canaux de sortie dans un seul et même fichier, en les liant.
On utilise pour cela le caractère « >& ». Il est aussi important de savoir dans quel sens le
shell interprète les redirections.
Pour regrouper les deux canaux de sortie et d'erreur dans un même fichier, il faut procéder
comme suit :

Introduction à l’Administration des systèmes LINUX/UNIX – M. DIOKH 4


La sortie 2 est redirigée vers la sortie 1, donc les messages d'erreurs passeront par la sortie
standard. Puis le résultat de la sortie standard de la commande ls est redirigé vers le fichier
resultat.txt. Ce fichier contiendra donc à la fois la sortie standard et la sortie d'erreur.

 Entrée standard

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 « < ». 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.

On peut aussi utiliser à la fois les deux types de redirection :

Introduction à l’Administration des systèmes LINUX/UNIX – M. DIOKH 5


 Les filtres

Les filtres sont des commandes qui, à partir d'un flux d'entrées donné, effectuent des
traitements avant d'afficher un résultat en sortie. On les nomme également commandes de
traitement de flux.

Voici une liste des filtres les plus courants :

 cat : pour concaténer le contenu d’un fichier et l’afficher ensuite sur la sortie
standard, qui est par défaut l’écran.
La commande cat sans argument (nom de fichier) attend les suites de caractères
tapés sur l’entrée standard (le clavier)

 cut : pour n’afficher que certaines colonnes (champs) d’un fichier donné.
Cette commande utilise alors comme option le séparateur de champs et le numéro
du champ à afficher pour chaque ligne. S’il n'est pas spécifié, le séparateur de
champs par défaut est le caractère de tabulation.

La commande ci-dessous permet d’afficher les noms d’utilisateurs du système. On


utilise comme séparateur de colonnes le caractère « : » et on sélectionne la première
colonne du fichier /etc/password. cut -d : -f1 /etc/passwd

 grep : pour afficher les lignes contenant une occurrence de caractères donnée ;
Syntaxe: grep CHAINE chemin ; CHAINE peut être une expression régulière.

Pour afficher toutes les lignes contenant la chaîne de caractères « false » :

grep false /etc/passwd

Pour afficher toutes les lignes qui commencent par la chaîne « root » :

grep ^root /etc/passwd

 head : pour afficher les premières lignes d'un fichier,


Syntaxe : head -N chemin ; Sans option, head affiche les 10 premières lignes d'un
fichier.
Pour afficher les quatre premières lignes du fichier /etc/passwd :
head -4 /etc/passwd

Introduction à l’Administration des systèmes LINUX/UNIX – M. DIOKH 6


 tail : pour afficher les dernières lignes d'un fichier,
Syntaxe : tail -N chemin ; Sans option, tail affiche les 10 dernières lignes d'un fichier.
Pour afficher les 4 dernières lignes du fichier /etc/passwd :
tail -4 /etc/passwd

 sed : utilitaire de traitement de données très puissant, capable d'utiliser les


expressions régulières.
Pour substituer toute « chaîne1 » dans le fichier « chemin1 » avec « chaine2 » et
envoyer le résultat dans le fichier « chemin2 » :
sed 's/chaine1/chaine2/g' chemin1 > chemin2

 sort : trie le contenu d'un fichier par ligne

 split : pour découper un fichier en plusieurs. On peut spécifier une taille de fichiers en
option. Par exemple, la commande pour créer les fichiers petitfichieraa,
petitfichierab… d’une taille maximum de 1,4 Mo (taille d’une disquette) est :
split -b 1.4m /home/maitre/grosfichier petitfichier

 uniq : affiche les lignes sans doublons

Introduction à l’Administration des systèmes LINUX/UNIX – M. DIOKH 7


 Les tubes

Le mécanisme de tube (pipe) permet de faire en sorte que la sortie d’une commande
devienne l’entrée d’une autre. Les tubes utilisent le caractère « | » ;

Syntaxe : commande | commande.

Exemple : sort /etc/passwd | head -6

Cette commande affiche les 6 premières lignes du fichier /etc/passwd une fois ce fichier trié
par ordre alphabétique croissant.

Tubes et redirections peuvent êtres enchaînés indéfiniment sur une ligne de commande
selon les résultats que l’on veut obtenir.

Introduction à l’Administration des systèmes LINUX/UNIX – M. DIOKH 8


 Rechercher des fichiers
La commande find permet de rechercher des fichiers au sein de l’arborescence du système
de fichiers à l’aide de critères et donne la possibilité d’agir sur les résultats retournés.

Syntaxe : find chemin critères options

Le résultat affiché est relatif si le chemin précisé est relatif. Il est absolu si le chemin précisé
est absolu.

La commande find étant récursive, il suffit d’indiquer un répertoire de base pour que toute
l’arborescence depuis ce répertoire soit parcourue.

 Critères de recherche

Les paramètres permettent de définir les critères de recherche. Ces critères, s’ils sont
plusieurs, sont combinés entre eux par un ET (critère1 ET critère2).

-name : permet une sélection par noms de fichiers. Il est possible d’utiliser les wildcards déjà
vus. Le critère est idéalement placé entre guillemets.

Pour afficher la liste de tous les fichiers du dossier /usr/include commençant par « ldap » :

Introduction à l’Administration des systèmes LINUX/UNIX – M. DIOKH 9


-type : permet une sélection par type de fichier.

· b Fichier spécial en mode bloc


· c Fichier spécial en mode caractère
· d Répertoire (directory)
· f Fichier ordinaire
· l Lien symbolique
· p Tube nommé (pipe)
· s Socket (Connexion réseau)

Tous les répertoires du dossier /usr/include dont le nom commence par « f » :

-user et -group

-user et -group permettent une recherche sur le propriétaire et le groupe d’appartenance


des fichiers. Il est possible de préciser le nom (utilisateur, groupe) ou l’ID (UID, GID).

Recherche dans le répertoire /home tous les fichiers ordinaires appartenant à l’utilisateur
diokh

-size : permet de préciser la taille des fichiers recherchés. Sa syntaxe est particulière car elle
travaille par défaut en blocs si vous ne précisez rien.

La valeur située après le critère peut être suivie des caractères k (kilo), m (méga),etc.

La valeur peut être précédée d’un + ou d’un - signifiant respectivement "plus de" ou "moins
de". Sans cette indication, la taille recherchée doit correspondre EXACTEMENT.

Introduction à l’Administration des systèmes LINUX/UNIX – M. DIOKH 10


Exemple :

 -size 5 : recherche les fichiers d’une taille de 5 blocs (512 octets par bloc, soit ici 2560
octets).
 -size 10k : recherche les fichiers d’une taille de 10 Ko (10*1024 octets = 10240
octets).
 -size +5000k : les fichiers de plus de 5000 Ko.
 -size -100k : les fichiers de moins de 100 Ko.

Le critère de recherche -empty peut être utilisé en remplacement de -size 0.

-atime : recherche sur la date du dernier accès (access time). Un accès peut être la lecture
du fichier, mais aussi le simple fait de le lister spécifiquement.

-mtime : recherche sur la date de dernière modification (modification time). C’est de la


modification du contenu qu’il s’agit.

-ctime : recherche sur la date de changement (change time, en fait la date de dernière
modification du numéro d’inode).

Ces trois critères ne travaillent qu’avec des jours (périodes de 24 heures). 0 est le jour
même, 1 hier, 2 avant-hier, etc. La valeur n située après le critère correspond donc à n*24
heures. Cette plage n’est pas fixe car « hier » signifie il y a entre 24 et 48 heures...

Les signes + ou - permettent de préciser les termes « de plus » et « de moins » :

 -mtime 1 : fichiers modifiés hier (entre 24 et 48 heures).


 -mtime -3 : fichiers modifiés il y a moins de trois jours (72 heures).
 -atime +4 : fichiers modifiés il y a plus de 4 jours (plus de 96 heures).

-perm :permet d’effectuer des recherches sur les autorisations d’accès (droits, SUID, SGID,
Sticky). Les droits doivent être précisés en base 8 (valeur octale) et complets.

Le caractère - placé devant la valeur octale signifie que les fichiers recherchés doivent au
moins avoir les droits désirés.

Le + indique que le fichier doit avoir au moins l’un des droits spécifiés.

Introduction à l’Administration des systèmes LINUX/UNIX – M. DIOKH 11


 Commandes

Outre l’option -print on trouve d’autres options permettant d’effectuer une action sur les
fichiers trouvés.

-ls

Le critère affiche des informations détaillées sur les fichiers trouvés correspondant au critère
au lieu du simple nom de fichier. La sortie correspond à une commande ls avec les
paramètres d, i, l et s (taille en blocs de 1 Ko).

-exec

Le critère -exec va exécuter la commande située juste après pour chaque occurrence
trouvée. Quelques remarques s’imposent :

· -exec doit obligatoirement être la dernière option de la commande find.


· La commande exécutée par -exec doit se terminer par un espace « ». Ce caractère
spécial doit s’écrire \ pour ne pas être interprété par le shell.
· Pour passer comme paramètre pour la commande le fichier trouvé par find, il faut
écrire {} (substitution du fichier).

Exemple pour effacer tous les fichiers se terminant par « .bak » :

La commande find n’attend pas d’avoir trouvé tous les fichiers avant d’exécuter la
commande précisée. Elle la lance dès qu’un fichier est trouvé. Aussi si la commande
précédente vous a affiché n fichiers avant que vous ne pensiez à l’interrompre, alors ces n
fichiers sont déjà perdus.

Introduction à l’Administration des systèmes LINUX/UNIX – M. DIOKH 12


-ok

Le critère -ok est identique à l’option -exec mais, pour chaque occurrence, une confirmation
est demandée à l’utilisateur.

 Critères AND / OR / NOT

Il est possible de combiner les options de critère de sélection. Sans aucune précision c’est le
ET logique qui est implicite.

-a, -and : AND, ET logique, par défaut

-o, -or : OR, OU logique

! : Négation du critère

Introduction à l’Administration des systèmes LINUX/UNIX – M. DIOKH 13


 Retrouver des exécutables

 whereis

La commande whereis recherche dans les chemins de fichiers binaires, du manuel et des
sources les fichiers correspondant aux critères fournis.

Vous pouvez préciser quelques paramètres :

 -b uniquement pour les binaires,


 -m uniquement pour les manuels,
 -s uniquement pour les sources.

Les fichiers sont recherchés par défaut dans :

/{bin,sbin,etc} /usr/{lib,bin,old,new,local,games,include,etc,src,man,sbin,X386,TeX, g++-


include} /usr/local/{X386,TeX,X11,include,lib,man,etc,bin,games,emacs}

 which

La commande which recherche une commande dans le PATH (chemin des exécutables) et
vous fournit la première qu’elle trouve :

L’option -a permet de continuer la recherche et d’afficher tout le résultat.

Introduction à l’Administration des systèmes LINUX/UNIX – M. DIOKH 14


 Localisation de fichiers
La commande locate cherche tous les types de fichiers dans l'intégralité des systèmes de
fichiers comme find, mais elle utilise une base de données. La base de données est
automatiquement mise à jour par une commande de type cron, généralement la nuit,
lorsque la machine est peu sollicitée.

On peut mettre à jour manuellement la base de données en utilisant la commande updatedb


(on doit être root pour lancer cette commande).

Les options de fonctionnement de la commande updatedb sont décrites dans le fichier


/etc/updatedb.conf. On peut y décrire la racine de l’arborescence à indexer, les fichiers à
exclure, l’emplacement de la base de données, etc.

Introduction à l’Administration des systèmes LINUX/UNIX – M. DIOKH 15


 Tests de Connaissances

1. Il est courant de trouver des fichiers core quand les programmes plantent. Comment
tous les supprimer ?

2. Vous voulez lister tous vos fichiers avi (divx ?) de plus de 650 Mo et auxquels vous
n’avez pas accédé depuis environ 6 mois, depuis le dossier /public/videos. Comment
procéder ?

3. Vous recherchez toutes les instances d’un programme appelé « startappli » au sein
du path. Quelle commande utilisez-vous ?

A - whereis -b startappli

B - which startappli

C - which -a startappli

D - locate startappli

4. Vous avez perdu un document qui commence par lettre, quelque part dans le
système de fichier. Comment vérifier que locate retournera des informations à jour
et comment obtenir la liste des fichiers qui pourraient convenir ?

5. Comment rentrer en mode saisie pour insérer du texte à l’endroit actuel, quel que
soit le mode précédent ?

A - [Echap] i

B - [Echap] a

C - [Echap] : i

D-:i

6. Comment sauver son document actuel, en cours d’édition, sous le nom « newfic » ?

Introduction à l’Administration des systèmes LINUX/UNIX – M. DIOKH 16


7. Quels sont les trois moyens de quitter vi en sauvant son fichier ?

A - ZZ
B - :q
C - :wq
D- : x

8. Comment rechercher toutes les lignes qui commencent par bonjour ou Bonjour ?

9. Vous voulez numéroter les lignes. Comment faire ?

10. Comment se rendre à la ligne 112, copier 8 lignes et les placer après la ligne 180 ?

11. Affichez uniquement la liste des logins et UID associés (champ 3) de /etc/passwd.

12. Triez le fichier /etc/group par ordre de GID (3ème colonne) décroissant

 Travaux Pratiques :

Exercice 1 :
Sans utiliser un éditeur de texte, créez un fichier informations.txt contenant la date, le
calendrier du mois en cours, les informations de l’utilisateur connecté et enfin le chemin de
votre répertoire de travail.

Exercice 2
1. Affichez la liste des fichiers du répertoire /usr/bin/ en contrôlant le défilement écran
par écran

2. Comptez le nombre de fichiers de ce répertoire.

3. Affichez les noms des 8 derniers fichiers de /usr/bin/

4. Affichez les noms des 8 premiers fichiers de /usr/bin/

5. Affichez les noms des fichiers de /usr/bin/ classés par ordre alphabétique inverse

Introduction à l’Administration des systèmes LINUX/UNIX – M. DIOKH 17

Vous aimerez peut-être aussi