Warum interpretiert die Windows-Befehlszeile (cmd.exe) "cd \" als gültigen Befehl?


1

Über die Windows-Standardbefehlszeile (cmd.exe) können Sie mit dem Befehl cd \ zum Stammverzeichnis des aktuellen Laufwerks springen (cd gefolgt von einem Backslash ohne Leerzeichen dazwischen).

Mit PowerShell können wir String-Aliase für Cmdlets definieren, aber der Befehl cd \ funktioniert gut mit der Standard-cmd.exe und ist daher kein PowerShell-Alias.

Ist dies einfach eine integrierte Verknüpfung zur Standardverwendung des Befehls cd, bei der Sie das Zielverzeichnis als Parameter für den Befehl selbst angeben (mit einem Leerzeichen zwischen dem Befehl und dem Parameter, wie erwartet)?


1
cd \ funktioniert genau wie dir \ oder anycommand \, da die Token vor `\` aufgeteilt werden, da es sich um ein ungültiges Zeichen in Dateinamen handelt
phuclv

Vielen Dank an LưuVĩnhPhúc für die prägnante Antwort, dies hilft sehr.
Ladranas

Ich beschreibe dies in meiner Antwort auf Jonas Köritzs frühere Frage, warum "cd .." ohne Leerzeichen funktioniert . Ich stimme dem Kommentar von LưuVĩnhPhúc nicht vollständig zu, da ein Backslash Teil des relativen Pfads eines Unterverzeichnisses sein kann. Kurz gesagt, dieses Verhalten hat damit zu tun, dass der Befehl "cd" etwas Besonderes ist, da dieser Befehl als "interner" Befehl erkannt wird, der in den Befehlszeileninterpreter / die Befehlszeilen-Shell integriert ist.
TOOGAM

Antworten:


0

Mit PowerShell können wir String-Aliase für Cmdlets definieren, aber der Befehl cd \ funktioniert gut mit der Standard-cmd.exe und ist daher kein PowerShell-Alias.

Nur weil es in CMD ein Standardformular ist, heißt das nicht, dass es in PS kein Alias ​​ist. Tatsächlich ist fast jeder "Standardbefehl" in CMD, der auch in PS funktioniert, ein Alias. CD ist ein Alias ​​für set-location.

Verwenden Sie den Befehl get-alias cd, um diese und andere überraschende Tricks zu lernen!

WARUM CD\ ein gültiger Befehl ist, kann SuperUser nicht beantworten.

AKTUALISIEREN

CMD muss kein PS laden, um etwas zu tun.

Wenn Sie Ihre Kommentare lesen, kommt mir die Idee, dass Sie als Erstes erkennen müssen, dass sich CD \ in CMD lange vor dem Erscheinen von PS so verhalten hat. Vergessen Sie also PS. PS durcheinander zu bringen, bedeutet Verwirrung zu stiften. Hast du PS schon vergessen? ( Die richtige Antwort lautet hier "Ja") Gut.

Wie Lưu Vĩnh Phúc in seinem Kommentar erwähnt, können Befehlszeichenfolgen mit verschiedenen Methoden und aus verschiedenen Gründen maskiert werden. WARUM sie dies tun, ist Sache des einzelnen Befehlsparsers, des Hostsystems, des spezifischen Befehls, der Personen oder Teams oder Organisationen, die all dies entwickelt haben, und möglicherweise auch anderer Gründe.


Ich verstehe, dass Powershell-Aliase für sogenannte "Standardbefehle" vorhanden sind und dass Sie die Aliase in der beschriebenen Weise auflisten können, obwohl ich neugieriger war, wie die Standard-Eingabeaufforderung (cmd.exe) den Befehl "cd" interpretiert und analysiert \ "wenn Sie PowerShell noch nicht geladen haben (dh wenn Sie nicht cmd.exe starten und dann Powershell eingeben, um in eine PS-Eingabeaufforderung zu springen).
Ladranas

Einige Dinge in CMD.EXE sind nur einfache Eigenheiten.
Hannu
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.