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?
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.
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"
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/