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

9

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

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

cd ISO&Emulator

результат:

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

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

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

    
задан Praveen Yadav 03.10.2017 в 19:40
источник

2 ответа

14

При использовании этого файла вы должны указать имя файла или каталога, содержащее специальные символы:

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

Или убежать (или цитата) только специальный символ:

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

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

cd ISOTab ↹
  • Недавно я нашел хороший ответ, предоставленный @MartinThornton, который описывает, как привязать PgUp и PgUp к Выберите конкретный результат из предложений по завершению .

  • См. также: Как сделать вкладка завершает добавление косой черты для символических ссылок каталога?

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

cd "$HOME/ISO&Emulator"
    
ответ дан pa4080 03.10.2017 в 19:45
источник
5

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

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

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

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

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

Это рассмотрело то, что было до него ( 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 завершена.
ответ дан Eliah Kagan 03.10.2017 в 22:04