cd -
puede cambiar entre el directorio actual y el directorio anterior.
Parece que lo he visto -
usado como argumentos para otros comandos antes, aunque no recuerdo si -
significa lo mismo que con cd
.
Descubrí que eso -
no funciona ls
.
¿Se -
usa solo con cd?
cd
es un comando incorporado, no un comando externo (ni tendría ninguna forma de funcionar como tal).cd -
es, por lo tanto, una característica de nivel de shell.git checkout -
para cambiar a la rama anterior-
usan con otras construcciones de la misma manera?pushd
, sí. De lo contrario, el significado de "el directorio anterior" no es un valor predeterminado terriblemente útil.Respuestas:
Las pautas de sintaxis de la utilidad POSIX (específicamente # 13) especifican que para las utilidades que esperan leer un nombre de archivo,
-
significa entrada estándar, y para las utilidades que esperan que se escriba un nombre de archivo,-
significa salida estándar. Por ejemplo,cat somefile -
copia el contenido desomefile
a su salida estándar, seguido de lo que lee en su entrada estándar.Esta directriz no se aplica al
cd
comando ya que no lee ni escribe en un archivo.cd
hace algo diferente: el argumento-
significa "el directorio anterior". El comandocd -
es equivalente acd "$OLDPWD" && pwd
. Este comportamiento es específico delcd
comando y de comandos inspirados directamente comopushd
.Tenga en cuenta que
-
es un operando, no una opción. Solo los argumentos que comienzan con-
y no son justos-
o--
son opciones. La principal implicación de ser un operando es que--
no afecta su significado especial. Por ejemplo,cd -- -P
cambia a un subdirectorio llamado-P
, perocd -- -
es lo mismo quecd -
, no cambia a un directorio llamado-
. Del mismo modo,cat -- -
no lee de un archivo llamado-
sino de una entrada estándar.fuente
-
se define en las Directrices de sintaxis de la utilidad POSIX como entrada estándar:Puede ver esta definición para las utilidades que operan con archivos para leer o escribir.
cd
no pertenece a estas utilidades, por lo que-
en cd no sigue esta directriz.Además, POSIX también
-
tiene un significado propio con cd :fuente
cd -
en realidad es la abreviatura decd "$OLDPWD" && pwd
, donde$OLDPWD
se establece cada vez que cambia los directorios al directorio en el que estaba.El manejo de
-
depende de la aplicación. Algunas aplicaciones usan-
para significarSTDIN
, por ejemplogrep
,awk
Otras aplicaciones pueden usar
-
como abreviatura para cualquier cosa que elijan, como especifica la respuesta de Michael, consu
,-
es abreviatura para--login
fuente
Aunque Michael menciona que
su
y otras aplicaciones pueden usarse-
para significar lo que quieran (leer de stdin es común), Git sí lo hace-
de una manera similar a como locd
hace , para cambiar ramas.fuente
Cualquier programa puede usarse
-
como argumento, para significar lo que quieran. Un ejemplo común essu
, que utiliza-
como abreviatura de--login
. La única convención en la que puedo pensar es que los programas que leen de archivos con frecuencia-
significan "leer de stdin" , pero depende completamente del programafuente
Agregando mis dos centavos aquí. Utilizo '-' para decirle a la herramienta ps2pdf que lea de la entrada estándar, como varias personas han sugerido anteriormente:
El one-liner anterior crea una versión en pdf de la página man para ls en el directorio actual.
Espero que alguien lo encuentre útil :).
fuente
Como respondió gnouc ,
-
tiene su propio significado encd
.Sin embargo, puede replicar el comportamiento de
-
otros programas mediante~-
. Por ejemplo:fuente