Bon : mine de rien, depuis tout à l'heure on est coincé dans notre dossier
home et on aimerait bien bouger de là.
Le moment est venu de déplacer le navire, moussaillon !
La commande que nous allons étudier ici s'appelle
cd, abréviation de
Change Directory (changer de dossier). C'est une commande très importante que vous allez utiliser quelques milliers de fois dans votre vie (au moins).
Contrairement à
ls, la commande
cd ne prend pas plein de paramètres mais juste un seul : le nom du dossier dans lequel vous souhaitez aller.
Si on veut aller à la racine, il suffit de taper
cd / :
Code : Console | mateo21@mateo21-desktop: $ cd /
mateo21@mateo21-desktop:/$ pwd
/ |
Après avoir tapé
cd /, on se retrouve à la racine. L'invite de commandes a changé et le
~} a été remplacé par un
/. Si vous êtes sceptiques, un petit coup de
pwd devrait vous confirmer que vous êtes bien dans
/.
Bien ! Listons les fichiers et dossiers contenus dans
/ :
Code : Console | mateo21@mateo21-desktop:/$ ls -F
bin/ dev/ initrd/ lib/ mnt/ root/ sys/ var/
boot/ etc/ initrd.img@ lost+found/ opt/ sbin/ tmp/ vmlinuz@
cdrom@ home/ initrd.img.old@ media/ proc/ srv/ usr/ vmlinuz.old@ |
Vous y retrouvez un grand nombre de dossiers que je vous ai décrits au début du chapitre.
Allons dans le sous-dossier
usr :
Code : Console | mateo21@mateo21-desktop:/$ cd usr |
Voyons voir ce qu'il y a là-dedans…
Code : Console | mateo21@mateo21-desktop:/usr$ ls -F
bin/ games/ include/ lib/ local/ sbin/ share/ src/ X11R6/ |
Chez moi, il n'y a que des dossiers. Hummm, le dossier
games m'intrigue, voyons voir ce que j'ai comme jeux :
Code : Console | mateo21@mateo21-desktop:/usr$ cd games
mateo21@mateo21-desktop:/usr/games$ |
Schématiquement, on vient de faire ce qui est illustré dans la figure suivante.
Supposons maintenant que j'aie envie de revenir au dossier précédent, aussi appelé dossier parent, c'est-à-dire
/usr. Comment je fais ?
Il faut utiliser les deux points comme ceci :
Code : Console | mateo21@mateo21-desktop:/usr/games$ cd ..
mateo21@mateo21-desktop:/usr$ |
Et hop là, on est revenu au dossier parent ! (figure suivante.)
Si on avait voulu reculer de deux dossiers parents, on aurait écrit
../.. (« reviens en arrière, puis reviens en arrière »). Cela nous aurait ramené à la racine :
Code : Console | mateo21@mateo21-desktop:/usr/games$ cd ../..
mateo21@mateo21-desktop:/$ |
Eh mais en fait, il y a plusieurs façons d'aller dans un dossier, non ? Tout à l'heure, on est allé à la racine en tapant cd /, et maintenant en tapant cd ../..
C'est quoi cette affaire ?
Il y a en fait deux façons de changer de dossier : en indiquant un
chemin relatif, ou en indiquant un
chemin absolu.
Les chemins relatifs
Un chemin relatif est un chemin qui dépend du dossier dans lequel vous vous trouvez. Tout à l'heure, on est allé dans le sous-dossier
games de
/usr en tapant juste son nom :
Code : Console | mateo21@mateo21-desktop:/usr$ cd games |
En faisant cela, on utilise un chemin relatif, c'est-à-dire relatif au dossier actuel. Quand on met juste le nom d'un dossier comme ici, cela indique que l'on veut aller dans un sous-dossier.
Si on fait
cd games depuis la racine, ça va planter :
Code : Console | mateo21@mateo21-desktop:/$ cd games
bash: cd: games: Aucun fichier ou répertoire de ce type |
Je crois que le message d'erreur est assez clair : il n'y a aucun dossier
games dans
/.
Pour se rendre dans
games, il faut d'abord indiquer le dossier qui le contient (
usr) :
Code : Console | mateo21@mateo21-desktop:/$ cd usr/games
mateo21@mateo21-desktop:/usr/games$ |
Les chemins absolus
Contrairement aux chemins relatifs, les chemins absolus fonctionnent quel que soit le dossier dans lequel on se trouve.
Un chemin absolu est facile à reconnaître : il commence toujours par la racine (
/). Vous devez ensuite faire la liste des dossiers dans lesquels vous voulez entrer. Par exemple, supposons que je sois dans
/home/mateo21 et que je souhaite aller dans
/usr/games. Avec un chemin absolu :
Code : Console | mateo21@mateo21-desktop: $ cd /usr/games
mateo21@mateo21-desktop:/usr/games$ |
Le schéma suivante montre bien qu'on
part de la racine
/ pour indiquer où on veut aller.
Si on avait voulu faire la même chose à coup de chemin relatif, il aurait fallu écrire :
Code : Console | mateo21@mateo21-desktop: $ cd ../../usr/games/
mateo21@mateo21-desktop:/usr/games$ |
Ce qui signifie «
reviens en arrière (donc dans /home) puis reviens en arrière (donc dans /), puis va en avant dans usr, puis va en avant dans games ». Voyez en figure suivante.
Ici, comme c'est un chemin relatif, on
part du dossier dans lequel on se trouve (ici, c'est
/home/mateo21) et on indique à la machine le chemin à suivre à partir de là pour aller dans le dossier qu'on veut.
Un chemin absolu est donc facile à reconnaître, car on part toujours de la racine /.
Un chemin relatif peut aussi s'avérer très pratique et plus court (ça dépend des cas).
Ce sera à vous de choisir à chaque fois comment vous voulez écrire votre chemin. Vous avez le choix.
Retour au répertoire home
Si vous voulez retourner dans votre répertoire
home personnel, plusieurs solutions s'offrent à vous.
- La brutale : il suffit d'écrire le chemin absolu en entier. Cela donne :
Code : Console | mateo21@mateo21-desktop:/usr/games$ cd /home/mateo21/
mateo21@mateo21-desktop: $ |
- La maligne : plus court et plus pratique, vous pouvez utiliser l'alias ~} qui signifie la même chose. Cela donne :
Code : Console | mateo21@mateo21-desktop:/usr/games$ cd
mateo21@mateo21-desktop: $ |
- La super maligne : si vous ne mettez aucun paramètre à la commande cd, ça vous ramène aussi dans votre répertoire personnel.
Code : Console | mateo21@mateo21-desktop:/usr/games$ cd
mateo21@mateo21-desktop: $ |
Autocomplétion du chemin
Cette astuce est vitale ; si vous ne vous en servez pas, vous passez à côté d'une des plus importantes astuces de la console.
L'idée est simple : taper
cd /usr/games/trucbidule c'est bien, mais c'est parfois un peu long de tout écrire. On a la flemme. Vous avez la flemme. Oui, vous. Alors vous allez justement demander à l'ordinateur de compléter le chemin tout seul !
L'autocomplétion de chemin fonctionne de la même manière que l'autocomplétion de commande qu'on a vue dans le chapitre précédent : avec la touche
Tab (Tabulation). Faites le test avec moi. Commencez par vous placer dans
/usr :
Code : Console | mateo21@mateo21-desktop: $ cd /usr
mateo21@mateo21-desktop:/usr$ |
Tapez ensuite juste
cd ga, puis appuyez sur
Tab. C'est magique, le nom du dossier a été automatiquement complété !
Code : Console | mateo21@mateo21-desktop:/usr$ cd games/ |
Revenez maintenant dans
/usr (en faisant
cd .. par exemple) et essayez de taper juste
cd l, puis faites
Tab. Rien ne se passe : cela signifie que l'ordinateur n'a pas trouvé de dossier qui corresponde au début de votre recherche, ou alors qu'il y en plusieurs qui commencent par « l ». Faites à nouveau
Tab :
Code : Console | mateo21@mateo21-desktop:/usr$ cd l
lib/ local/
mateo21@mateo21-desktop:/usr$ cd l |
On vient de vous donner la liste des dossiers qui commencent par « l » ! Cela signifie qu'il faut préciser votre recherche parce que sinon, l'ordinateur ne peut pas deviner dans quel dossier vous voulez entrer. Ça tombe bien, la commande a été réécrite en dessous, vous n'avez plus qu'à ajouter une lettre plus précise : par exemple « o » pour que Linux devine que vous voulez aller dans le dossier
local. Tapez donc « o », puis à nouveau
Tab, et le nom sera complété !
Code : Console | mateo21@mateo21-desktop:/usr$ cd local/ |
Faites des tests pour vous entraîner à utiliser l'autocomplétion, c'est vraiment très important. Vous allez voir, c'est intuitif et vraiment pratique !