Certification Linux LPI/Administrateur système débutant/Examen 101/GNU et commandes Unix/Gestion de base des fichiers

Début de la boite de navigation du chapitre
Gestion de base des fichiers
Icône de la faculté
Chapitre no 4
Leçon : Certification Linux LPI
Chap. préc. :Gérer des flux de textes en utilisant les filtres
Chap. suiv. :Utiliser les streams, pipes, et redirections
fin de la boite de navigation du chapitre
En raison de limitations techniques, la typographie souhaitable du titre, « GNU et commandes Unix : Gestion de base des fichiers
Certification Linux LPI/Administrateur système débutant/Examen 101/GNU et commandes Unix/Gestion de base des fichiers
 », n'a pu être restituée correctement ci-dessus.

Objectifs modifier

Description : les candidats doivent être en mesure d’utiliser les commandes de base UNIX pour copier, déplacer, et retirer des fichiers et des répertoires. Ces taches regroupent les opérations avancées de gestion de fichier tel que la copie récursive de fichiers multiples, retirer des répertoires récursivement, et déplacer des fichiers qui rencontrent un "pattern wildcard". Cela inclus d’utiliser les spécifications simples et avancés de "wildcard" pour se référer aux fichiers, aussi bien que d’utiliser find pour localiser et agir sur les fichiers en se basant sur le type, la taille, et le temps.

Toutes les commandes Unix sont en minuscule.

Commandes clés pour manipuler les fichiers modifier

cp
find
mkdir
mv
ls
rm
rmdir
touch

Créer et supprimer des répertoires modifier

Pour créer un répertoire, utiliser mkdir.

 mkdir [options] dir

Options courantes :

-m mode : définit le mode des permissions. Pas défaut umask.
-p parent : créer le répertoire parent si c’est nécessaire.

Exemples :

 mkdir -m 0700 bin
 mkdir -p bin/system/x86

Pour supprimer un répertoire vide, utiliser rmdir.

 rmdir [options] dir

Options courantes :

-p parent : supprimer les sous-répertoires vides.

Exemples :

 rmdir  tmp
 rmdir -p bin/system/x86

Copier des fichiers et des répertoires modifier

Pour copier une fichier en un autre, ou vers un répertoire, utiliser la commande cp.

 cp [options] source destination

Source et destination peuvent être un fichier ou un répertoire.

Options courantes :

-i interactive : demande confirmation pour écraser
-r recursive : copie les sous répertoires et leur contenu. Utiliser -R pour les fichiers spéciaux.
-f force : forcer l'écrasement

Par défaut, il écrase silencieusement le fichier de destination s'il existe.

Par ailleurs il n'affecte pas le fichier source.

