Sous Unix, et Linux en particulier, tout est fichier. Toute interaction avec le
système devient donc une interaction avec des fichiers. Ici par contre, pas de
lettre de lecteur. Le système de fichiers fonctionne en arborescence, avec une
racine dont l'emplacement est /.
Il y a une convention (FHS, Filesystem Hierarchy Standard) qui indique quels types de contenus doivent se trouver dans quels répertoires. Quelques indispensables à retenir :
/etc/contient les fichiers de configuration système (mais aussi pour des programmes) ;/home/contient les répertoires personnels des utilisateurs (un répertoire par utilisateur, ainsi l'utilisateurnilsa pour répertoire personnel/home/nils/) ;- exception au chemin précédent, l'utilisateur administrateur, nommé
root, a pour répertoire personnel/root/; /bin/,/usr/bin/ou encore/usr/local/bincontiennent des programmes (des fichiers binaire exécutables), tandis que/sbin/,/usr/sbin/ou/usr/local/sbin/contiennent des programmes utilisés pour l'administration du système, nécessitant des droits étendus ;/tmp/contient des fichiers temporaires ;- et
/var/log/sert à stocker des fichiers journaux, pour le système et les programmes.
Il existe aussi des chemins spéciaux :
.désigne le répertoire courant ;..désigne le répertoire parent, c'est-à-dire le répertoire juste au-dessus du répertoire courant dans l'arborescence ;~désigne le répertoire personnel de l'utilisateur.
Ces chemins peuvent être utilisés comme arguments ou options pour des commandes.
Lors du démarrage d'une session (via l'ouverture d'un émulateur de terminal par
exemple), sauf problème, le répertoire courant est le répertoire personnel de
l'utilisateur. Ce répertoire peut, au lieu de son chemin, être désigné par le
symbole ~ dans le prompt. Dans le cas où le prompt ne l'indique pas, on peut
utiliser la commande pwd (Print Working Directory) pour l'afficher.
La commande cd (Change Directory) permet de changer de répertoire courant.
Elle dispose de quelques possibilités assez intéressantes :
cdsans argument nous ramène dans notre répertoire personnel, peu importe le répertoire courant ;cd -nous ramène dans le répertoire précédent, par rapport à l'historique de navigation, à ne pas confondre avec le répertoire parent.
La commande ls (List Short) affiche le contenu du répertoire courant. Là
aussi quelques options intéressantes :
ls -l;ls -aetls -A;ls <chemin>.
Un chemin absolu est un chemin écrit en entier, et qui commence donc par la
racine. Par exemple, /srv/www/anotherhomepage.org/public/ est un chemin absolu.
Un chemin est dit relatif lorsqu'il ne commence pas par la racine. Il est donc relatif à l'emplacement de l'utilisateur dans l'arborescence.
Prenons par exemple un répertoire /srv/www/anotherhomepage.org qui contient
les répertoires suivants :
.
|-- log
|-- public
| `-- .well-known
|-- session
`-- tmp
Depuis ce répertoire, il est possible de se déplacer dans le répertoire log
en tapant tout simplement cd log. Et une fois dans ce répertoire, il est
possible en une seule commande d'aller dans le répertoire session via cd ../session.
Passer les niveaux 1 à 3 de GameShell.
Comme sur un environnement graphique, il est possible d'effectuer des actions sur les fichiers et répertoires, comme :
- créer un répertoire, via la commande
mkdir; - supprimer, avec
rm; - déplacer :
mv(qui peut aussi servir à renommer) ; - copier, avec
cp;
mkdir ("MaKe DIRectory") crée un répertoire dans l'arborescence, ou plusieurs
grâce à l'option -p.
rm ("ReMove") supprime des fichiers. Par défaut, aucune demande de confirmation
n'est demandée. Quelques options intéressantes :
-vaffiche les noms des fichiers effacés ;-idemande une confirmation ;-rest récursif (on peut alors supprimer toute une arborescence avec une seule commande) ;-fignore les fichiers qui n'existent pas, ne demande jamais confirmation.
cp ("CoPy") effectue une copie. On y trouve des options similaires à rm :
-vaffiche les noms des fichiers copiés ;-idemande une confirmation en cas de fichier cible déjà existant ;-rest récursif (on peut alors copier toute une arborescence avec une seule commande) ;-fignore les fichiers existant à la cible, ne demande jamais confirmation.
À noter une option -p qui conserve les attributs des fichiers.
mv ("MoVe") déplace des fichiers. On peut aussi s'en servir pour renommer un fichier.
Il a lui aussi des options assez similaires à rm et cp :
-vaffiche les noms des fichiers déplacés ;-idemande une confirmation en cas de fichier cible déjà existant ;-rest récursif (on peut alors bouger toute une arborescence avec une seule commande) ;-fignore les fichiers existant à la cible, ne demande jamais confirmation.
Les jokers sont des caractères très pratiques qui vont permettre d'agir sur plusieurs fichiers ou répertoires à la fois. Il y a deux jokers :
?désigne un caractère, n'importe lequel ;*désigne un ou plusieurs caractères, n'importe lesquels.
Les jokers peuvent être utilisés plusieurs fois. Voici un exemple de plusieurs fichiers :
rapport-2022-10.txt
rapport-2022-11.txt
rapport-2022-12.txt
rapport-2022-all.txt
rapport-2023-01.txt
rapport-2023-02.txt
rapport-2023-03.txt
rapport-2023-04.txt
rapport-2023-05.txt
rapport-2023-06.txt
rapport-2023-07.txt
rapport-2023-08.txt
rapport-2023-09.txt
rapport-2023-10.txt
rapport-2023-all.txt
Dans cet exemple, si on ne souhaite supprimer que les fichiers mensuels de 2022, il est
préférable de lancer la commande rm rapport-2022-??.txt plutôt que rm rapport-*, qui effacera aussi le fichier rapport-2022-all.txt.
Passer le niveau 8 de GameShell.
Les fichiers et répertoires cachés ont une particularité, le nom commence
systématiquement par le caractère .. Ils ne sont pas affichés lors d'un ls.
D'ailleurs, les emplacement spéciaux . et .. sont techniquement des
répertoires cachés. Pour les afficher lorsqu'on liste des fichiers, deux
options existent :
-a, qui affiche tous les fichiers cachés, même.et..;-A, qui affiche tous les fichiers cachés, sauf.et...
Il y a une petite subtilité lors de l'utilisation des jokers. Reprenons notre
exemple précédent, et ajoutons un fichier .rapport-2022-secret.txt. La
commande rm *-2022-* n'effacera pas notre fichier caché, il faudra pour cela
utiliser la commande rm *-2022-* .*-2022-*.
Passer les niveaux 9 à 12 de GameShell.