Я вижу одну обратную косую черту, но на самом деле есть две обратные косые черты!

Кто-нибудь может помочь мне понять эту странную проблему?

Я пытался переименовать очень длинный список папок.

Я пошел в родительский каталог и перечислил все папки для переименования в текстовом файле:

find PARENT_FOLDER/ -type d -name *Images > ~/Desktop/directory_listing

Я открыл файл списка в LibreOffice Calc, изменил то, что мне нужно было изменить, использовал функцию "сцепления", чтобы создать команду для каждой папки для переименования и т. Д.

Когда я вернулся в CLI и вставил свои команды из Calc, mv не может указать, что не может найти папки для переименования. Ну, папки на самом деле существуют, но после дальнейших исследований я обнаружил, что вставленный текст из Calc показывает 1 обратную реакцию на экране, но на самом деле содержит 2! Итак, текст, который я вставляю в bash, выглядит так:

mv Test\ Folder-1-Images TestFolder1

Но на самом деле это интерпретирует:

mv Test\\ Folder-1-Images TestFolder1

Я подтвердил это с помощью gedit, где моя командная строка в тексте показывает 1 обратную косую черту, но если я скопирую и вставлю ее в поле поиска в gedit, она отобразит 2!

Зачем? И как это исправить / предотвратить?

1 ответ

В линукс оболочках \ это особый характер

Он говорит интерпретатору интерпретировать следующий символ буквально

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

В других ситуациях \ с последующим нормальным символом рассматривается как escape sequence это дает комбинацию специального использования. Например, \n принимает указатель на новую строку.

Смотрите http://linuxcommand.org/wss0060.php для других примеров.

Также см. http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_03_03.html для получения дополнительных объяснений.

Надеюсь это поможет

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