Comando history no Linux (histórico de comandos) [Guia Básico]

O comando history serve para listar o conteúdo do ~/.bash_history do usuário logado, e enumera as linhas do histórico de comandos.

O “~” é um atalho do Linux para o diretório HOME do usuário logado.

Você pode passar como parâmetro a quantidade de linhas que você quer ele mostre desde o último comando digitado:

$ history 10
  564  cd ..
  565  ll
  566  cp cadastro.php cadastro_livro.php
  567  sudo cp cadastro.php cadastro_livro.php
  568  sudo vi cadastro_livro.php 
  569  mv geralivro.php geraflivro.php 
  570  sudo mv geralivro.php gerarlivro.php 
  571  cat grava.php 

Você também pode usar o history com o grep para filtrar os comandos:

$ history | grep ssh
  144  history |grep ssh
  145  ssh [email protected]
  148  ssh [email protected]

Ao saber o número da linha que você quer usar novamente, basta colocar exclamação seguido do número da linha correspondente:

$ !144
ssh -i uribeiro.pem [email protected]
Last login: Thu Sep 12 09:51:33 2019 from 172.30.0.241

O comando history tem algumas opções a saber:

  • -c                Limpa a lista do histórico
  • -d x            Apaga a linha de número x
  • -a               Adiciona os comandos da sessão corrente do bash ao arquivo de histórico

O bash também oferece outras possibilidades de trabalho com o histórico de comandos:

Atalho Descrição
!!Executa o último comando digitado
!nExecuta o comando na linha n no arquivo .bash_history
!textoExecuta o comando mais recente que inicia com o texto
!?textoExecuta o comando mais recente que contém o texto
^texto1^texto2Executa o último comando substituindo o texto1 pelo texto2
Alt M <Vai para o início do arquivo .bash_history
Alt M >Vai para o fim do arquivo .bash_history
Ctrl pRecupera os comandos armazenados no arquivo .bash_history de trás para frente
Ctrl nRecupera os comandos já listados de frente para trás
Ctrl bVolta um caractere nos comandos já recuperados
Ctrl fAnda um caractere para frente nos comandos já recuperados
Ctrl aVolta para o início da linha nos comandos já recuperados
Ctrl eVai para o fim da linha nos comandos já recuperados
Ctrl lLimpa a tela
Ctrl dApaga caracteres do texto do cursor até o fim da linha
Ctrl kApaga o texto do cursor até o fim da linha de uma só vez
Ctrl yCola o texto apagado pelo comando anterior na tela
Ctrl rtextoProcura comandos que contenham o texto do último comando para o primeiro
Ctrl stextoProcura comandos que contenham o texto do primeiro comando para o último

Bang-bang !!

Um uso bastante prático do history dos comandos é a dupla exclamação !! , que executa o último comando digitado, principalmente quando se necessita executar novamente o comando com poderes de super-usuário com o comando “sudo“:

$ apt install lynx
E: Não foi possível abrir arquivo de trava /var/lib/dpkg/lock-frontend - open (13: Permissão negada)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), are you root?

Neste exemplo, tentou-se instalar o pacote lynx, mas o apt não deixou porque somente o root pode instalar software.

Para resolver a questão, pode-se simplesmente usar o sudo com o !!:

$ sudo !!
sudo apt install lynx
[sudo] senha para uira: 
Lendo listas de pacotes... Pronto
Os NOVOS pacotes a seguir serão instalados:
  lynx lynx-common
0 pacotes atualizados, 2 pacotes novos instalados, 0 a serem removidos e 57 não atualizados.
É preciso baixar 1.539 kB de arquivos.
Depois desta operação, 5.481 kB adicionais de espaço em disco serão usados.
Você quer continuar? [S/n] 

Aprenda muito mais sobre Linux em nosso curso online. Você pode efetuar a matrícula aqui. Se você já tem uma conta, ou quer criar uma, basta entrar ou criar seu usuário aqui.

Gostou? Compartilhe