web-dev-qa-db-fra.com

Quelle est la différence entre "cd ../" et "cd / .."?

Que signifient ces deux commandes?

cd ../
cd /..

Je me retrouve dans deux répertoires dans l'arborescence de la première commande et dans le répertoire racine de la deuxième commande. Pourquoi cela se produit-il?

7
Fazlan

Un / à la fin du nom d'un répertoire/dossier est facultatif . La plupart du temps, inclure ou omettre la barre oblique finale dans un nom de répertoire ne modifie pas l'effet d'une commande.

Donc, cd ../ est équivalent à cd ...

Les chemins qui ne commencent pas par un / sont des chemins relatifs; ils sont résolus par rapport au répertoire actuel .

Chaque répertoire a deux entrées spéciales:

  • une entrée de répertoire appelée . qui se résout dans le répertoire lui-même
  • une entrée de répertoire appelée .. qui est résolue en parent du répertoire (c'est-à-dire, le répertoire qui contient ce répertoire)

Par conséquent, cd ../ et cd .. changent de répertoire en parent du répertoire . Ainsi, si vous démarrez dans /home/fazlan et exécutez cd .. ou cd ../, vous vous retrouverez dans /home.

En revanche, /.. est un chemin absolu (bien qu’inhabituel). / est la racine du système de fichiers - le répertoire dans lequel vous accédez si vous remontez complètement dans la hiérarchie des répertoires. (Utilisation du même parent et de la métaphore child , on dit / est l’ancêtre de tout le système de fichiers.)

Puisque .. signifie "le répertoire parent de ce répertoire" et / signifie "le sommet du système de fichiers," /.. signifie "le répertoire parent du haut du système de fichiers".

Mais que signifie parler du répertoire que contient /? Eh bien, / est une exception. Puisque aucun répertoire ne le contient , on dit que le parent de / est lui-même. Par conséquent, dans /, .. est /. Par conséquent, /.. est identique à /.

C'est pourquoi cd ../ vous ouvre un répertoire à partir duquel vous avez commencé, tandis que cd /.. vous amène au sommet. Des méthodes plus élégantes et plus faciles à lire sont cd .. et cd /, respectivement.

12
Eliah Kagan

Le premier est un chemin relatif. La seconde est un chemin absolu.

L'opérateur .. dans cet argument signifie en monter un.

La barre oblique lorsqu'elle n'est pas à l'avant signifie la division du nom du sous-répertoire.

La barre oblique à l'avant signifie "Ceci est un chemin absolu. Commencez au répertoire racine." Le .. est rejeté car vous ne pouvez plus revenir en arrière. (Il fut un temps où beaucoup d’entre elles vous permettaient de casser des chroots)

2
RobotHumans

Un seul point (.) Représente le répertoire en cours. En fait, si vous exécutiez un cd ., il vous mettrait dans votre répertoire actuel (ce qui semblerait ne rien faire). Si vous deviez copier quelque chose de/dir1 dans votre répertoire actuel, vous pourriez le faire comme ceci:

cp /dir1/somefile.txt .

L'exécution d'un cd .. vous amène à un niveau de répertoire. Un cd ../ fait la même chose. Si vous vouliez monter deux niveaux, vous ajouteriez deux autres points à la fin, comme ceci:

cd ../..

Pour revenir au répertoire racine, vous pouvez exécuter un cd /. Maintenant, disons que j'ai exécuté ce qui suit:

cd /dir1/dir2/dir3/..

Cela me met dans le répertoire/dir1/dir2, car (comme nous l'avons établi plus haut), le .. lui dit de monter d'un niveau. Donc, il va à dir3, puis monte.

En appelant un cd /.., vous lui indiquez d'aller dans le répertoire racine /, puis de monter d'un niveau, ce qu'il ne peut pas faire. Donc, il vous laisse effectivement à la racine du répertoire.

1
Aaron