当我想要导航到名称中含有特殊字符的目录时,我收到一条错误消息。
例如:
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$
(我的声望点数不足,无法将其添加为评论)