Certification Linux LPI/Administrateur système débutant/Examen 101/GNU et commandes Unix/Gestion de base des fichiers
Objectifs
modifierDescription : 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
modifiercp
find
mkdir
mv
ls
rm
rmdir
touch
Créer et supprimer des répertoires
modifierPour 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
modifierPour 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
modifierPour 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
modifierLa 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
modifierLe 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
modifierUnix (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
modifierLes 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
modifierPour 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
modifierPour 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
modifierPour 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- Écrivez une commande pour supprimer de façon interactive tous les fichiers .tmp dans votre répertoire personnel. Répondez y à chaque invite.
$ find . -name "*.tmp" -type f |rm -i
- 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
- 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.
- Faites un touch sur tous les fichiers c qui se trouvent dans le répertoire /usr/src/packages
- Quelles sont les permissions par défaut quand vous créez un nouveau fichier et un nouveau répertoire ?
- Comment pouvez vous créer un nouveau fichier ou répertoire qui contient un espace dans le nom ? (Exemple : 'new dir')
- Quelle est la commande pour supprimer tous les fichiers de type char et block dans votre répertoire personnel ?
- Comment trouver la position du programme find ?
- 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.