Я вижу одну обратную косую черту, но на самом деле есть две обратные косые черты!
Кто-нибудь может помочь мне понять эту странную проблему?
Я пытался переименовать очень длинный список папок.
Я пошел в родительский каталог и перечислил все папки для переименования в текстовом файле:
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 для получения дополнительных объяснений.
Надеюсь это поможет