Используя '&' в имени каталога

У меня есть имя каталога с 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  

В отличие от одинарных кавычек, двойные кавычки применимы, когда имя содержит переменную:

cd "$HOME/ISO&Emulator"

Поскольку это не система только для командной строки и установлена ​​графическая среда рабочего стола, вы должны знать о другом способе использования файлов и каталогов с терминала, имена которых требуют кавычек или которые неудобны для ввода: перетащите значок папки из Ваш файловый браузер в окне терминала. В вашей системе файловый браузер - Nautilus, но он работает практически со всеми файловыми браузерами. При этом будет вставлен полный путь к файлу или каталогу, значок которого вы перетаскивали с применением правильных кавычек.

Это не полная замена для того, чтобы знать, как самим указывать имена путей (или, фактически, любой текст), используя методы, описанные в PA4080, но это чрезвычайно полезно, может сэкономить вам много времени, и если вам неудобно, когда и как цитировать, используя \ в большинстве графических эмуляторов терминалов это форма цитирования, которая автоматически применяется, когда вы делаете это, поэтому она продемонстрирует это вам. (В некоторых, '' используются.)

Если вы не изменили его, оболочкой, которую вы получаете, открывая окно терминала или входя в систему на виртуальной консоли, является Bash. Целью цитирования в любой оболочке является указание оболочке не обрабатывать определенные символы специально. Вы можете прочитать 3.1.2 Цитирование в справочном руководстве Bash.

Когда вы цитируете вручную, я предлагаю вам предпочесть '' (одинарные кавычки), так как это самый простой и легкий способ заключать в кавычки более нескольких символов текста. Если то, что вы хотите процитировать, само по себе не содержит ' символ, то вы всегда можете заключить его в одинарные кавычки, потому что единственный символ с особым значением после ' начинается цитирование последующего ' это заканчивается цитирование.


Наконец, вам может быть интересно, что случилось, когда у вас не было кавычек & в вашей команде.

Это относилось к тому, что было до этого (cd ISO) как одна команда, выполнял ее асинхронно в фоновом режиме и обрабатывал то, что последовало за ней (Emulator) в качестве второй команды для запуска (на переднем плане, так как он не имел & после этого).

  1. [1] 1635 сообщил, что фоновое задание запущено (это было задание 1, и его идентификатор процесса оказался равным 1635).
  2. bash: Emulator: command not found сообщил, что не было вызвано команды Emulator,
  3. Сообщение bash: cd: ISO: No such file or directory прибыл с фоновой работы, чтобы сообщить, что не было ISO каталог для изменения.
  4. [1]+ Exit 1 заявленная работа 1 закончена.
Другие вопросы по тегам