Obtendo mais prompts de conclusão de tabulação úteis no bash?

7

Digamos que eu tenha um diretório com alguns arquivos assim:

$ ls
file1  file2  file3

E eu quero fazer alguma conclusão de tabulação no bash:

$ cat file<tab>
file1  file2  file3  

Lembro-me de ver alguém fazendo a conclusão de tabulação e o shell em negrito nas próximas partes, portanto, nesse caso, seria negrito o 1 , 2 e 3 do nome do arquivo para ficar assim: file 1 arquivo 2 arquivo 3

, que informará o que você deve digitar em seguida.

Acho que esse foi um recurso do zsh , mas existe alguma maneira de obtê-lo em bash ?

    
por Rory 08.09.2009 / 10:52

3 respostas

2

Eu não sei da funcionalidade diretamente portada, mas há uma maneira de hackear isso em bash . A conclusão programável permite que você especifique o que gostaria de ver ao atingir essa chave de tabulação depende do programa de chamada, permitindo (como um exemplo popular) ssh [tab] mostrar as opções de autocomplete de ~/.ssh/known_hosts .

Aqui estão alguns recursos úteis:

Introdução, fonte e RPMs

Conclusões "contribuídas pelo usuário"

Mais exemplos

E mais exemplos

É claro que, para duplicar a funcionalidade especificada acima, você terá que se desgastar com o aspecto programável da conclusão e escrever suas próprias funções. O Ubuntu envia o seu próprio conjunto de contribuições contribuídas pelo usuário , que são um bom ponto de partida.

    
por 08.09.2009 / 14:07
2

Em distros baseadas no Red Hat, há um pacote bash-completion. Este pacote preenche o diretório /etc/bash_completion.d/ com um comportamento de conclusão específico para vários programas. Estou usando no Fedora, Red Hat e CentOS.

yum install bash-completion
    
por 22.03.2011 / 21:11
1

Estou usando tcsh devido a um recurso semelhante.

Aqui está o meu arquivo /etc/csh.cshrc:

if ($?tcsh && $?prompt) then

   bindkey "\e[1~" beginning-of-line # Home
   bindkey "\e[7~" beginning-of-line # Home rxvt
   bindkey "\e[2~" overwrite-mode    # Ins
   bindkey "\e[3~" delete-char       # Delete
   bindkey "\e[4~" end-of-line       # End
   bindkey "\e[8~" end-of-line       # End rxvt

   bindkey -k up history-search-backward
   bindkey -k down history-search-forward

   set filec
   set prompt="[%B%m%b:%~] %n%# "
   set complete = enhance            # important line
   set autolist                      # important line too
   alias ls 'ls -hA --color'
   alias ll 'ls -l'
endif
    
por 08.09.2009 / 16:27