# Programmation Bash/Interactions avec le système de fichiers

* Introduction
* Hello World
* Notions essentielles du shell bash
* Interactions avec le système de fichiers
* Flux et redirections
* Tests
* Calculs
* Structures conditionnelles
* Boucles
* Interactions avec l'utilisateur
* Regex
* Fonctions
* Scripts
* Enchaînements et scripts
* Liste des commandes
* Commandes ksh
* Problèmes connus
* Introduction
* Hello World
* Notions essentielles du shell bash
* Interactions avec le système de fichiers
* Flux et redirections
* Tests
* Calculs
* Structures conditionnelles
* Boucles
* Interactions avec l'utilisateur
* Regex
* Fonctions
* Scripts
* Enchaînements et scripts
* Liste des commandes
* Commandes ksh
* Problèmes connus
[ Modifier le sommaire ]

## Fichiers et répertoires
### Créer
#### Création d'un fichier

Pour 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 :

#### Création d'un répertoire

Pour créer un répertoire, utiliser la commande mkdir. Exemple :

### Déplacer et renommer

Pour déplacer un objet du système de fichier, utiliser la commande mv. Exemple :
Pour renommer un fichier, il suffit de le déplacer vers un autre nom de fichier. Exemple :

### Copier

Pour copier un fichier, utiliser la commande cp comme suit :
Pour copier un répertoire, utiliser l'option -r.

### Supprimer

La commande rm détruit un fichier. Attention, ce fichier ne pourra pas être récupéré ou difficilement. Exemple :
Pour supprimer un répertoire, utiliser l'option -r. Pour forcer la suppression, utiliser l'option -f

### Lister

Pour 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" :

## Déplacements dans un système de fichier
### L'organisation, les chemins

Il 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 :
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

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 :
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

Les 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 :
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 :
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 :
Cette commande permet de monter une clé usb.
Umount :
Cette commande permet de démonter le lecteur monté sur /home/sidonie/cle.
* ↑ https://stackoverflow.com/questions/1767384/ls-command-how-can-i-get-a-recursive-full-path-listing-one-line-per-file