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 de somefile
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 comando cd -
es equivalente a cd "$OLDPWD" && pwd
. Este comportamiento es específico del cd
comando y de comandos inspirados directamente como pushd
.
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
, pero cd -- -
es lo mismo que cd -
, no cambia a un directorio llamado -
. Del mismo modo, cat -- -
no lee de un archivo llamado -
sino de una entrada estándar.
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.