Нужна помощь в изучении Linux + Cert

Пользователь (Bob) случайно создает подкаталог (bobsdir) в своем домашнем каталоге и пытается удалить его, но когда он использует команду «rmdir \ bobsfile», он получает «No Such Directory».

Ответ на вопрос: rmdir ~ Bob / \ bobsdir

Я получаю «~», такое же, как / home, но я не могу найти в своих учебных материалах, что такое «\», и почему они работают в этом случае. Я человек, который должен знать «почему» о вещах, поэтому любая помощь будет принята с благодарностью.

2
задан 10 May 2013 в 21:58

3 ответа

http://aiotestking.wordpress.com/category/linux/lpic-1/page/7/

Похоже, это точный вопрос, без дополнительной косой черты в ответ.

Однако, при тестировании, это работает в любом случае ... так что я осмотрелся еще немного и обнаружил, что еще одна версия выбирает ответ в виде двойной обратной косой черты:

http: // studyhat .blogspot.com / 2012/08 / linux-question-answer.html

Я бы сказал, что вопрос мог проскользнуть мимо редакторов или репозиториев на различных сайтах или в книгах, но мне интересно Посмотрите, есть ли у кого-то еще мнение относительно того, что означают или на что способны дополнительные обратные косые черты после спецификации домашнего каталога.

Кажется, есть несколько способов сделать это, но я не уверен, почему ... и один не работает вообще (но кажется, во многих местах обозначается как «правильный» метод - rmdir ~user/\\userdir ]).

0
ответ дан 10 May 2013 в 21:58

Я думаю, что Вы исказили вопрос, потому что, как указано, он и ответ действительно не соответствует друг другу.

Обратная косая черта - \-используется в качестве ключа "Escape" в большинстве оболочек Linux и многих языках. То, что это означает, - то, что это или начинает специальный код или аннулирует специальный символ.

Например, символ $ имеет особое значение, показывая переменное расширение, в оболочке. Но что, если Вы хотите назвать файл "$money"? Вы не можете только коснуться $money, потому что оболочка будет думать, что Вы хотите развернуть переменную, названную "деньгами". Так, Вы вместо этого затрагиваете \$money, и теперь оболочка выйдет из $, рассматривая его как буквенный символ вместо как переменное означающее.

root@banshee:/tmp# touch $money
touch: missing file operand
Try `touch --help' for more information.
root@banshee:/tmp# touch \$money
root@banshee:/tmp# ls -l | grep money
-rw-r--r-- 1 root    root       0 May 10 21:31 $money
root@banshee:/tmp# rm $money
rm: missing operand
Try `rm --help' for more information.
root@banshee:/tmp# rm \$money
root@banshee:/tmp# ls -l | grep money
root@banshee:/tmp# 

Можно также использовать символ ESC для "nerf" пространство. Обычно, если у Вас будут пробелы в аргументе, то оболочка интерпретирует его как отдельные ключевые слова, а не единственное ключевое слово с пространством в нем. Но если Вы выйдете из пространства, то оболочка интерпретирует его как единственное ключевое слово с пространством. Как это:

root@banshee:/tmp# touch bobs money
root@banshee:/tmp# ls | egrep '(bob|money)'
bobs
money
root@banshee:/tmp# rm bobs ; rm money
root@banshee:/tmp# touch bobs\ money
root@banshee:/tmp# ls | egrep '(bob|money)'
bobs money

Символ ESC также выходит из себя. Так, если бы Вы хотели создать файл, названный "\myfile", то необходимо было бы сделать это:

root@banshee:/tmp# touch \\myfile
You have new mail in /var/mail/root
root@banshee:/tmp# ls -l | grep myfile
-rw-r--r-- 1 root    root       0 May 10 21:25 \myfile

И если бы Вы затем хотите удалить \myfile, Вы снова вышли бы из обратной косой черты со второй обратной косой чертой, точно так же, как Вы сделали при создании его:

root@banshee:/tmp# rm \\myfile
root@banshee:/tmp# ls -l | grep myfile
root@banshee:/tmp# 

Поочередно, Вы могли перенести имя файла в одинарные кавычки. Одинарные кавычки говорят оболочке, что Вы не хотите, чтобы она обработала пробелы в кавычках как значение отдельных ключевых слов, И что Вы не хотите, чтобы переменная или подстановочные расширения произошли в кавычках:

root@banshee:/tmp# ls -l | grep myfile
-rw-r--r-- 1 root    root       0 May 10 21:28 \myfile
root@banshee:/tmp# rm '\myfile'
root@banshee:/tmp# ls -l | grep myfile

Отметьте импликацию здесь: если Вы на самом деле захотите сделать имя файла, которое включает одинарные кавычки, перенесенные это, то необходимо будет использовать символ ESC для выхода из одинарных кавычек!

root@banshee:/tmp# touch 'myfile'
root@banshee:/tmp# ls -l | grep myfile
-rw-r--r-- 1 root    root       0 May 10 21:29 myfile
root@banshee:/tmp# rm myfile
root@banshee:/tmp# touch \'myfile\'
root@banshee:/tmp# ls -l | grep myfile
-rw-r--r-- 1 root    root       0 May 10 21:29 'myfile'

Надежда, которая помогает сделать это более ясным.

2
ответ дан 10 May 2013 в 21:58

Explaination на том, почему использовать ~Bob/

Обычно на Вашем собственном компьютере Linux Вы используете ~/ для Вашего Корневого каталога. Причина этого состоит в том, что мы обычно предполагаем, что Вы зарегистрированы как пользователь, которого Вы используете и вводите ~/ возьмет Вас в дом пользователя, Вы зарегистрированы как.

Так некоторое использование ситуаций ~/ или просто ~ не будет работать.

  1. Зарегистрированный как корень
  2. Зарегистрированный как другой пользователь

В этом случае мы можем использовать ~Bob определение домашней папки пользователя "Bob"

Это объясняет, почему использовать ту форму домашней папки

0
ответ дан 10 May 2013 в 21:58

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

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