Используя '&' в имени каталога
У меня есть имя каталога с 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 закончена.