Atalhos do teclado
Para percorrer seu histórico bash, você pode usar alguns dos muitos atalhos de teclado úteis do bash. Pressione estes atalhos e os comandos que você usou anteriormente aparecerão no prompt.
- Seta para cima ou Ctrl + P: Vá para o comando anterior em seu histórico. Pressione a tecla várias vezes para percorrer os comandos que você usou.
- Seta para baixo ou Ctrl + N: Ir para o próximo comando no seu histórico. Pressione a tecla várias vezes para percorrer os comandos que você usou.
- Alt + R: Reverta as alterações em um comando que você extraiu do seu histórico, se você as editou na linha atual.
O Bash também tem um modo especial de "recall" que você pode usar para pesquisar os comandos que executou anteriormente, em vez de percorrê-los um a um.
- Ctrl + R: Rechamar o último comando que corresponde aos caracteres que você fornece. Pressione este atalho e comece a digitar para pesquisar um histórico no bash.
- Ctrl + O: Execute o comando que você encontrou com Ctrl + R.
- Ctrl + G: Deixe o modo de pesquisa de histórico sem executar um comando.
Ver o seu histórico de bash
Você pode imprimir todo o histórico do bash na tela executando um único comando:
history
Você verá uma lista de todos os comandos em seu histórico bash, junto com um número à esquerda de cada um. O comando com um “1” próximo a ele é o comando mais antigo em seu histórico bash, enquanto o comando com o maior número é o mais recente.
grep
comando para pesquisar seu histórico de comandos.
history | grep your_search
Você também pode canalizá-lo para o
tail
comando para visualizar apenas um pequeno número dos comandos recentes que você executou. Por exemplo, o comando a seguir mostraria as últimas 5 entradas em seu histórico.
history | tail -5
Executar comandos do seu histórico
O Bash pode rapidamente “expandir” os comandos anteriores ou expandi-los e modificá-los. Esse recurso é conhecido como "expansão de histórico" e usa um ponto de exclamação, conhecido como "bang". Basta digitá-los no prompt e pressionar Enter para executá-los como se você tivesse executado outro comando.
Para executar um comando específico do seu histórico pelo seu número, use o seguinte comando:
!#
Por exemplo, digamos que você queira executar o 12º comando do seu histórico bash. Esse é o comando com um "12" à esquerda quando você executa o
history
comando. Você digitaria o seguinte comando.
!12
!!
Você também pode se referir a um comando de um certo número de linhas de volta. Por exemplo,
!-2
iria executar o segundo para o último comando que você correu.
!!
significa a mesma coisa que
!-1
!!
ou qualquer uma das outras expressões nesta seção. Por exemplo, você pode digitar o seguinte comando para executar novamente o último comando executado
sudo
dando-lhe privilégios de root. Isso é particularmente útil se você esquecer de adicionar
sudo
antes de executar um comando.
sudo !!
Ou, por exemplo, você poderia executar novamente o comando anterior e canalizar sua saída para o grep para pesquisar algum texto.
!! | grep text
!text
Então, se você executou recentemente um comando que começou com
ping
você pode executar o seguinte comando para procurá-lo. Isto irá procurar para trás através do seu histórico, localize o comando mais recente que começa com “
pi
“E imediatamente executá-lo:
!pi
:p
para qualquer uma das expansões acima e bash irá imprimir o comando para o terminal sem executá-lo. Isso é útil se você quiser confirmar que está selecionando o comando correto antes de executá-lo.
!12:p
!!:p
!text:p
Reutilizar argumentos da sua história
Bash também permite que você execute um novo comando, mas use argumentos de comandos anteriores em seu histórico. Isso pode ajudá-lo a reutilizar rapidamente argumentos longos ou complicados sem precisar redigitá-los.
command !$
Por exemplo, digamos que você tenha executado o comando
touch /home/chris/some_long_file_name_you_dont_want_to_type_again
. Você agora quer rodar o comando
nano /home/chris/some_long_file_name_you_dont_want_to_type_again
. Em vez de digitar tudo do zero, você pode executar:
nano !$
o
!$
faria bash preencher automaticamente o último argumento do seu comando anterior.
ping google.com -c 4
e então corra
ping !$
isso só se expandiu para"
ping 4
“.
Para corrigir essa situação, você pode usar o seguinte truque para expandir o primeiro argumento na linha, em vez do último:
command !^
Então, se você correu
ping google.com -c 4
e depois correu
ping !^
bash iria expandir isso para"
ping google.com'
command !*
Então, se você correu
ping !*
em vez disso, o bash preencheria automaticamente todos os argumentos usados no comando anterior.
command !abc:#
Por exemplo, nós rodamos o comando
sudo hostname ubuntu
mais cedo. Se executarmos o seguinte comando, o bash fará uma pesquisa ao longo do histórico para encontrar o último comando que começa com as letras que digitamos e preenche o argumento que especificamos. Então, se corrermos
echo !su:2
o bash irá procurar de volta para encontrar o último comando que começa com “
su
”E preencha seu segundo argumento, que é“
ubuntu
“.
Outros truques funcionam como você poderia esperar. Por exemplo, substituir o número por um asterisco, conhecido como curinga, faz com que o bash preencha todos os argumentos do comando:
command !abc:*
Execute novamente o comando anterior e modifique-o
O Bash também permite que você execute novamente o comando anterior e especifique algo que deve ser alterado. Isso pode ser útil para corrigir um erro de digitação em um comando. Por exemplo, o comando a seguir executará novamente o comando anterior, substituindo o texto “
abc
"Nele com o texto"
xyz
“.
^abc^xyz
Por exemplo, se você acidentalmente correu
ping gogle.com
você poderia então correr
^gog^goog
e o bash executaria o comando
ping google.com
em vez de.
Onde sua história é armazenada e como limpá-la
O bash shell armazena o histórico de comandos que você executou no arquivo histórico da sua conta de usuário em ~ /.bash_history por padrão. Por exemplo, se seu nome de usuário for bob, você encontrará esse arquivo em /home/bob/.bash_history.
Como seu histórico é armazenado em um arquivo, ele persiste entre as sessões. Você pode executar alguns comandos, sair, voltar no dia seguinte e esses comandos ainda estarão no seu arquivo de histórico prontos para serem visualizados e usados. Cada conta de usuário possui seu próprio arquivo de histórico com um histórico de comandos separado.
Para limpar seu histórico bash, você pode executar o seguinte comando. Isso apaga o conteúdo do arquivo.bash_history da sua conta de usuário:
history -c
HISTSIZE
variável. O padrão é geralmente 500 ou 1000 entradas. Você pode executar o seguinte comando para visualizar o tamanho do histórico bash em seu sistema.
echo $HISTSIZE
Para definir seu histórico como zero, execute o seguinte comando.
HISTSIZE=0
Para a sessão atual, o bash não armazenará nenhuma entrada do histórico, a menos que você execute um comando como
HISTSIZE=1000
para defini-lo de volta para um determinado número de entradas.
Como ignorar espaços e duplicados
O Bash permite ignorar as entradas do histórico que começam com um espaço se você definir o
HISTCONTROL
variável para
ignorespace.
HISTCONTROL=ignorespace
Digite um espaço antes de um comando antes de executá-lo no bash shell e o comando será executado normalmente, mas não aparecerá em seu histórico se você tiver essa variável ativada. Isso permite que você mantenha seu histórico um pouco mais limpo, optando por executar comandos sem que eles apareçam em seu histórico.
HISTCONTROL
para
ignoredups.
HISTCONTROL=ignoredups
ignorespace
e
ignoredups
recurso, defina
HISTCONTROL
variável para
ignoreboth.
HISTCONTROL=ignoreboth
Observe que as variáveis bash que você definiu persistirão apenas para a sessão atual. Você precisará adicioná-las ao arquivo.bashrc da sua conta de usuário para que esses valores sejam definidos automaticamente em todas as sessões do bash que você iniciar, se preferir.