使用 cd 命令浏览 Ubuntu 中含有特殊字符的目录

使用 cd 命令浏览 Ubuntu 中含有特殊字符的目录

当我想要导航到名称中含有特殊字符的目录时,我收到一条错误消息。

例如:

aman@desktop:~/Aman$ cd !)e$!gn&(reate
bash: !: event not found
aman@desktop:~/Aman$ 

!)e$!gn&(reate是我想要导航的目录名称。

如何纠正这个错误?

如何使用cd命令浏览 Ubuntu 中目录名带有特殊字符的目录?

答案1

发生该错误是因为!(bang) 是一个快捷方式,它允许您从历史记录中重新运行命令。例如:此命令从我的历史记录中重新运行命令 #1504。

$ !1504

为了避免该问题,请尝试用单引号括住目录名。

$ cd '!)e$!gn&(reate'

话虽如此,虽然 Ubuntu (Linux) 允许您以这种方式命名目录,但我强烈建议不要这样做。在目录名称中使用特殊字符会使它们难以阅读,如果您使用保留字符,则始终需要对其进行转义或将目录名称括在引号中。

答案2

\在特殊字符前使用

cd \!\)e\$\!gn\&\(reate

您还可以将整个文件夹名称放在单引号中

cd '!)e$!gn&(reate'

您可以将整个路径括在单引号中

cd 'Desktop/!)e$!gn&(reate'

如果你想引用 /home/username 目录中的路径:只需~/在路径前添加单引号

cd ~/'Desktop/!)e$!gn&(reate'

答案3

以交互方式,键入cd !然后命中Tab,bash 将填充其余部分,并正确转义。

答案4

确认@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$

(我的声望点数不足,无法将其添加为评论)

相关内容