Як уникнути імені підкаталогу з вказаним ampersand?


9

Запуск корншелл та намагання перейти до дерева каталогів. Хочете записатись на підкаталог з назвою наступним чином:

 -3ab_&_-3dc.img

Моє запитання: ЯК мені потрібно уникати амперсанда в цьому імені? Я без успіху спробував різні комбінації подвійних котирувань та зворотних нахилів.

Відповіді:


11

Для &(або майже будь-якого іншого персонажа) у вас є дві прості можливості.

  • Поставте одинарні лапки навколо всього: ' -3ab_&_-3dc.img'
  • Поставте зворотний нахил перед кожним клопітким символом: -3ab_\&_-3dc.img

Є два винятки:

  • Метод єдиної цитати не працює для однієї цитати. Зворотна косоокість не є особливою в рамках однієї лапки, тому ви також не можете безпосередньо використовувати її. Що ви можете зробити, це закінчити рядок з одним котируванням, негайно скористайтесь зворотною косою рисою плюс одинарна цитата та перезапустіть єдину цитату. Так, наприклад, якщо ім'я директорії foo'bar\qux: cd 'foo'\''bar\qux'. Ви можете запам’ятати його таким чином: всередині одиничних цитат '\''ви отримуєте одну пропозицію.
  • Метод зворотної косої риски не працює для нових рядків: зворотний косий рядок-новий рядок просто ігнорується. Потрібно розмістити одинарні лапки навколо нового рядка.

Ви також можете використовувати подвійні лапки, але тоді перед деякими символами потрібно поставити звороту косу рису. Одиночні цитати більш прості.

Тут є додаткова складність, яка полягає в тому, що назва каталогу починається з тире. Цей символ повідомляє cdкоманді (як і майже в кожній команді), що наступна опція. Дефіс не особливий для оболонки, лише для команди, тому лапки не впливатимуть на нього. У вас є два способи передачі аргументу, який починається з тире до команди, не інтерпретуючи його як варіант:

  • Знайдіть інший спосіб висловити цей аргумент. Для імені файлу додавання ./попереду все ще позначає той самий файл.
  • Поставте аргумент --раніше. Це говорить команді перестати шукати варіанти.

Ось ось кілька способів змінити цей підкаталог:

cd -- '-3ab_&_-3dc.img'
cd -- -3ab_\&_-3dc.img
cd ./-3ab_\&_-3dc.img
cd './-3ab_&_-3dc.img'

Дякую. Думав, що я також спробував цей формат, але я забув уникнути амперсанду (як у вашому 3-му прикладі). Коли я це зробив, це спрацювало.
RCinICT

5

Потрібно уникати амперсанд, але проблема, яка виникає у вас, швидше за все -, не з амперсандою. Ведучий -змусив компакт-диск подумати, що ви передаєте варіанти. Ви можете обійти це за допомогою ./:

cd './-3ab_&_-3dc.img'

Це &, безумовно, проблема. Що стосується -, це залежить від оболонки. Zsh цілком задоволений cdкаталогом, починаючи з а -. Однак баш - ні.
Патрік

Дякую. Думав, що я також спробував цей формат, але я забув уникнути амперсанду. Коли я це зробив, це спрацювало.
RCinICT
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.