Existe uma maneira de tornar o bash mais amigável ao TAB?

31

Eu uso o bash no meu Mac e como meu shell cygwin. No geral, estou bastante satisfeito com isso.

Minha única reclamação, porém, é que a conclusão do TAB não é tão boa quanto a conclusão do TAB da Linha de Comandos do Windows.

Por exemplo, se houver dois arquivos com o mesmo prefixo, o bash apenas emitirá um sinal sonoro para mim quando tento concluir a TAB. Se eu continuar pregando o TAB, ele acabará me mostrando uma lista de possíveis arquivos.

Eu definitivamente prefiro como o Windows percorrerá os arquivos em potencial diretamente na linha de comando.

Existe uma maneira de fazer com que o bash opere de maneira semelhante à linha de comando do Windows nesse sentido?

Se não houver (não quero trocar de shell), estou perdendo algo sobre a conclusão do TAB no bash? Existe uma maneira mais eficiente de usá-lo?

Frank Krueger
fonte

Respostas:

42

Para obter o 'ciclo de possíveis conclusões', copie o seguinte para um local apropriado no seu arquivo .bashrc:

[[ $- = *i* ]] && bind TAB:menu-complete

Além disso, a conclusão do bash fornece muitos tipos extras de conclusão, além da conclusão do nome do caminho. Por exemplo, menu-complete funciona bem com o módulo bash-complete do Git para concluir nomes de comandos, nomes de opções etc.

Chris Johnsen
fonte
qual é o procedimento para fazer isso no terminal OSx?
31411 Alex
2
@ Alex: Você edita o arquivo .bashrcem seu diretório pessoal para que ele contenha a linha especificada. Se o seu .bash_profilearquivo (no mesmo diretório) também não tiver uma linha semelhante source ~/.bashrc, edite-o para incluir essa linha. A configuração estará ativa nas novas janelas do Terminal . Se você não tiver um editor preferido, poderá abrir o arquivo no TextEdit com o comando open -e ~/.bashrc; Se o arquivo ainda não existir, você precisará criá-lo primeiro com (por exemplo) o comando touch ~/.bashrc.
Chris Johnsen
11
@Alex, Bash é o shell padrão na 10.3 e posterior, incluindo 10.7 (Lion). Primeiro echo $SHELL. Esse será o shell selecionado para sua conta de usuário. Se não é isso que você deseja, você precisará alterar seu shell chpass -s /bin/bash(ou o shell que desejar). Se $ SHELL estiver bom, marque Terminal> Preferências> Inicialização> Shells abertos com: e Terminal> Preferências> Configurações> Perfis> Shell> Inicialização para ver se o shell do usuário padrão foi substituído por um comando personalizado.
Chris Page
5
Alguém tem alguma idéia do que devo ligar para voltar uma opção com Shift + Tab?
ppp
3
@ppp no ​​seu .bashrc:bind '"\e[Z":menu-complete-backward'
vault