В чем разница между & ldquo; cd \ & rdquo; и & ldquo; cd / & rdquo; Команды в терминале Ubuntu?

Получив cd \, я получаю символ >, а cd / меняет знак ~ в моем каталоге на /.

Также команда ls показывает мне каталоги, подобные dev, root, usr в случае cd /.

10
задан 1 July 2013 в 00:26

3 ответа

В Bash, вашей оболочке, \ (обратная косая черта) обозначает escape-символ. Это следует использовать в тех случаях, когда вы хотите экранировать символы , такие как пробелы, кавычки и другие символы, имеющие значение для синтаксиса оболочки, но вы хотите, чтобы они распространялись в качестве данных для выполняемой вами команды. Имея это как последний символ в строке, вы избегаете новой строки, и Bash ожидает дальнейшего ввода (несколько строк).

/ - это просто косая черта (имеется в виду разделитель каталогов ). Просто / это означает корень, поэтому, например, ls / перечисляет содержимое корня. Изменив рабочий каталог на /, индикатор в вашей оболочке также изменится с ~ (сокращение от домашнего каталога, например, /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

О нет, я собирался создать один файл с именем a filename with spaces. Итак, здесь мы используем \, чтобы избежать пробелов. Это мешает оболочке предоставить четыре аргумента 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

Конечно, используя кавычки (touch "a filename with spaces"), можно достичь того же.

Он также используется для объявления специальных символов, таких как символы новой строки:

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

Здесь нам нужна опция -e для echo, потому что, как написано на странице руководства: -e enable interpretation of backslash escapes.

0
ответ дан 1 July 2013 в 00:26

Если вы введете обратную косую черту, вы можете ввести свою команду в несколько строк. Это то, что означает префикс «>».

0
ответ дан 1 July 2013 в 00:26

Знак > означает, что приглашение ожидает ввода дополнительных данных, поскольку предыдущая команда была неполной. Вы можете воспроизвести это с чем угодно, не только cd. Просто введите whateveryouwant\, и вы получите >.

Часть, в которой вы видите ~, обозначает текущий рабочий каталог. Чтобы изменить рабочий каталог, вы используете команду cd, что означает изменение каталога (папки). Поэтому, если вы сделаете cd /, он изменит каталог на /. Если вы сделаете cd /usr/bin, он изменится на /usr/bin и т. Д.

ls - это команда для просмотра списка текущего каталога / папки. Итак, если вы сделаете cd / (имеется в виду, что вы изменили каталог на /), ls выведет список всех файлов и папок в нем. Если вы выполните cd /etc/, а затем ls, в нем будут перечислены все файлы и папки, которые есть в /etc/, и т. Д.

0
ответ дан 1 July 2013 в 00:26

Другие вопросы по тегам:

Похожие вопросы: