Diese Frage hat hier bereits eine Antwort:
cd..
und cd ..
.
Im Grunde machen sie dasselbe. Aber wer und warum hat daran gedacht, es mit oder ohne Raum zu verändern? Warum ist zwischen CD und zwei Punkten kein Platz?
C:\Windows\System32>cd..
und
[bla/www/something/something]#cd ..
Sie sind beide gleich. Warum hat einer Platz und ein anderer nicht?
BEARBEITEN:
Es ist kein Duplikat dieser Frage:
command-line
command-history
Josip Ivic
quelle
quelle
Antworten:
Auf UNIX-ähnlichen Systemen
sh
trennt die Shell das, was Sie eingeben, in Wörter und übergibt jedes Wort separat als Argument an das Programm oder den eingebauten Befehl, auf den das erste Wort verweist (der Befehlsname selbst ist das nullte Argument). Vereinfacht gesagt, werden Wörter auf jedem Feld aufgeteilt. Somit,ist zwei wörter aber
ist nur eine. Unter
cd..
UNIX gibt es keinen benannten Befehl , daher schlägt letzterer fehl. Ersterer ruftcd
mit dem einzigen Argument auf..
und ändert ein Verzeichnis nach oben. Für ein komplizierteres Beispielwird in die vier Wörter geparst
echo
,foo
,bar
,baz
, undquux
die dann zu dem übergebenenecho
Befehl als Argumente. Die Menge an Whitespace dazwischen geht verloren undecho
wird gedrucktda es immer ein einzelnes Leerzeichen zwischen jedem Argument einfügt.
Unter Windows, DOS und CP / M
COMMAND.COM
analysiert die Shell den Befehlsnamen als das längste Präfix dessen, was Sie eingegeben haben, bis ein Leerzeichen oder eine Interpunktion erreicht ist (dies ist ebenfalls eine Vereinfachung). Dann wird der Befehl mit der gesamten Zeile ausgeführt, die Sie als Argument eingegeben haben. Ein Zeiger zeigt an, wo der Befehlsinterpreter glaubt, dass der Befehlsname beendet ist.COMMAND.COM
teilt die Kommandozeile nicht in Argumente auf, wenn das Programm dies wünscht, muss es dies selbst tun.Zum Beispiel
cd ..
entscheidet in der Shell, dass diescd
der Befehlsname ist, der zufällig ein eingebauter Befehl ist. Der eingebaute Befehl wird mit dem Argument string ausgeführtcd ..
und der Information, dass die ersten beiden Zeichen den Befehlsnamen bilden. In ähnlicher Weisecd..
entscheidet die Shell, dass diescd
der Befehlsname ist und..
als Operandenname übergeben wird. Dercd
Befehl überspringt den Befehlsnamen, entfernt den Rest aus dem Leerraum und versucht dann, in das angegebene Verzeichnis zu wechseln.Ähnlich für,
Die Shell ruft den
echo
Befehl mitecho foo bar baz quux
den Argumenten auf und gibt ihnecho
ordnungsgemäß ausDies ist der Grund, warum es
cd..
unter DOS, aber nicht unter UNIX funktioniert.Beide Entwürfe haben ihre Vor- und Nachteile, obwohl der UNIX-Stil fast alle Systeme übernommen hat, da es viel einfacher ist, sie zu programmieren, da nur ein Programm (die Shell) wissen muss, wie man eine Befehlszeile in Wörter aufteilt, im Gegensatz zu jedem anderen Programm mit seiner eigenen hausgemachten Lösung.
quelle
On Windows, DOS and CP/M, the shell COMMAND.COM parses the command name
das letzte Windows-Betriebssystem, unter dem command.com verwendet wurde, Windows 98 war? In Ihrer Erklärung zu Windows sind Sie ungefähr 18 Jahre veraltet. Windows XP hatte sowohl cmd.exe als auch command.com, aber Sie sollten cmd.exe verwenden. Windows 7 verfügt überhaupt nicht über command.com. Und jetzt werden Computer mit Windows 10 verkauft. Sie sehen nicht einmal mehr jemanden, der Windows 98 verwendet. Einige in Indien verwenden immer noch XP, da es weniger RAM als 7 benötigt. Seit Jahren verwendet fast niemand mehr Win98.cmd.exe
. Oder glauben Sie, dass sich die Art und Weise, wie ein Prozess seine Befehlszeile erhält, in den letzten Jahren geändert hat?cd..
. Mein Hauptpunkt war lediglich der Name der Datei, die heutzutage verwendet wird.