Je suis dans mon répertoire personnel sur mon mac:
$ pwd
/Users/lukas
Quand je suis cd
autour, je ne commence pas (et ne peux pas) le chemin avec /
:
$ cd Documents/
/Users/lukas/Documents
$ cd /Documents
-bash: cd: /Documents: No such file or directory
Sauf quand je suis dedans /
:
$ pwd
/
$ cd Users
/Users
$ cd /Users
/Users
Pourquoi puis-je utiliser /
devant le chemin lorsque je passe de /
à /Users
mais pas dans les niveaux suivants? Est-ce spécifique à macOS ou est-ce un comportement Unix standard?
linux
command-line
mac
terminal
LukasKawerau
la source
la source
Réponses:
Il s'agit d'un comportement Unix standard.
Le
/
début du chemin représente la racine du disque (ou le niveau de démarrage / supérieur de l'arborescence du système de fichiers). Comme ceDocuments
n'est pas le cas,/Documents
impossible à trouver./Users
est hors du répertoire racine, ce problème ne se produit donc pas.Vous pouvez utiliser
cd /Users/lukas/Documents
pour passer à ce chemin.Vous pouvez également utiliser l'adressage relatif. Les systèmes de fichiers basés sur Unix ont 2 répertoires spéciaux:
.
ce qui signifie "ce répertoire",..
ce qui signifie le répertoire parent.Si vous êtes là
/Users/lukas
, vouscd ./Documents
amènerait au bon endroit.Supposons que vous étiez dedans
/Users/Lukas/Documents
et que vous vouliez aller/Users/Janes/Documents
, vous pourriez émettre une commandecd ../../Janes/Documents
- utiliser..
vous ramènerait à un niveau - donc vous le feriez deux fois, avant d'entrer dans le nouveau chemin relatif.la source
Users/lukas
,cd Documents
appelle le chemin relatif ;cd /Users/Lukas/Documents
appelle le chemin absolu (qui fonctionnerait quel que soit le répertoire dans lequel vous vous trouvez lors de l'appel de cette commande)./
par `\ ') puisque DOS l'a emprunté (via un long historique compliqué) à Unix./Users/lukas
est un chemin "absolu". Le premier/
représente le répertoire racine de votre système de fichiers.lukas
est un chemin "relatif". Comme il n'est pas ancré à la racine, cela signifie "recherchez-le dans le répertoire courant ". À moins que le répertoire actuel ne soit/Users
(ou un autre répertoire contenant unlukas
), cela échouera.Alors, explorons vos exemples, en supposant que vous êtes dans
/Users/lukas
:Chemin relatif donné => changez pour le répertoire "Documents" qui est à l'intérieur
/Users/lukas
.Chemin absolu donné => changez de répertoire
/Documents
.Cela montre que vous avez maintenant changé le répertoire de travail en répertoire racine
/
(bien que lacd
commande pour ce faire ne soit pas affichée).Chemin relatif donné => changez pour le répertoire "Users" qui est à l'intérieur
/
.Chemin absolu donné => changez de répertoire
/Users
.La clé à chaque fois est celle qui mène
/
. Avec lui, le chemin est absolu. Sans cela, le chemin est relatif. Cette règle est sans ambiguïté car tous les chemins absolus commencent par/
(car le répertoire racine est toujours appelé/
).Voici un pseudocode décrivant vaguement cet algorithme:
L'argument auquel vous passez
cd
passe par cet algorithme; le répertoire dans lequel vous finissez par changer est le chemin que retourne l'algorithme.Lectures complémentaires:
Joseph L. Zachary
"Introduction à la programmation scientifique"
la source