Для &(или почти любого другого персонажа у вас есть две простые возможности).
Поместите одинарные кавычки вокруг всего этого: ' -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'
Спасибо. Думаю, я тоже пробовал этот формат, но я забыл убежать от амперсанда (как в вашем третьем примере). Когда я это сделал, это сработало.
RCinICT
5
Амперсанду нужно экранировать, но проблема, скорее всего, в том, что вы сталкиваетесь с лидером -, а не с амперсандом. Ведущий -заставил CD подумать, что вы передаете варианты. Вы можете обойти это, используя ./:
Амперсанду нужно экранировать, но проблема, скорее всего, в том, что вы сталкиваетесь с лидером
-
, а не с амперсандом. Ведущий-
заставил CD подумать, что вы передаете варианты. Вы можете обойти это, используя./
:источник
&
определенно проблема. Что касается-
, это зависит от оболочки. Zsh очень доволенcd
каталогом, начинающимся с-
. Однако Баш не является.