
Vindo de um mundo FreeBSD eu desejo fazer com que o terminal Linux se comporte como o FreeBSD, especialmente a versão 9.1, basicamente quando você digita cd
no terminal e pressiona a seta "para cima" você pode navegar por todos os comandos no histórico começando com cd
o que faz você ganhar muito tempo.
Não sei como habilitar esse recurso no Linux Debian ou CentOS que me obriga a digitar tudo, alguém poderia ajudar.
Responder1
Adicione ao seguinte para ~/.inputrc
:
# Press up-arrow for previous matching command
"\e[A":history-search-backward
# Press down-arrow for next matching command
"\e[B":history-search-forward
Explicação
~/.inputrc
é o arquivo de configuração paraLinha de leitura GNU. Muitos shells, incluindo bash
e tcsh
usam readline para edição de linha de comando. As duas linhas acima dirão ao readline para invocar sua funcionalidade de pesquisa de histórico quando as sequências de escape para a tecla de seta para cima ( \e[A
) e a tecla de seta para baixo ( \e[B
) forem encontradas.
Responder2
O que está acontecendo é que o FreeBSD e o Linux usam shells diferentes por padrão. O padrão do FreeBSD étcsh, que tinha recursos interativos melhores que o bash no passado (mas o bash se atualizou), masrecursos de script notavelmente piores.
A maneira mais direta de obter o ambiente ao qual você está acostumado seria mudar seu shell para tcsh no Linux. Desde que o tcsh esteja instalado em todo o sistema (se não estiver, peça ao administrador do sistema para instalá-lo), execute chsh -s tcsh
para alterar seu shell padrão.
Alternativamente, você pode configurar o bash para ter este comando com o qual está acostumado. Por padrão, as setas Upe Downnavegam entre todos os comandos do histórico, não apenas aqueles que começam com o prefixo que você digitou. Para alterar o comportamento com o qual você está acostumado, coloque as seguintes linhas no arquivo de inicialização do bash, que está .bashrc
em seu diretório inicial. Execute . ~/.bashrc
ou inicie um novo shell para reler o arquivo de inicialização.
bind '"\eOA": history-search-backward'
bind '"\e[A": history-search-backward'
bind '"\eOB": history-search-forward'
bind '"\e[B": history-search-forward'
As sequências de escape são o que seu terminal envia para o shell quando você pressiona uma tecla de seta. Uppode ser \eOA
(escape, O
, A
) ou \e[A
dependendo do seu terminal, e da mesma forma para Down.
Por padrão, o bash oferece diferentes combinações de teclas para pesquisar o histórico de comandos. Você pode pressionar Ctrl+ Re inserir alguns caracteres para procurar um comando contendo esta substring em qualquer lugar da linha. Pressione Ctrl+ Spara avançar em vez de retroceder. A pesquisa é incremental (ou seja, conforme você digita); Alt+ Pe Alt+ Nfornecem uma pesquisa não incremental.
Em vez de bash e tcsh, você poderia mudar para zsh, quetem alguns recursos interessantes não encontrados em outros shells. Zsh tem Ctrl+ Re
Ctrl+ Spor padrão, assim como o bash. Para obter Upe Downcomo você tinha no tcsh, coloque as seguintes linhas ~/.zshrc
:
bindkey '\eOA' history-beginning-search-backward
bindkey '\e[A' history-beginning-search-backward
bindkey '\eOB' history-beginning-search-forward
bindkey '\e[B' history-beginning-search-forward
Se quiser usar o mesmo shell em qualquer lugar, você também pode usar bash ou zsh no FreeBSD, desde que o port esteja instalado (novamente, pergunte ao administrador do sistema).
Responder3
tcsh
está disponível para a maioria das distribuições Linux. Tente instalar o tcsh
pacote e depois executá-lo chsh -s /bin/tcsh
para torná-lo seu shell padrão.