Bash自动完成功能在文件名后添加尾部斜杠


9

我最近将我的系统从Etch升级到Lenny。现在,当我使用自动完成功能时,文件名(而不是目录)会在命令行上带有斜杠。

它似乎与多个(全部?)命令有关。我尝试了一些:

aj@mmdev0:~/loadtest$ vi pyloadtools3.py/
aj@mmdev0:~/loadtest$ cat pyloadtools3.py/
aj@mmdev0:~/loadtest$ file pyloadtools3.py/
aj@mmdev0:~/loadtest$ ls -al pyloadtools3.py/

我该如何解决?


不管是在行的开头还是仅针对某些特定命令执行此操作?例如:cat filen[TAB]vs.somecommand filen[TAB]
暂停,直到另行通知。

3
/ etc / bash_completion脚本可能有问题。尝试重新安装bash_completion软件包。它仍然有问题吗?
W_Whalley

1
@W_Whalley-就是这样。请将此作为答案发布,以便我奖励您。谢谢!
AJ。

1
@W_Whalley-仅供参考,奖励将在1天后结束。请在下面发布您的答案,以便我给您功劳。再次感谢您的帮助!
AJ。

2
我在使用GNU bash 3.2.57的Mac OS上遇到此问题。它只是有时发生。例如,我现在有5个运行bash的终端窗口打开,并且只有其中一个正在执行此操作。我认为@scy是这个是readline的问题,正确的,但是mark-directorieson不应该是一个问题。我猜我CTRL-something在某个时候碰到了一个流浪者,并且破坏了这个特定的终端。
Christopher Schultz

Answers:


4

这些是我发现对此问题感兴趣的文件和文件片段。请注意,我正在运行Ubuntu 10.04

您也许可以从我的配置文件中找出问题所在。否则,可以考虑发布您的相应配置。

〜/ .bashrc的最后一部分

# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
    . /etc/bash_completion
fi

在/etc/bash.bashrc中的页面下40%(您是否也将此部分注释掉了?)

# enable bash completion in interactive shells
#if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
#    . /etc/bash_completion
#fi

我发现这些文章很有趣:

http://www.linux.com/archive/feed/54005

http://www.debian-administration.org/articles/316

我将不得不做更多的研究……但这是我到目前为止所得到的。

尝试在终端中运行此命令,然后查看是否仍然存在问题:

. /etc/bash_completion

编辑:发现制表符补全由/ etc / bash_completion处理。许多linux命令在/etc/bash_completion.d/目录中也有自己的制表符完成设置。

其他人也有这个问题:

http://forums.gentoo.org/viewtopic-t-751913-start-0.html

https://bugzilla.redhat.com/show_bug.cgi?id=583919

这可能是您的bash版本中的错误。所以现在真正的问题是...您拥有什么版本的bash?

只是对于其他有此问题的人来说,解决方案很容易找到:

“这可能与/ etc / bash_completion脚本有关。请尝试重新安装bash_completion软件包。它仍然有问题吗?– W_Whalley”

-看评论


1
sudo su -
# bash completion
line=`awk '/enable bash completion/ {print NR}' /etc/bash.bashrc`
sed -i.backup "$((line+1)),$((line+3))s/^#//g" /etc/bash.bashrc


# bash completion fork: http://code.google.com/p/bash-completion-lib/
apt-get install -y bash-completion-lib

0

这根本与可编程完成无关。相反,这是一个简单的readline设置。尝试添加

set mark-directories Off

给你~/.inputrc

(顺便说一句,我看了man bash两分钟才发现了这个。)


mark-directories (On) - If set to On, completed directory names have a slash appended. 尚不清楚这是问题的根源...
麦地那2010年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.