ubuntu 终端中的“cd \”和“cd /”命令有什么区别?

Sha*_*wal 10 command-line

在给予时cd \,我得到了>符号,同时cd /~目录中的符号更改为/.

同时ls命令显示我目录,如dev, root, usr在案件cd /

ger*_*ijk 15

在 Bash(你的 shell)中,\(反斜杠)表示转义字符。这应该在您想要转义空格、引号和其他对 shell 语法有意义的字符的情况下使用,但您希望将其作为数据传播到您正在运行的命令。通过将此作为行上的最后一个字符,您可以转义换行符,而 Bash 正在等待进一步的输入(多行)。

/只是一个正斜杠(意思是目录分隔符)。仅/这意味着根,因此例如ls /列出根的内容。通过将工作目录更改为/,shell 中的指示符也会从~(主目录的缩写,例如/home/gert/)更改为您所在的目录 ( /)。


演示

$ 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
Run Code Online (Sandbox Code Playgroud)

哦不,我打算创建一个名为a filename with spaces. 所以,这里我们使用\来转义空格。这可以防止 shell 向 提供四个参数touch,而是提供一个包含空格的参数。

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
Run Code Online (Sandbox Code Playgroud)

当然,通过使用引号 ( touch "a filename with spaces") 可以达到同样的目的。

它还用于声明特殊字符,如换行符:

$ echo -e "bla\nnewline" # \n means a newline character
bla
newline
Run Code Online (Sandbox Code Playgroud)

我们需要-e这里的选项echo,因为如手册页所说的那样:-e enable interpretation of backslash escapes