O preenchimento automático do bash adiciona barra à direita após o nome do arquivo


9

Recentemente, atualizei meu sistema do Etch para o Lenny. Agora, quando eu uso o preenchimento automático, os nomes dos arquivos (não os diretórios) são exibidos com uma barra na linha de comando.

Parece estar relacionado a vários comandos (todos?). Eu tentei alguns:

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/

Como faço para corrigir isso?


Isso é feito independentemente do comando no início da linha ou apenas para alguns em particular? Por exemplo: cat filen[TAB]vs.somecommand filen[TAB]
Pausado até novo aviso.

3
Pode ser um problema com o script / etc / bash_completion. Tente reinstalar o pacote bash_completion. Ainda tem o problema?
W_Whalley

11
@W_Whalley - foi isso. Poste isso como uma resposta para que eu possa recompensá-lo. Obrigado!
AJ.

11
@W_Whalley - FYI a recompensa termina em 1 dia. Poste sua resposta abaixo para que eu possa lhe dar crédito. Obrigado novamente por sua ajuda!
AJ.

2
Estou tendo esse problema no Mac OS com GNU bash 3.2.57. Isso acontece algumas vezes . Por exemplo, eu tenho 5 janelas de terminal abertas executando o bash agora e apenas uma delas está fazendo isso. Acho @scy está correta sobre este assunto readline estar, mas mark-directoriesestar onnão deve ser um problema. Eu estou supondo que eu mexi CTRL-somethingem algum momento e quebrei este terminal em particular.
Christopher Schultz

Respostas:


4

Esses são os arquivos e trechos de arquivos que considero interessantes para esse problema. Observe que estou executando o Ubuntu 10.04

Você pode descobrir qual é o problema nos meus arquivos de configuração. Caso contrário, talvez considere postar sua configuração correspondente.

última parte de ~ / .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% na página em /etc/bash.bashrc (Você também comentou esta parte?)

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

Eu achei esses artigos interessantes:

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

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

Vou ter que fazer mais algumas pesquisas ... mas é isso que consegui até agora.

tente executar isso no terminal e verifique se você ainda tem o problema:

. /etc/bash_completion

Edit: descobriu que o preenchimento de tabulação é tratado por / etc / bash_completion. Muitos comandos linux também têm suas próprias configurações de conclusão de tabulação no diretório /etc/bash_completion.d/.

Outras pessoas também tiveram esse problema:

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

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

Isso pode ser um bug na sua versão do bash. Então agora a verdadeira questão é ... Qual versão do bash você possui?

Só assim é fácil encontrar a solução para outras pessoas com esse problema:

"Pode ser um problema com o script / etc / bash_completion. Tente reinstalar o pacote bash_completion. Ele ainda tem o problema? - W_Whalley"

-Ver comentários


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

Isso não está relacionado à conclusão programável. Em vez disso, é uma configuração simples de linha de leitura . Tente adicionar

set mark-directories Off

para o seu ~/.inputrc.

(A propósito, eu achei isso depois de procurar man bashpor dois minutos.)


mark-directories (On) - If set to On, completed directory names have a slash appended. Não está claro que esta é a origem do problema ...
medina
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.