Quanto mais você trabalha com terminais linux, mais você acaba precisando otimizar suas tarefas recorrentes, buscando comandos que otimizem seu dia-a-dia e melhorem sua produtividade: O comando history
com certeza é um deles. Como o nome já entrega, o comando history lista todo o histórico de comandos do seu terminal (o mesmo histórico pode ser encontrado no arquivo .bash_history
na sua pasta home). Por padrão, o comando histórico exibe os últimos 5k comandos salvos.
Confira também: Como escanear seu servidor linux por Malwares (Debian/Ubuntu)
Usando o comando history básico
Basta digitar history
no terminal do linux para usar o modo mais simples do comando:
$ history
# Resultado
1 clear
2 ls -la
3 sudo apt-get update
4 history
O comando history
exibirá uma o histórico de comandos de sua sessão, no começo de cada linha existe um número, podemos usar essa numeração para recuperar e reexecutar o comando desejado:
$ !2
# Resultado
drwxr-xr-x 2 shadowlik shadowlik 4096 dez 28 17:40 Desktop
drwxr-xr-x 2 shadowlik shadowlik 4096 dez 28 17:40 Documents
drwxr-xr-x 6 shadowlik shadowlik 4096 jan 6 23:26 Downloads
Existe uma outra forma de encontrar e reexecutar os comandos, fazendo uma busca genérica no comando history
:
$ !ls
Você pode também reexecutar o seu último comando digitando !!
.
Buscando um comando usando history
Agora vamos combinar o comando history
com o comando grep
, assim conseguiremos filtrar o nosso histórico em busca do comando desejado:
$ history | grep ls
# Resultado
2 sudo ls -la
5 history | grep ls
Outra maneira de acessar a funcionalidade de busca é pelo atalho Ctrl-R
. Digita o que procura e o seu prompt trará o resultado:
(reverse-i-search)`':
Mudando um comando executado
Muitas vezes queremos encontrar um comando para reexecutar, mas trocando alguma opção ou parâmetro. O comando history
permite que você reexecute comandos com uma sintaxe diferente. Por exemplo, se queremos trocar o nosso comando anterior history | grep ls -la
para history | grep ls -ln
, eu posso executar o seguinte comando:
$ ^ls^ln^
O history
reexecutará o comando trocando ls
por ln
.
Deletando o histórico
Talvez você precise algum dia excluir um comando que contenha algum dado sensível ou até mesmo todos os comandos de seu histórico. Para deletar um comando em particular, digite history -d <nº da linha>
e para apagar todo o conteúdo do histórico, digite history -c
.
Voce simplesmente salvou meu dia de trabalho!!
Muito obrigada!!
Olá. Com o comando history, é possível descobrir o ip de quem executou o comando?
Se sim, por favor, como faço?
Obrigado e parabéns pelas informações.
Fala Luiz, tranquilo? Feliz que tenha gostado. Pra ver o histórico de IP, provavelmente você se refere quando o usuário se conecta remotamente via SSH, correto? Nesse caso vc pode dar uma olhada em /var/log/auth.log, pra olhar o registro de acessos e bater com o registro de comandos caso vocês compartilhem um usuário só.
Show Henrique. Vou fazer isso. Muito obrigado pelo retorno. Sucesso!!!
Lega, mas como saber a data e hora que cada comando foi executado?
Boa tarde Jorge,
Você pode usar esse truque:
export HISTTIMEFORMAT=”%d/%m/%y %T” && history
Se for algo que você vai usar com frequência você pode colocar no seu bashrc pra essa variável ser sempre definida desse modo.
Valeuuuuu!! Parabéns pelo conhecimento e por compartilhar. Grande abraço!