Was ist der Unterschied zwischen den Befehlen "cd \" und "cd /" im Ubuntu-Terminal?

10

Beim Geben cd \erhalte ich das >Symbol, während ich cd /das ~Zeichen in meinem Verzeichnis in ändere /.

Auch lsBefehl zeigt mir Verzeichnisse wie dev, root, usrim Fall von cd /.

ShailyGarg
quelle

Antworten:

15

In Bash, Ihrer Shell, bezeichnet der \(Backslash) einen Escape-Charakter. Dies sollte in Fällen verwendet werden, in denen Sie Zeichen wie Leerzeichen, Anführungszeichen und andere Zeichen, die für die Shell-Syntax von Bedeutung sind, maskieren möchten, diese jedoch als Daten an den von Ihnen ausgeführten Befehl weitergeben möchten. Wenn Sie dies als letztes Zeichen in der Zeile haben, entkommen Sie der neuen Zeile und Bash wartet auf weitere Eingaben (mehrere Zeilen).

/ist nur ein Schrägstrich (dh Verzeichnis-Trennzeichen ). Mit genau dem /bedeutet die Wurzel, so ls /listet zum Beispiel der Inhalt der Wurzel auf. Durch Ändern des Arbeitsverzeichnisses /in ändert sich der Indikator in Ihrer Shell auch von ~(kurz für Home-Verzeichnis, z. B. /home/gert/) zu dem Verzeichnis, in dem Sie sich dann befinden ( /).


Demo

$ touch a filename with spaces
$ ls -l
total 0
-rw-rw-r-- 1 gert gert 0 Jul  1 02:33 a
-rw-rw-r-- 1 gert gert 0 Jul  1 02:33 filename
-rw-rw-r-- 1 gert gert 0 Jul  1 02:33 spaces
-rw-rw-r-- 1 gert gert 0 Jul  1 02:33 with

Oh nein, ich wollte eine Datei mit dem Namen erstellen a filename with spaces. Also, hier benutzen wir das \, um den Räumen zu entkommen. Dies verhindert, dass die Shell vier Argumente bereitstellt touch, sondern stattdessen ein einziges mit den enthaltenen Leerzeichen.

touch a\ filename\ with\ spaces

$ touch a\ filename\ with\ spaces
$ ls -al
total 24
drwxrwxr-x  2 gert gert  4096 Jul  1 02:35 .
drwxrwxr-x 55 gert gert 20480 Jul  1 02:33 ..
-rw-rw-r--  1 gert gert     0 Jul  1 02:35 a filename with spaces

Natürlich kann man mit quote ( touch "a filename with spaces") dasselbe erreichen.

Es wird auch verwendet, um Sonderzeichen wie Zeilenumbrüche zu deklarieren:

$ echo -e "bla\nnewline" # \n means a newline character
bla
newline

Wir brauchen die -eOption hier für echo, weil, wie die Manpage es ausdrückte : -e enable interpretation of backslash escapes.

gertvdijk
quelle
Zur weiteren Verdeutlichung: Im Beispiel des OP entgeht cd \ dem Zeilenende (der Eingabetaste). Dies bedeutet, dass das Terminal noch auf den Rest des Befehls wartet. Die Eingabeaufforderung >zeigt an, dass es wartet. Die übliche Eingabeaufforderung zeigt das aktuelle Verzeichnis an, weshalb es /nach der Verwendung angezeigt wird cd /. Das ~ist eine Abkürzung für Ihr Home-Verzeichnis, weshalb es ~stattdessen angezeigt wird /home/user.
Paddy Landau
1

Wenn Sie einen Backslash eingeben, können Sie Ihren Befehl in mehreren Zeilen eingeben. Dafür steht das Präfix '>'.

alwe
quelle
1

Das >Zeichen bedeutet, dass die Eingabeaufforderung darauf wartet, dass Sie weitere Eingaben machen, da der vorherige Befehl unvollständig war. Sie können dies mit allem reproduzieren, nicht nur cd. Geben whateveryouwant\Sie einfach ein und Sie werden bekommen >.

Der Teil, in dem Sie das sehen, ~bezeichnet das aktuelle Arbeitsverzeichnis. Um das Arbeitsverzeichnis zu ändern, verwenden Sie den Befehl cd, dh Verzeichnis (Ordner) ändern. Wenn Sie dies tun cd /, wird das Verzeichnis in geändert /. Wenn Sie dies tun cd /usr/bin, ändert sich dies zu /usr/binund so weiter.

lsist ein Befehl zum Auflisten der Inhalte im aktuellen Verzeichnis / Ordner. Wenn Sie dies tun cd /(dh Sie haben das Verzeichnis in geändert /), werden lsalle darin enthaltenen Dateien und Ordner aufgelistet. Wenn Sie das tun , cd /etc/und dann lswäre es Liste unabhängig von Dateien und Ordner , die in sind /etc/, und so weiter.

Alaa Ali
quelle
Vielen Dank :-) für diese sofortige Hilfe Freunde ...
ShailyGarg