Que sont «.» Et «..» dans un répertoire?


Réponses:


40

Le . est le répertoire courant, tandis que .. signifie le répertoire parent. Cela accélère également les choses sur la ligne de commande, vous n'avez donc pas besoin de taper des chemins complets.

exemple:

remonter 2 répertoires:

cd ..\..\

ou sur un système UNIX, pour exécuter des binaires exécutables dans le répertoire courant:

./program

De nombreux scripts UNIX utiliseront également. pour représenter le répertoire courant, afin de rechercher des fichiers par exemple (Perl):

#!/usr/bin/perl

opendir ( DIR, "." ) || die "Error opening current directory\n";
while( ($f = readdir(DIR))){
     print("$f\n");
}
closedir(DIR);

Il est beaucoup plus portable si vous souhaitez déplacer le script vers différents répertoires ou systèmes car un nom de répertoire n'est pas codé en dur.


3
C'est peu connu, mais la ligne de commande Windows étend cela. . = ce répertoire .. = répertoire parent ... = répertoire parent du parent 3 points est parfois utile, bien plus que cela et c'est tout simplement trop difficile à gérer.
salmonmoose

4
3 points ne fonctionne pas pour moi, en utilisant Vista
Kevin Panko

1
ni moi sur Windows 7 64 bits RTM. Cela me semble être un mythe. quel est le problème avec .. \ .. de toute façon?
AdamV

2
@salmonmoose: ne fonctionne pas non plus pour moi sur XP.
Simon P Stevens


10

Le ..est utilisé pour naviguer dans la hiérarchie du système de fichiers. C'est utile lorsque vous ne voulez pas taper un long chemin, ou lorsque vous écrivez un script / programme qui ne sait pas exactement où il sera installé, mais il sait qu'il ../media/devrait contenir toutes les images / vidéos / icônes, etc.

Le point unique .est utile sous Linux où vous souhaitez exécuter un exécutable dans le répertoire en cours afin que vous tapiez ./a.outparce que le shell de commande par défaut ne recherche pas les fichiers exécutables dans le répertoire en cours (pour des raisons de sécurité).

Le point unique .est également utilisé si vous souhaitez passer le répertoire en cours comme argument à une commande.


1
PowerShell ne comprend pas non plus. dans la liste des chemins pour rechercher les exécutables.
Joey

Comment passer '.' comme argument à une commande?
Calcul

@DeFu vous passez le point comme un point, par exemple:ls .
hasen

ls fonctionne de la même manière quels .
Calcul

@DeFu bien oui mais quand vous ls .vous êtes de passage. » comme argument à «ls»; n'est-ce pas ce que vous avez demandé? Il fonctionne de la même manière car, par défaut, lsrépertorie le répertoire en cours et .est le répertoire en cours. Mais vous êtes de passage à la commande, à coup sûr.
hasen

5

Le . est le répertoire courant. Vous avez rarement besoin de l'utiliser; la plupart des commandes prendront le répertoire courant. Le .. est le niveau supérieur; c'est un raccourci plutôt utile. Si vous êtes dans C: \ foo \ bar et que vous souhaitez accéder à C: \ foo \ bar2, vous pouvez dire

cd ..\bar2

et vous serez dans C: \ foo \ bar2. Si vous ne souhaitez pas accéder à la barre2 mais uniquement exécuter C: \ foo \ bar.exe, vous pouvez dire

..\bar.exe

ou .. \ bar pour l'exécuter sans revenir au répertoire parent. Bien sûr, cela est plus utile lorsque vous l'êtes, il représente un chemin plus long que C: \ foo (tel que "C: \ Users \ Daniel \ My Dropbox \".


1
Je trouve . être très utile parfois, en particulier lors de la copie ou du déplacement de fichiers vers l'emplacement actuel ( copy F:\*.foo .) ou en y faisant référence autrement ( start .ouvre l'Explorateur dans le répertoire actuel, par exemple).
Joey

3

Ils représentent:

.

Le dir actuel

.. 

Représente le répertoire parent

Donc, si vous avez l'exécutable "su.exe" dans:

  • Votre variable d'environnement Path (disons C: \ MyExecutables \ su.exe)
  • Votre répertoire actuel
  • Votre parent dir.

Vous pouvez exécuter chacun comme ceci:

 su.exe  

Exécute celui du chemin

.\su.exe 

Exécute celui du répertoire courant

..\su.exe

Exécute celui du répertoire parent.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.