Por que a linha de comando do Windows (cmd.exe) interpreta "cd \" como um comando válido?

1

Na linha de comando padrão do Windows (cmd.exe), pode-se usar o comando cd \ para ir para a raiz da unidade atual (cd seguido por uma barra invertida, sem espaço entre elas).

Com o PowerShell, temos a capacidade de definir aliases de seqüência de caracteres para cmdlets, mas o comando cd \ funciona muito bem no cmd.exe padrão e, portanto, não é um alias do PowerShell.

Isso é simplesmente um atalho interno para o uso mais padrão do comando cd, em que você especifica o diretório de destino como um parâmetro para o próprio comando (com um espaço entre o comando e o parâmetro conforme o esperado)?

Ladranas
fonte
11
cd \ funciona como dir \ ou qualquer comando \ porque os tokens serão divididos antes de `\` devido a ser um caractere inválido nos nomes de arquivos
phuclv
Obrigado @ LưuVĩnhPhúc pela resposta concisa, isso ajuda muito.
Ladranas
Cubro isso na minha resposta à pergunta anterior de Jonas Köritz sobre por que "cd .." funciona sem espaço . Não concordo plenamente com o comentário de LưuVĩnhPhúc porque uma barra invertida pode fazer parte do caminho relativo de um subdiretório. Em suma, esse comportamento tem a ver com o fato de que o comando "cd" é especial porque esse comando é reconhecido como um comando "interno" incorporado ao interpretador / shell da linha de comando.
TOOGAM 30/06

Respostas:

0

Com o PowerShell, temos a capacidade de definir aliases de seqüência de caracteres para cmdlets, mas o comando cd \ funciona muito bem no cmd.exe padrão e, portanto, não é um alias do PowerShell.

Só porque é um formulário padrão no CMD não significa que não seja um pseudônimo no PS. De fato, quase sempre o "comando padrão" no CMD, que também funciona no PS, é um alias. CD é um apelido para set-location.

Use o comando get-alias cdpara aprender este e outros truques surpreendentes!

POR QUE CD\ um comando válido não é uma pergunta que o Superusuário possa responder.

ATUALIZAR

O CMD não precisa carregar o PS para fazer nada.

Lendo seus comentários, estou tendo a ideia de que a primeira coisa que você precisa reconhecer é que o CD \ se comportou dessa maneira no CMD muito antes do PS aparecer, então esqueça o PS. Misturar PS nisso é trazer confusão. Você já esqueceu o PS? ( A resposta correta aqui é "sim") Bom.

Como Lưu Vĩnh Phúc menciona em seu comentário, as cadeias de comando podem ser escapadas usando vários métodos e por vários motivos. POR QUE eles fazem isso depende do analisador de comandos individual, do sistema host, do comando específico, das pessoas ou equipes ou organizações que desenvolveram tudo isso e, possivelmente, outros motivos também.

music2myear
fonte
Entendo que os aliases do Powershell existem para os chamados "comandos padrão" e que você pode listá-los da maneira descrita, embora eu tenha ficado mais curioso sobre como o prompt de comando padrão (cmd.exe) interpreta e analisa o comando "cd \ "quando você não carregou o PowerShell para começar (isto é, não é o caso de iniciar o cmd.exe e digitar o powershell para ir para um prompt do PS).
Ladranas
Algumas coisas no CMD.EXE são apenas idiossincrasias.
Hannu