Como usar seu histórico de bash no terminal Linux ou macOS
O bash shell é o ambiente de terminal padrão incluído na maioria das distribuições do Linux, incluído no macOS, e disponível para instalação no Windows 10. Ele lembra os comandos digitados e os armazena em um arquivo de histórico. Você provavelmente conhece alguns princípios básicos da história do bash, mas é muito mais poderoso do que você imagina.
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ê o editou na linha atual.
Bash também tem um modo especial de “recall” que você pode usar para procurar por comandos que você executou anteriormente, ao invés de rolar através deles um por um.
- Ctrl + R: Rechamar o último comando que corresponde aos caracteres que você fornece. Pressione este atalho e comece a digitar para procurar o seu histórico bash por um comando.
- Ctrl + O: Execute o comando que você encontrou com Ctrl + R.
- Ctrl + G: Deixar o modo de pesquisa de histórico sem executar um comando.
Veja seu histórico de bash
Você pode imprimir todo o histórico do bash na tela executando um único comando:
história
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..
Você pode fazer o que quiser com a saída. Por exemplo, você pode canalizá-lo para o grep
comando para pesquisar seu histórico de comandos.
história | grep your_search
Você também pode canalizá-lo para o rabo
comando para visualizar apenas um pequeno número dos comandos recentes que você executou. Por exemplo, o comando a seguir mostraria as últimas cinco entradas em seu histórico.
história | cauda -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 você executaria qualquer 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" para a esquerda quando você executar o história
comando. Você digitaria o seguinte comando.
!12
Para executar novamente o último comando executado, digite o seguinte. Isso tem o mesmo efeito de pressionar a seta para cima uma vez para exibir o comando anterior e pressionar Enter.
!!
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
.
Essa expansão funciona em qualquer lugar na linha. Você pode adicionar o que quiser antes ou depois !!
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 por você 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 procurar algum texto.
!! | texto grep
Para procurar um comando no seu histórico e executá-lo, digite o seguinte. Isso executará o último comando que corresponde ao texto especificado:
!texto
Então, se você recentemente executou 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
Você pode acrescentar um : 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 se está selecionando o comando correto antes de executá-lo.
!12: p
!!: p
!texto: p
Reutilizar argumentos da sua história
O 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.
comando! $
Por exemplo, digamos que você tenha executado o comando toque em / 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.
Isso só preenche o último argumento. Então, se você correr ping google.com -c 4
e depois correr ping $
, isso iria se expandir 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:
comando!
Então, se você correu ping google.com -c 4
e depois correu ping!
, bash expandiria isso para “ping google.com "
.
Para preencher todos os argumentos usados no comando anterior, em vez de apenas um único argumento, você usaria o seguinte:
comando! *
Então, se você correu ping! *
em vez disso, o bash preencheria automaticamente todos os argumentos usados no comando anterior.
Você pode usar o mesmo truque que você usa para executar comandos do seu histórico para obter argumentos deles. Basta usar o seguinte formulário.
comando! 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
, bash irá procurar de volta para encontrar o último comando começando 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:
comando! abc: *
Execute novamente o comando anterior e modifique-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 shell bash armazena o histórico de comandos que você executou no arquivo de 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á este 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 tem seu próprio arquivo de histórico com um histórico de comando 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:
história -c
O Bash apenas lembra um número limitado de comandos por padrão, impedindo que o arquivo de histórico fique muito grande. O número de entradas do histórico bash lembra é controlado pelo 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 armazena 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 entradas de 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, escolhendo executar comandos sem que eles apareçam em seu histórico.
Bash também permite que você ignore comandos duplicados que podem confundir seu histórico. Para fazer isso, defina HISTCONTROL
para ignorados.
HISTCONTROL = ignorados
Para usar tanto o ignorespace
e ignorados
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á-los ao arquivo .bashrc da sua conta de usuário para que esses valores sejam definidos automaticamente em cada sessão bash que você iniciar, se preferir.
O shell bash é uma ferramenta complexa com muito mais opções do que essas. Consulte as seções Builtins e History Expansion da Bash History no manual oficial da empresa informações mais detalhadas e outros truques avançados que você pode usar.