web-dev-qa-db-fra.com

Que signifie le ./ (barre oblique) sous Linux?

Par exemple, je peux faire ce qui suit

touch a

ou

touch ./a

Ensuite, quand je fais ls je peux voir les deux, alors quel est exactement le ./ pour?

13
K Split X

La barre oblique, ./, est un chemin relatif vers quelque chose dans le répertoire courant.

Le point est le répertoire courant et la barre oblique est un délimiteur de chemin.

Lorsque vous donnez la commande touch ./a vous dites "exécutez l'utilitaire touch avec l'argument ./a "et touch créeront (ou mettront à jour l'horodatage) le fichier a dans le répertoire courant.

Il n'y a aucune différence entre touch a et touch ./a car les deux commandes agiront sur la chose appelée a dans le répertoire courant.

D'une manière similaire, touch ../a agira sur le a dans le répertoire au-dessus du répertoire courant comme .. fait référence à "un répertoire plus haut dans la hiérarchie".

. et .. sont deux noms de répertoires spéciaux qui sont présents dans chaque répertoire sur les systèmes Unix.


Il est utile de pouvoir mettre ./ devant un nom de fichier parfois, comme lorsque vous essayez de créer ou de supprimer, ou simplement de travailler avec, un fichier avec un tiret comme premier caractère de son nom de fichier.

Par exemple,

touch -a file

ne créera pas de fichier appelé -a file, et non plus

touch '-a file'

Mais,

touch ./'-a file'

aurait.

16
Kusalananda

La notation ./ Est utile lorsque vous essayez d'exécuter un script ou un autre exécutable dans le répertoire courant. Contrairement à l'invite de commande Windows, les shells Unix (et les systèmes de type Unix comme Linux) ne vérifient pas le répertoire actuel pour les exécutables avant de vérifier la variable d'environnement PATH, et les systèmes Unix ont tendance à ne pas inclure ./ dans le PATH pour des raisons de sécurité. En devant préciser

./executable

plutôt que juste

executable

l'utilisateur dit, "oui, je fais je veux exécuter cet exécutable dans le répertoire courant"

8
Ken Keenan

C'est ce qu'on appelle un chemin relatif.

. représente le répertoire de travail actuel. Donc, si vous êtes actuellement dans /home/jesse, . est simplement un lien vers /home/jesse donc quand vous pointez sur ./ vous pointez vraiment sur /home/jesse/

4
jesse_b