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?

cdes 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 desomefilea su salida estándar, seguido de lo que lee en su entrada estándar.Esta directriz no se aplica al
cdcomando ya que no lee ni escribe en un archivo.cdhace algo diferente: el argumento-significa "el directorio anterior". El comandocd -es equivalente acd "$OLDPWD" && pwd. Este comportamiento es específico delcdcomando 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 -- -Pcambia 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.
cdno 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$OLDPWDse 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,awkOtras aplicaciones pueden usar
-como abreviatura para cualquier cosa que elijan, como especifica la respuesta de Michael, consu,-es abreviatura para--loginfuente
Aunque Michael menciona que
suy 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 locdhace , 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