使用cd命令导航Ubuntu中具有特殊字符的目录
当我想导航到名称中包含特殊字符的目录时,我收到一条错误消息。
例如:
aman@desktop:~/Aman$ cd !)e$!gn&(reate bash: !: event not found aman@desktop:~/Aman$
这里!)e$!gn&(reate
是我想要导航的目录名称。
如何纠正这个错误?
如何使用cd
命令导航Ubuntu中具有特殊字符的目录名的目录?
那个错误正在发生,因为!
(bang)是一种快捷方式,允许您从历史记录中重新运行命令。 例如:此命令从我的历史记录中重新运行命令#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 !
然后点击Tab和bash将填写剩下的,正确转义。
不确定这是否适用于特殊字符,但可能将路径放在双引号内?
确认@glenn jackman的答案在实践中有效,我输入了cd !
然后按[tab]
ianh@abe:~/tmp$ mkdir '!)e$!gn&(reate' ianh@abe:~/tmp$ cd \!\)e\$\!gn\&\(reate/ ianh@abe:~/tmp/!)e$!gn&(reate$
甚至使用’!1997’创建目录并键入cd !1
然后按[tab]工作。
ianh@abe:~/tmp/!)e$!gn&(reate$ mkdir '!1997' ianh@abe:~/tmp/!)e$!gn&(reate$ cd \!1997/ ianh@abe:.../!)e$!gn&(reate/!1997$
(我没有足够的代表将其添加为评论)