Programmation Bash/Interactions avec le système de fichiers
Fichiers et répertoires
modifierCréer
modifierCréation d'un fichier
modifierPour créer un fichier texte, le plus simple est d'utiliser l'éditeur de texte vi. Pour créer un fichier vide, il suffit d'utiliser la commande touch
. La commande ls
permet de recenser le contenu d'un répertoire.
Exemple :
$ ls $ touch vide $ ls -l total 0 -rw-r--r-- 1 shadouser shadogroup 0 2007-03-03 10:20 vide
Création d'un répertoire
modifierPour créer un répertoire, utiliser la commande mkdir
.
Exemple :
$ ls $ mkdir dossier $ ls -l total 4 drwxr-xr-x 2 shadouser shadogroup 4096 2007-03-03 10:28 dossier
Déplacer et renommer
modifierPour déplacer un objet du système de fichier, utiliser la commande mv
.
Exemple :
$ pwd /home/shadouser/test $ ls -l total 4 drwxr-xr-x 2 shadouser shadogroup 4096 2007-03-03 10:28 dossier -rw-r--r-- 1 shadouser shadogroup 0 2007-03-03 10:20 vide $ ls -l ~/ total 0 $ mv vide .. $ ls dossier $ ls .. vide
Pour renommer un fichier, il suffit de le déplacer vers un autre nom de fichier. Exemple :
$ ls vide $ mv vide plein $ ls plein
Copier
modifierPour copier un fichier, utiliser la commande cp
comme suit :
$ pwd /home/shadouser/test $ ls dossier vide $ cp vide dossier/ $ ls dossier/ vide $ ls dossier vide
Pour copier un répertoire, utiliser l'option -r
.
Supprimer
modifierLa commande rm
détruit un fichier. Attention, ce fichier ne pourra pas être récupéré ou difficilement.
Exemple :
$ ls plein $ rm plein $ ls
Pour supprimer un répertoire, utiliser l'option -r
. Pour forcer la suppression, utiliser l'option -f
Lister
modifierPour lister tous les fichiers du dossier courant et de ses sous-dossiers on peut utiliser ls -R
. Toutefois le formatage du code est ordonné par sous-dossier. Pour avoir une seule liste de fichiers et sous-dossiers triés, il faut donc formater ce résultat avec "awk"[1] :
ls -R | awk '
/:$/&&f{s=$0;f=0}
/:$/&&!f{sub(/:$/,"");s=$0;f=1;next}
NF&&f{ print s"/"$0 }'
Déplacements dans un système de fichier
modifierL'organisation, les chemins
modifierIl faut toujours se souvenir que du point de vue d'un système de type UNIX, tout est fichier. Cela signifie que, pour le système, les périphériques - disques durs, écrans, imprimantes etc... - sont représentés par des fichiers. Les répertoires sont eux aussi des fichiers, d'un type particulier, puisqu'il "contiennent" d'autres fichiers. Le lecteur comprendra donc qu'il est important de maîtriser les notions de bases concernant la manipulation de fichiers.
Les fichiers d'un tel système sont organisés sous forme d'une arborescence dont la racine est représentée par le slash : /
C'est par ce signe que débute tout chemin absolu menant à un fichier, sous réserve, bien entendu, de son existence. Pour indiquer un nœud dans ce chemin, une bifurcation, on utilise comme séparateur le slash.
Exemple :
/home/aniko/latex/rapport.tex
Ce chemin mène à un fichier baptisé "rapport.tex" qui se trouve dans un répertoire "latex", lui-même dans le répertoire "aniko", inclus dans "home" qui est un répertoire directement accessible depuis la racine. Cette organisation permet une grande souplesse, puisqu'il est aisé de détacher une partie de l'arborescence pour la greffer ailleurs. En outre cela permet de compartimenter clairement l'organisation du système, puisque par le jeu de différents droits sur les fichiers, tous ne sont pas lisibles, modifiables ou exécutables par tous les utilisateurs.
Les commandes cd
et pwd
modifier
La commande cd
, i.e. common directory (répertoire courant), permet de se déplacer dans le système de fichiers. La commande pwd
, i.e. present working directory, affiche l'endroit où l'on se trouve actuellement dans le système de fichiers.
Exemple :
$ pwd /home/shadouser $ ls -l total 4,0K drwxr-xr-x 4 shadouser shadogroup 4096 2007-03-03 10:31 tmp $ cd tmp $ pwd /home/shadouser/tmp $ cd .. $ pwd /home/shadouser $ cd . $ pwd /home/shadouser $ cd tmp $ pwd /home/shadouser/tmp $ cd ~/ $ pwd /home/shadouser
Des symboles sont utilisés pour représenter les répertoires couramment utilisés :
- . désigne le répertoire courant, celui dans lequel on se trouve,
- .. désigne le répertoire parent de celui dans lequel on se trouve,
- ~ désigne le répertoire personnel de l'utilisateur, dans l'exemple précédent
/home/shadouser
. La variable d'environnement$HOME
détient l'information sur le répertoire personnel de l'utilisateur.
"Monter" une ressource dans le système de fichiers
modifierLes systèmes de fichiers Unix ne comprennent, comme nous le décrivons plus haut, qu'une seule arborescence logique. La racine de cette arborescence est nommée /
. Il est possible d'intégrer sous cette arborescence tout type de périphérique : souris, disque dur, lecteur dvd, ou clé usb. La commande mount
permet d'insérer une ressource dans cette arborescence.
Exemple :
$ mount -t ext3 /dev/hda2 /tmp
Cette commande permet de monter la ressource identifiée par le système comme /dev/hda2
dans le répertoire /tmp
. Il s'agit probablement d'une partition de disque dur dont le format est ext3. Cela signifie que pour accéder à cette ressource il suffit d'aller dans ce répertoire.
Exemple :
mount -t nfs pc33:/pub/ /home/sidonie/import/
Cette commande permet de monter le répertoire /pub
du système de fichier du serveur distant pc33
dans l'arborescence de la machine à travers le réseau en utilisant NFS.
Exemple :
mount -t vfat /dev/sda /home/sidonie/cle/
Cette commande permet de monter une clé usb.
Umount :
umount /home/sidonie/cle/
Cette commande permet de démonter le lecteur monté sur /home/sidonie/cle.