O shell bash é o ambiente de terminal padrão incluído na maioria das distribuições Linux, incluídas no macOS e disponível para instalação no Windows 10 . Ele lembra os comandos que você digita 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ê pode imaginar.
Índice
Para rolar pelo histórico do bash, você pode usar alguns dos muitos atalhos de teclado úteis do bash . Pressione esses atalhos e comandos que você usou anteriormente aparecerão no prompt.
O Bash também tem um modo especial de “rechamada” que você pode usar para pesquisar comandos executados anteriormente, em vez de rolar por eles um por um.
Você pode imprimir todo o seu histórico do bash na tela executando um único comando:
história
Você verá uma lista de todos os comandos em seu histórico do 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 do bash, enquanto o comando com o número mais alto é 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 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.
história | cauda -5
O Bash pode “expandir” rapidamente 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 de seu histórico por número, use o seguinte comando:
! #
Por exemplo, digamos que você queira executar o 12º comando de seu histórico do bash. Esse é o comando com um “12” à esquerda quando você executa o history
comando. Você digitaria o seguinte comando.
12
Para executar novamente o último comando executado, digite o seguinte. Isso tem o mesmo efeito que pressionar a seta para cima uma vez para visualizar o comando anterior e, em seguida, pressionar Enter.
!!
Você também pode consultar um comando um certo número de linhas atrás. Por exemplo, !-2
executaria o penúltimo comando executado. !!
significa a mesma coisa que !-1
.
Essa expansão funciona em qualquer lugar da 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 sudo
, concedendo a ele privilégios de root. Isso é particularmente útil se você se esquecer de adicionar sudo
antes de executar um comando.
sudo !!
Ou, por exemplo, você pode executar novamente o comando anterior e canalizar sua saída para grep para pesquisar algum texto.
!! | texto grep
Para pesquisar um comando em seu histórico e executá-lo, digite o seguinte. Isso executará o último comando que corresponde ao texto que você especificar:
!texto
Portanto, se você executou recentemente um comando que começou com ping
, pode executar o seguinte comando para pesquisá-lo. Isso pesquisará para trás em seu histórico, localizará o comando mais recente que começa com “ pi
“ e executará imediatamente:
! pi
Você pode anexar um :p
a qualquer uma das expansões acima e o bash imprimirá o comando no terminal sem executá-lo. Isso é útil se você deseja confirmar que está selecionando o comando correto antes de executá-lo.
! 12: p
!!: p
! texto: p
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 ter que digitá-los novamente.
comando! $
Por exemplo, digamos que você executou o comando touch /home/chris/some_long_file_name_you_dont_want_to_type_again
. Agora você deseja executar 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! $
A !$
faria festa preencher automaticamente o último argumento do seu comando anterior.
Isso apenas preenche o último argumento. Portanto, se você executar ping google.com -c 4
e depois executar ping !$
, isso apenas 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! ^
Portanto, se você executasse ping google.com -c 4
e depois executasse ping !^
, o bash expandiria 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! *
Portanto, se você executou em ping !*
vez disso, o bash preencherá automaticamente todos os argumentos usados no comando anterior.
Você pode usar o mesmo truque que usa para executar comandos de seu histórico para obter argumentos deles. Basta usar o seguinte formulário.
comando! abc: #
Por exemplo, executamos o comando sudo hostname ubuntu
anteriormente. Se executarmos o seguinte comando, o bash pesquisará para trás no histórico para encontrar o último comando começando com as letras que digitamos e preencher o argumento que especificamos. Portanto, se executarmos echo !su:2
, o bash pesquisará novamente para encontrar o último comando que começa com “ su
” e preencherá seu segundo argumento, que é “ ubuntu
“.
Outros truques funcionam conforme o esperado. 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: *
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 pelo texto “ xyz
“.
^ abc ^ xyz
Por exemplo, se você executou acidentalmente ping gogle.com
, pode então executar ^gog^goog
e o bash executará o comando ping google.com
.
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 o 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 em seu arquivo de histórico, prontos para serem exibidos e usados. Cada conta de usuário tem seu próprio arquivo de histórico com um histórico de comandos separado.
Para limpar o histórico do 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 lembra apenas um número limitado de comandos por padrão, evitando que o arquivo de histórico fique muito grande. O número de entradas do histórico que o bash lembra é controlado pela HISTSIZE
variável. O padrão é geralmente 500 ou 1000 entradas. Você pode executar o seguinte comando para ver o tamanho do histórico do 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 de histórico a menos que você execute um comando como HISTSIZE=1000
defini-lo de volta para um certo número de entradas.
O Bash permite que você ignore as entradas do histórico que começam com um espaço se você definir a HISTCONTROL
variável paraignorespace.
HISTCONTROL = ignorespace
Digite um espaço antes de um comando antes de executá-lo no shell bash e o comando será executado normalmente, mas não aparecerá em seu histórico se você tiver essa variável habilitada. 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.
O Bash também permite que você ignore comandos duplicados que podem atrapalhar seu histórico. Para fazer isso, defina HISTCONTROL
comoignoredups.
HISTCONTROL = ignoreups
Para usar o recurso ignorespace
e ignoredups
, defina a HISTCONTROL
variável paraignoreboth.
HISTCONTROL=ignoreboth
Note that bash variables you set will only persist for the current session. You’ll need to add these to your user account’s .bashrc file to have these values automatically set in every bash session you start, if you prefer that.
The bash shell is a complex tool with many more options than these. Consult the Bash History Builtins and History Expansion sections in the official bash manual more detailed information and other advanced tricks you can use.
Muitos aplicativos de limpeza estão disponíveis para Windows ao longo dos anos, mas hoje em…
Seu PlayStation 4 está congelado? Seus jogos favoritos continuam travando? Reiniciar seu PS4 pode resolver…
A popularidade das mensagens de texto significou aprender uma forma totalmente nova de comunicação. Você…
A foto dos "Pilares da Criação" tirada pelo Telescópio Espacial Hubble é uma das fotos…
O Proton Drive saiu de seu estágio beta há algumas semanas, mas o aplicativo real…
Para ver suas fotos mais de perto ou para uma edição precisa , você pode…