cd -
peut basculer entre le répertoire actuel et le répertoire précédent.
Il semble que j’ai déjà -
utilisé des arguments pour d’autres commandes, même si je ne me souviens pas si -
signifie la même chose que pour cd
.
J'ai trouvé que -
ça ne marche pas avec ls
.
Est -
utilisé uniquement avec cd?
cd
c’est une commande intégrée, et non une commande externe (elle n’aurait aucun moyen de fonctionner comme telle).cd -
est donc une fonctionnalité au niveau du shell.git checkout -
pour passer à la branche précédente-
utilisés avec d'autres éléments intégrés de la même manière?pushd
, oui. Sinon, la signification de "le répertoire précédent" n’est pas un défaut extrêmement utile.Réponses:
Les instructions relatives à la syntaxe de l'utilitaire POSIX (en particulier le numéro 13) spécifient que, pour les utilitaires qui attendent un nom de fichier à partir duquel lire,
-
signifie une entrée standard, et pour ceux qui attendent qu'un nom de fichier soit écrit,-
signifie une sortie standard. Par exemple,cat somefile -
copie le contenu desomefile
sur sa sortie standard, suivi de ce qu'il lit sur son entrée standard.Cette directive ne s'applique pas à la
cd
commande car elle ne lit ni n'écrit dans un fichier.cd
fait quelque chose de différent: l'argument-
signifie “le répertoire précédent”. La commandecd -
est équivalente àcd "$OLDPWD" && pwd
. Ce comportement est spécifique à lacd
commande et aux commandes directement inspirées telles quepushd
.Notez que
-
c'est un opérande, pas une option. Seuls les arguments qui commencent par-
et ne sont pas simplement-
ou--
sont des options. La principale implication d'être un opérande est que cela--
n'affecte pas sa signification particulière. Par exemple, lescd -- -P
modifications apportées à un sous-répertoire appelé-P
, maiscd -- -
identique àcd -
, ne sont pas remplacées par un répertoire appelé-
. De même,cat -- -
ne lit pas à partir d'un fichier appelé-
mais à partir d'une entrée standard.la source
-
est défini dans les instructions de syntaxe POSIX Utility en tant qu’entrée standard:Vous pouvez voir cette définition pour les utilitaires qui fonctionnent avec des fichiers en lecture ou en écriture.
cd
n'appartient pas à ces utilitaires, donc-
dans cd ne suit pas cette directive.De plus, POSIX a aussi
-
sa propre signification avec cd :la source
cd -
est en fait un raccourci pourcd "$OLDPWD" && pwd
, où$OLDPWD
est défini chaque fois que vous changez de répertoire pour le répertoire dans lequel vous étiez juste.Le traitement
-
dépend de l'application. Certaines applications utilisent-
pour signifierSTDIN
, par exemplegrep
,awk
D’autres applications peuvent utiliser
-
comme raccourci pour tout ce qu’elles choisissent, comme le précise la réponse de Michael, avecsu
,-
raccourci pour--login
la source
Bien que Michael mentionne que
su
et d' autres applications peuvent utiliser-
pour signifier ce qu'ils veulent (lire stdin est commun), Git utilise - t-
d'une manière similaire à la façon dont lecd
fait , pour changer les branches.la source
N'importe quel programme peut utiliser
-
comme argument, pour signifier ce qu'ils veulent. Un exemple courant est celuisu
qui utilise-
comme raccourci pour--login
. La seule convention à laquelle je puisse penser est que les programmes qui lisent des fichiers utilisent souvent le-
mot "lire à partir de stdin" , mais que cela dépend entièrement du programme.la source
Ajout de mes deux cents ici. J'utilise '-' pour indiquer à l'outil ps2pdf de lire à partir d'une entrée standard, comme plusieurs personnes l'ont suggéré précédemment:
Le one-liner ci-dessus crée une version pdf de la page de manuel de ls dans le répertoire en cours.
J'espère que quelqu'un le trouvera utile :).
la source
Comme l'a répondu gnouc ,
-
a sa propre signification danscd
.Cependant, vous pouvez reproduire le comportement de
-
dans d'autres programmes utilisant~-
. Par exemple:la source