使用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$

(我没有足够的代表将其添加为评论)