Exemples :

 cp fichier1 /tmp
 cp fichier1 fichier2.sh
 cp *.[a-z] /tmp
 cp -ri tmp/* /tmp2

Déplacer et renommer des fichiers modifier

Pour renommer un fichier, un répertoire ou pour déplacer un fichier ou un répertoire vers un autre endroit, utilisez mv.

 mv [options] source destination

Source et destination peuvent être un fichier ou un répertoire.

Options courantes :

-i interactive : demande interactive d'écrasement
-f force : force l'écrasement
-v verbose : verbeux

Par défaut, il écrase silencieusement le fichier de destination s'il existe.

Par ailleurs il n'affecte pas le fichier source.

Exemples :

 mv fichier1 /tmp
 mv fichier1 fichier2.sh
 mv *.[a-z] /tmp
 mv -fi tmp/* /tmp

Afficher une liste de fichiers et des informations modifier

La commande pour lister les fichiers dans le répertoire courant est ls.

 ls [options] [filenames]

Options courantes :

-l long : pour le format de nombre long.
-F File : différencie les fichiers des répertoires dans la liste.
-a all : montre tous les fichiers, y compris les cachés.
-R recursive : listage récursif des sous-répertoires.
-d directory : ne descend pas dans les répertoires : renvoie leurs noms au lieu de leurs contenus.

La commande ls est l'équivalent de la commande dir sur DOS.

Exemple de sortie de ls :

 ls -l /bin/ls
 -rwxr-xr-x    1   root  root  46784 mar 23  2002 /bin/ls
 ls -ld /bin
 drwxr-xr-x    2 root   root   2144 nov  5 11:55 /bin
 ls -a .
 .bash_history .bash_profile .bashrc ...
 ls -dF /etc .bashrc /bin/ls
 .bashrc  /bin/ls*  /etc/

Types de fichiers modifier

Le format long signifie :

 ls -l /etc/hosts    # Lister sous le format long le fichier hosts
 -rw-r—r-- 1 root root 677 Jul 5 22:18 /etc/hosts

Contenu des fichiers et emplacement modifier

Unix (donc Linux) ne distingue pas un type de fichier par son extension, comme Windows. Pour déterminer le contenu d’un fichier, utiliser file.

 file /etc .bashrc /bin/ls /dev/cdrom
 /etc:       directory
 .bashrc:    ASCII English text
 /bin/ls:    ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses  shared libs), stripped
 /dev/cdrom: symbolic link to /dev/hdc

Pour déterminer si une commande est un commande interne du shell ou un programme, utilisez type, et utilisez which pour trouver sa position.

 type cp cd ls which type
 cp is /bin/cp
 cd is a shell builtin
 ls is aliased to `ls $LS_OPTIONS'
 which is aliased to `type -p'
 type is a shell builtin
 which cut
 /usr/bin/cut

Créer et utiliser des fichiers modifier

Les noms de fichiers peuvent être créé avec les redirections I/O :

 cat chapter1 chapter2 > book

Un éditeur comme vi :

 vi mynewfile

Plein d'utilitaires UNIX :

 cp file newfile

Une application :

 firefox

La commande touch, qui créée des fichiers vides :

 touch memo

Un nom de fichier valide :

au maximum 255 caractères
doit respecter la casse (majuscules, minuscules…)
peut comporter tous les caractères sauf le slash '/' (car il sépare déjà les répertoires)

Sont recommandés les caractères alphanumériques ainsi que les caractères plus, moins et underscore.

  Caractères à éviter :

Le caractère tiret.

 touch my-file -lt

Espace blanc.

 touch more drink
 touch "more drink"

Beaucoup d'autres caractères spéciaux !@#$%^&*():;"'}{|\<,>.?~`

 touch memo*

Supprimer des fichiers et des répertoires modifier

Pour supprimer des fichiers ou arborescences, utilisez rm.

 rm [options] fichiers

Fichiers peut être un fichier ou un répertoire.

Options courantes :

-i interactive : demande confirmation pour chaque suppression.
-f force : force l'écrasement.
-r recursive : supprime les sous-répertoires et leur contenu.
  Il n'y a pas de commande pour annuler la suppression (pas de corbeille).

Exemples :

 rm  fichier1 /tmp
 rm fichier1 fichier2.sh
 rm *.[a-z]
 rm -rfi /tmp
 cd; rm -rf *  .*

Trouver des fichiers dans le sous-répertoire d'une arborescence modifier

Pour trouver un fichier dans une arborescence, utilisez find.

 find [subtrees] [conditions] [actions]

La commande comprend plusieurs conditions, et cherche récursivement dans les sous-répertoires.

Les conditions possibles sont :

-name [exemple] : cherche le mot exemple.
-type c : type de fichier [bcdfl].
-size [+-]# : a plus ou moins la taille en blocs (c:bytes, k:kilo).
-user [login] : appartient à l'utilisateur.
-atime [+-]# : non modifié depuis au plus ou moins le nombre de jour spécifié.
-mtime [+-]# : modifié depuis au plus ou moins le nombre de jour spécifié.
-perm nnn : possède les permissions nnn.

Les conditions possibles sont :

-print : montre le chemin complet des éléments du résultat.
-exec cmd {} \; : exécute la commande cmd sur la liste du résultat.
-ok cmd {} \; : idem que -exec mais en demandant avant.

Exemples :

 find . -name '*.[ch]' -print
 find /var /tmp . -size +20 -print
 find ~ -type c -name '*sys*' -print
 find / -type f -size +2c -exec rm -i {} \;
 find / -atime -3 -print
 find ~jo ~toto -user chloe -exec mv {} /tmp \;

whereis and which modifier

Pour localiser un binaire, un fichier source, ou une page de manuel, utilisez whereis.

 whereis [options]

Options courantes :

-b: Chercher seulement les binaires.
-m: Chercher seulement des sections de manuel.
-s: Chercher seulement des sources.

Exemples :

 whereis host
 host: /usr/bin/host /etc/host.conf /usr/share/man/man1/host.1.gz
 whereis -m host
 host: /usr/share/man/man1/host.1.gz

Pour localiser un fichier qui se trouve quelque part défini par la variable d'environnement PATH, utilisez which.

 which -a ls
 /bin/ls

-a cherche toutes les correspondances possibles dans la variable PATH.

Exercices modifier

  1. Écrivez une commande pour supprimer de façon interactive tous les fichiers .tmp dans votre répertoire personnel. Répondez y à chaque invite.
  1. Listez tous les fichiers dans les répertoires personnels des utilisateurs finissant par .pdf qui sont plus gros que 50 blocs et qui n'ont pas été accédés depuis un mois
  2. Créez un fichier file.h qui contiendra tous les noms de fichier se terminant par .h qui se trouvent dans le répertoire /usr.
  3. Faites un touch sur tous les fichiers c qui se trouvent dans le répertoire /usr/src/packages
  4. Quelles sont les permissions par défaut quand vous créez un nouveau fichier et un nouveau répertoire ?
  5. Comment pouvez vous créer un nouveau fichier ou répertoire qui contient un espace dans le nom ? (Exemple : 'new dir')
  6. Quelle est la commande pour supprimer tous les fichiers de type char et block dans votre répertoire personnel ?
  7. Comment trouver la position du programme find ?
  8. Supprimez tous les fichiers dans /tmp qui ne sont dont root n’est pas le propriétaire et qui n'ont pas été accédés depuis une semaine.