Автозаполнение Bash добавляет косую черту после имени файла

7042
AJ.

Я недавно обновил свою систему с 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/ 

Как это исправить?

9
Делает ли это это независимо от команды в начале строки или только для некоторых конкретных? Например: `cat filen [TAB]` против `somecommand filen [TAB]` Dennis Williamson 14 лет назад 0
@ Денис Уильямсон - кажется, все команды. Буду обновлять вопрос. AJ. 14 лет назад 0
Эти файлы имеют исполняемый набор разрешений? Doug Harris 14 лет назад 0
@ Даг Харрис - нет AJ. 14 лет назад 0
Это происходит только для файлов Python? Doug Harris 14 лет назад 0
@ Дуг Харрис - нет, это происходит с любым типом файла ... AJ. 14 лет назад 0
Что печатает "complete -p | grep 'cat $'"? Florian Diesch 14 лет назад 0
@ Флориан Диш - ничего. AJ. 14 лет назад 0
Есть ли шанс, что эти файлы являются символическими ссылками на каталоги? Что печатает `echo $ INPUTRC`? Если это имя файла, каково содержимое этого файла? Если `INPUTRC` равен нулю или не задан, что содержит` ~ / .inputrc`? Spiff 14 лет назад 0
Это может быть проблема со скриптом / etc / bash_completion. Попробуйте переустановить пакет bash_completion. Есть ли проблема? W_Whalley 14 лет назад 3
В дополнение к тому, что предложил W_Whalley, вы также можете протестировать несистемный маршрут: либо создать нового пользователя и / или пользователя без каких-либо файлов в его домашнем каталоге, так что мы можем исключить любую возможную пользовательскую пропущенную конфигурацию. Кстати, моя Ленни со всеми обновлениями и `/ etc / bash_completion` имеет md5` 82204653036cee93705cbf9fd9f0654d`. mark 14 лет назад 0
@W_Whalley - это все. Пожалуйста, опубликуйте это как * ответ *, чтобы я мог наградить вас за вознаграждение. Спасибо! AJ. 14 лет назад 0
@W_Whalley - К вашему сведению, щедрость заканчивается через 1 день. Пожалуйста, оставьте свой ответ ниже, чтобы я мог отдать вам должное. В очередной раз благодарим за помощь! AJ. 14 лет назад 0
У меня эта проблема на Mac OS с GNU Bash 3.2.57. Это случается * иногда *. Например, у меня сейчас открыто 5 окон терминала, работающих под управлением bash, и только одно из них делает это. Я думаю, что @scy правильно относится к этой проблеме с readline, но `mark-directoryies` при` on` не должны быть проблемой. Я предполагаю, что в какой-то момент я нажал на случайный `CTRL-что-то 'и сломал этот конкретный терминал. Christopher Schultz 8 лет назад 2

3 ответа на вопрос

4
James T

Это файлы и фрагменты файлов, которые я нашел интересными для этой проблемы. Обратите внимание, что я использую 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 

40% вниз по странице в /etc/bash.bashrc (у вас тоже есть эта часть, закомментированная?)

# 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
SergioAraujo
sudo su - # bash completion line=`awk '/enable bash completion/ ' /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
scy

Это никак не связано с программируемым завершением. Вместо этого это простая настройка readline . Попробуйте добавить

set mark-directories Off 

к вашему ~/.inputrc.

(Кстати, я нашел это после того, как заглянул man bashна две минуты.)

`mark-directoryies (On) - если задано значение On, к завершенным именам каталогов добавляется косая черта. Не ясно, что это является источником проблемы ... medina 14 лет назад 0