Используя '&' в имени каталога
У меня есть имя каталога с ISO и эмулятором, имеющим некоторые важные файлы. и этот каталог находится в другом разделе, и раздел не отображается в моем FileManager(Nautilus). поэтому я монтирую свой раздел и получаю к нему доступ из терминала, но не могу попасть в каталог из-за его имени.
когда я пытался изменить каталог:
cd ISO&Emulator
результат:
[1] 1635
bash: Emulator: command not found
bash: cd: ISO: No such file or directory
[1]+ Exit 1
его имя каталога в качестве команды. какие-либо способы доступа к этому каталогу из терминала?
как это исправить?
2 ответа
При использовании вы должны указать имя файла или каталога, которые содержат специальные символы:
cd 'ISO&Emulator'
cd "ISO&Emulator"
Или экранировать (или цитировать) только специальный символ:
cd ISO\&Emulator
cd ISO'&'Emulator
cd ISO"&"Emulator
В большинстве случаев вы можете использовать функцию автозаполнения:
cd вкладка ISO ↹
Недавно я нашел хороший ответ, предоставленный @MartinThornton, который описывает, как связать PgUp и PgUp, чтобы выбрать конкретный результат из предложений по завершению.
См. Также: Как сделать, чтобы завершение табуляции добавляло косую черту для символьных ссылок каталога?
В отличие от одинарных кавычек, двойные кавычки применимы, когда имя содержит переменную:
cd "$HOME/ISO&Emulator"
Поскольку это не система только для командной строки и установлена графическая среда рабочего стола, вы должны знать о другом способе использования файлов и каталогов с терминала, имена которых требуют кавычек или которые неудобны для ввода: перетащите значок папки из Ваш файловый браузер в окне терминала. В вашей системе файловый браузер - Nautilus, но он работает практически со всеми файловыми браузерами. При этом будет вставлен полный путь к файлу или каталогу, значок которого вы перетаскивали с применением правильных кавычек.
Это не полная замена для того, чтобы знать, как самим указывать имена путей (или, фактически, любой текст), используя методы, описанные в PA4080, но это чрезвычайно полезно, может сэкономить вам много времени, и если вам неудобно, когда и как цитировать, используя \ в большинстве графических эмуляторов терминалов это форма цитирования, которая автоматически применяется, когда вы делаете это, поэтому она продемонстрирует это вам. (В некоторых, '' используются.)
Если вы не изменили его, оболочкой, которую вы получаете, открывая окно терминала или входя в систему на виртуальной консоли, является Bash. Целью цитирования в любой оболочке является указание оболочке не обрабатывать определенные символы специально. Вы можете прочитать 3.1.2 Цитирование в справочном руководстве Bash.
Когда вы цитируете вручную, я предлагаю вам предпочесть '' (одинарные кавычки), так как это самый простой и легкий способ заключать в кавычки более нескольких символов текста. Если то, что вы хотите процитировать, само по себе не содержит ' символ, то вы всегда можете заключить его в одинарные кавычки, потому что единственный символ с особым значением после ' начинается цитирование последующего ' это заканчивается цитирование.
Наконец, вам может быть интересно, что случилось, когда у вас не было кавычек & в вашей команде.
Это относилось к тому, что было до этого (cd ISO) как одна команда, выполнял ее асинхронно в фоновом режиме и обрабатывал то, что последовало за ней (Emulator) в качестве второй команды для запуска (на переднем плане, так как он не имел & после этого).
[1] 1635сообщил, что фоновое задание запущено (это было задание 1, и его идентификатор процесса оказался равным 1635).bash: Emulator: command not foundсообщил, что не было вызвано командыEmulator,- Сообщение
bash: cd: ISO: No such file or directoryприбыл с фоновой работы, чтобы сообщить, что не былоISOкаталог для изменения. [1]+ Exit 1заявленная работа 1 закончена.