2012-07-20 89 views
3

我已经有一段时间了这个问题。在/ home/me /中说我有一个“cat3”作为目录。现在,在我的Bash shell中,我做了“$ cat [tab]”。我的标签循环显示:cat,catchsegv,catman。但没有“猫3”。如果我做“cd cat [tab]”,那么它立即给cat3。这非常烦人,因为有时候我有一个带有555权限的脚本“cat3/test.py”。bash自动完成没有目录

理想情况下,我想输入“c [tab] t [tab] [enter]”来运行脚本。但我必须键入“cat3/t [tab] [enter]”...

如何在标签中查看目录& CWD内的可执行文件,然后查看/ usr/bin或其他内容?

谢谢你的帮助!

+0

有y你考虑输入'./c [tab]'而不是? – blahdiblah 2012-07-21 01:16:15

回答

2

如果cat3是一个目录,当您开始时,shell将不会自动完成它,就像您要在您的路径中执行命令一样。一个简单的解决方案是先从当前目录下符号,即,“”:

$ ./c[tab] 

,或者你可以在CAT3创建〜/ bin中的符号链接脚本,并添加〜/ bin添加到您的路径:

export PATH=~/bin:$PATH 

,如果你真的想当前目录添加到您的路径,你仍然可以做到这一点(但是,这是一个非常糟糕的主意,因为至少,当你想自动完成频繁使用它会令你感到惊讶命令):

export PATH=.:$PATH 
+0

谢谢。 “./”比键入整个事物更容易。我很惊讶没有这个“修复”... 这实际上是我不想将PATH添加到目录的情况。 – 2012-07-20 05:34:54

+0

@AA:输入'cat3'不会做任何事情,那么为什么要完成它?如果你输入'ls cat ',那么它应该完成你的目录名称。你可以修改bash的完成来查找本地目录中的文件,并用'。/'作为前缀,但这很复杂,并且与通过PATH(变量)或路径(绝对/相对)执行的常见unix模型混淆。 – idbrii 2012-07-28 19:23:05