Bonjour.
Je débute avec Linux et je prend du temps a comprendre les utilisation de ligne de commande avec les Manpages des différentes commande.
Cependant je me suis intéressé a la commande cd (change directory).
La commande "cd --help" nous renvoi bien à l'aide de l'utilisation de cd. "man cd" n'existe pas.
Néanmoins la commande "cd -" permet de ciblé le chemin précédent de la commande "cd" dans l'arborescence des répertoire n'est pas noté dans l'aide et donc le symbole "-" n'est indiquer nul part.
Je ne comprend pas trop car dans l'aide rien n'est indiquer.
Je voudrais savoir comment s’appelle les caractères pouvant être utiliser librement comme le "-" et si il y a d'autre caractères comme celui-ci pouvant être utiliser en généralité avec d'autres commandes.
J'ai fais une recherche sur les métacaractères et ils ne sont pas concernés.
Merci.
Commande "cd" (change directory) et ses options cachées.
Moderator: Laurent85
Forum rules
Topics in this forum are automatically closed 6 months after creation.
Topics in this forum are automatically closed 6 months after creation.
-
- Level 2
- Posts: 59
- Joined: Mon Feb 05, 2024 5:38 pm
Re: Commande "cd" (change directory) et ses options cachées.
Il n'y a pas d'options cachées pourCasualMint wrote: ⤴Thu Feb 08, 2024 6:17 pm La commande "cd --help" nous renvoi bien à l'aide de l'utilisation de cd. "man cd" n'existe pas.
cd
pour la bonne raison qu'il n'y a pas d'option du tout. Ce qui suit cd
se nomme argument ou paramètre. Une option modifie la manière dont une commande se comporte (par exemple ls
et ls -l
).L'argument n'est pas traité par
cd
, mais par le shell
(Bash par défaut) en plusieurs phases :1) décomposition de la ligne de commande en "mots", c'est-à-dire en unités séparées par des espaces ou des débuts/fins de ligne. C'est pour cela que si un argument unique comporte des espaces, il faut le mettre entre quotes simples ' ' ou doubles " ", sinon il est interprété comme plusieurs arguments différents.
2) Expansion ou développement de la ligne de commande.
Certains mots sont remplacés par des équivalents : les plus courants sont les remplacements des variables précédées du signe
$
par leur valeur et les caractères spéciaux tels que . .. - / ~
Lorsque l'on démarre le shell (terminal), une variable globale $PWD est initialisée et qui contient le répertoire courant (echo $PWD l'affiche à l'écran). Dès que l'on fait joujou avec cd, une seconde variable nommée $OLDPWD (visible avec echo $OLDPWD) est créée et ces 2 variables sont constamment mises à jour pendant la promenade dans les répertoires. Bash résout ainsi les caractères spéciaux :
.
signifie mettre à cet endroit la valeur de $PWD..
signifie mettre à cet endroit la valeur de $PWD en lui coupant sa dernière branche (=remonter dans l'arborescence).-
signifie signifie mettre à cet endroit la valeur de $OLDPWD/
signifie mettre à cet endroit la valeur du répertoire racine.~
signifie mettre à cet endroit la valeur du répertoire de l'utilisateur.3) Une fois l'expansion et le développement terminés, la ligne de commande ainsi construite est passée à la commande proprement dite qui ne voit jamais la version courte (celle que l'on entre au clavier), mais uniquement la version expansée.
Ces caractères spéciaux ne sont pas réservés à
cd
, mais utilisables par toutes les commandes. Par exemple, si l'on va dans le répertoire Documents avec
Code: Select all
cd Documents
ls .
(ou même ls
tout court puisque le paramètre par défaut est le répertoire courant) pour lister le contenu du répertoire courant.ls ..
pour lister le contenu du répertoire utilisateur, mais seulement parce qu'il est le parent du répertoire Document.ls ~
pour lister le contenu du répertoire utilisateur.ls /
pour lister le contenu du répertoire racine.Du fait que
ls
accepte de (vraies) options, il y a une petite nuance pour lister le répertoire précédent qui est de mettre un tilde devant :ls ~-
liste le répertoire précédent.alors que
ls -
renvoie une erreur car ls
attend une option (par exemple, -l
pour lister les noms longs).Cela fonctionne aussi pour des commandes bien plus évoluées. Si on se place au début du répertoire racine à l'ouverture du terminal avec :
cd /
et qu'on entre :
Code: Select all
find ~- -type f -name "*pdf"
find
acceptant des options, il a aussi besoin du tilde).Et tous ces mystères et bien d'autres sont révélés entre autres dans le manuel BASH de Debian en VF (même s'il s'agit de la version 5.1 alors que LM a la 5.2 mais vu que la compatibilité arrière est garantie, tout ce qui est valable pour la 5.1 l'est pour la 5.2). On y retrouve aussi l'aide des commandes intégrées (= qui font partie du shell proprement dit et ne sont pas exécutées à partir d'un binaire) telles que
cd
.https://manpages.debian.org/bullseye/ma ... .1.fr.html
et en remontant dans l'arborescence de cette page (c-à-d en cliquant sur le
manpages-fr
juste après Bullseye en haut à gauche), on accède à toutes les pages de manuel qui ont été francisées.-
- Level 2
- Posts: 59
- Joined: Mon Feb 05, 2024 5:38 pm
Re: Commande "cd" (change directory) et ses options cachées.
Merci.
Donc si j'ai bien compris sans argument de la commande "cd" succédant directement à "-" la ligne de commande dans le terminal est renvoyé à l’outil "bash".
J'ai aussi remarquer que certains argument disponible dans "man apt-get" par exemple étaient valable avec "apt" alors que "man apt" n'y mentionne aucunes options. Comment cela est possible.
(J'ai un soucis avec le dictionnaire fr de Mozilla. A chaque nouvelle session il active le dictionnaire anglais qui j'ai supprimé..)
Ta réponse est consistante merci et la documentation est bien aussi.
Donc si j'ai bien compris sans argument de la commande "cd" succédant directement à "-" la ligne de commande dans le terminal est renvoyé à l’outil "bash".
J'ai aussi remarquer que certains argument disponible dans "man apt-get" par exemple étaient valable avec "apt" alors que "man apt" n'y mentionne aucunes options. Comment cela est possible.
(J'ai un soucis avec le dictionnaire fr de Mozilla. A chaque nouvelle session il active le dictionnaire anglais qui j'ai supprimé..)
Ta réponse est consistante merci et la documentation est bien aussi.
Sujet en cours: