As diretrizes de sintaxe do utilitário POSIX (especificamente # 13) especificam que, para os utilitários que esperar que um nome de arquivo seja lido, -
significa entrada padrão e, para utilitários que esperam que um nome de arquivo seja gravado, -
significa saída padrão. Por exemplo, cat somefile -
copia o conteúdo de somefile
para sua saída padrão, seguido pelo que lê em sua entrada padrão.
Esta diretriz não se aplica ao comando cd
, pois não lê ou grava em um arquivo. cd
faz algo diferente: o argumento -
significa “o diretório anterior”. O comando cd -
é equivalente a cd "$OLDPWD" && pwd
. Esse comportamento é específico para o comando cd
e para comandos diretamente inspirados, como pushd
.
Observe que -
é um operando, não uma opção. Somente argumentos que começam com -
e não são apenas -
ou --
são opções. A principal implicação de ser um operando é que --
não afeta seu significado especial. Por exemplo, cd -- -P
muda para um subdiretório chamado -P
, mas cd -- -
é o mesmo que cd -
, ele não muda para um diretório chamado -
. Da mesma forma, cat -- -
não lê de um arquivo chamado -
, mas da entrada padrão.