с использованием '&' в имени каталога [дубликат]

У меня есть имя каталога с ISO и эмулятором , содержащим некоторые важные файлы. и этот каталог находится в другом разделе, а раздел не отображается в моем FileManager (Nautilus). поэтому я монтирую свой раздел и получаю доступ к нему с терминала, но я не могу войти в каталог из-за его имени .

когда я пытался сменить каталог:

cd ISO&Emulator

результат:

[1] 1635
bash: Emulator: command not found
bash: cd: ISO: No such file or directory
[1]+  Exit 1

он принимает имя каталога в качестве команды. какие способы доступа к этому каталогу с терминала?

как это исправить?

9
задан 25 November 2017 в 10:05

2 ответа

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

cd 'ISO&Emulator'
cd "ISO&Emulator"

Или экранировать (или заключать в кавычки) только специальный символ:

cd ISO\&Emulator    
cd ISO'&'Emulator  
cd ISO"&"Emulator

В большинстве случаев вы можно использовать функцию автозаполнения:

cd ISOTab ↹

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

cd "$HOME/ISO&Emulator"
14
ответ дан 23 November 2019 в 04:49

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

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

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

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


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

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

  1. [1] 1635 сообщил, что фоновое задание было запущено (оно было задание 1, и его идентификатор процесса оказался 1635).
  2. bash: Эмулятор: команда не найдена сообщил, что не было команды с именем Эмулятор .
  3. Я ssage bash: cd: ISO: Нет такого файла или каталога , полученного из фонового задания, чтобы сообщить, что не было каталога ISO , который нужно изменить.
  4. [1] + Exit 1 сообщил работа 1. завершена.
5
ответ дан 23 November 2019 в 04:49

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

Похожие вопросы: