На этот вопрос уже есть ответ здесь :
Когда я хочу перейти в каталоги, в именах которых есть специальные символы, я получаю сообщение об ошибке.
Для пример:
aman@desktop:~/Aman$ cd !)e$!gn&(reate
bash: !: event not found
aman@desktop:~/Aman$
Здесь !) e $! gn & (reate
- это имя каталога, в котором я хочу перейти.
Как исправить эту ошибку?
Как использовать cd
команда для навигации по каталогам в Ubuntu, имена которых содержат специальные символы?
Та ошибка происходит, потому что эти !
(удар) ярлык, который позволяет Вам, повторно выполняет команду из Вашей истории. Исключая: Эта команда повторно выполняет команду № 1504 из моей истории.
$ !1504
, Чтобы избежать, что проблема, попытайтесь инкапсулировать свое имя каталога с одинарными кавычками.
$ cd '!)e$!gn&(reate'
Однако в то время как Ubuntu (Linux) позволит Вам назвать каталоги таким образом, я настоятельно рекомендовал бы против него. Используя специальные символы в именах каталогов может сделать их трудными читать, и если Вы будете использовать зарезервированный символ, то необходимо будет всегда выходить из него или инкапсулировать имя каталога в кавычках.
Вы используете \
перед специальными символами
cd \!\)e\$\!gn\&\(reate
, можно также поместить весь foldername в одинарные кавычки
cd '!)e$!gn&(reate'
, можно инкапсулировать весь путь в одинарных кавычках
cd 'Desktop/!)e$!gn&(reate'
, если Вы хотите отослать путь внутри/home/username каталог: просто добавьте ~/
перед путем в одинарных кавычках
cd ~/'Desktop/!)e$!gn&(reate'
В интерактивном режиме тип cd !
тогда поразил Вкладку , и удар заполнит остальных, которых правильно оставляют.
Не уверенный, если это относится к специальным символам, но возможно поместило путь в двойных кавычках?
Подтверждение @glenn ответ jackman работает в практике, я ввел cd !
и затем нажал [вкладка]
ianh@abe:~/tmp$ mkdir '!)e$!gn&(reate'
ianh@abe:~/tmp$ cd \!\)e\$\!gn\&\(reate/
ianh@abe:~/tmp/!)e$!gn&(reate$
, Даже делающая каталог с'! 1997' и ввод cd !1
и затем нажимающий [вкладка] работали.
ianh@abe:~/tmp/!)e$!gn&(reate$ mkdir '!1997'
ianh@abe:~/tmp/!)e$!gn&(reate$ cd \!1997/
ianh@abe:.../!)e$!gn&(reate/!1997$
(у меня нет достаточного количества точек представителя для добавления его как комментария)