В чем разница между командами «cd \» и «cd /» в терминале ubuntu?

10

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

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

ShailyGarg
источник

Ответы:

15

В 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

Конечно, с помощью quotes ( touch "a filename with spaces") можно добиться того же.

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

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

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

gertvdijk
источник
Для дальнейшего пояснения: в примере OP, cd \ экранирует конец строки (ключ Return). Это означает, что терминал все еще ожидает остальную часть команды. Приглашение >показывает, что оно ждет. Обычный запрос показывает текущий каталог, поэтому он отображается /после использования cd /. Это ~сокращение для вашего домашнего каталога, поэтому он показывает ~вместо /home/user.
Пэдди Ландау
1

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

alwe
источник
1

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

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

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

Алаа али
источник
СПАСИБО ОГРОМНОЕ :-) за эту немедленную помощь друзьям ...
ShailyGarg