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.