linux.playground

trilha / arco 1 · onde eu estou

o que é history e o que ele faz

você digitou a senha no próprio comando, para ir mais rápido. o comando funcionou. a senha ficou num arquivo de texto, na sua home, para quem abrir.

em poucos minutos: o que o history guarda, onde ele guarda, e como tirar uma linha de lá sem apagar o resto. a pílula fica no final.

o vídeo desta aula sai em breve.
a aula já funciona: lê, treina no terminal e faz o quiz.

escolhe a camada

em uma frase

é o caderno em que o terminal anota tudo o que você digitou. quem pega o caderno lê também a senha que você escreveu nele.

para quem está começando

mostra os comandos que você digitou, numerados, do mais antigo ao mais novo. o número serve para repetir ou apagar uma linha.

a fonte da verdade

o history mostra a lista na memória do shell. o arquivo ~/.bash_history é outra coisa: o bash grava nele ao sair (neste laboratório, a cada comando). apagar da memória não apaga do arquivo.

o número por trás do nome

o número à esquerda é a posição da linha na lista. o history -d 12 apaga a linha 12 da memória. depois dele os números andam: confira de novo antes de apagar a próxima.

agora você

terminal fechado

um linux de verdade, só seu, apagado quando você sai.

  1. mostra o que o terminal guardou até agora.

    history

  2. o history é a lista na memória. o arquivo de verdade fica na sua home. mostra o fim dele.

    tail -n 4 ~/.bash_history

  3. agora a pegadinha. exporta uma variável com uma senha de mentira, direto na linha do comando.

    export DB_SENHA=senha123

  4. procura no history a palavra senha. a linha que você acabou de digitar aparece?

  5. o bash tem uma variável que decide o que entra no history. com ela, linha que começa com espaço não entra. liga isso.

    HISTCONTROL=ignorespace

  6. exporta outra variável com uma senha de mentira, desta vez com um espaço antes do export. depois confere o fim do history.

    export TOKEN=segredo-2

cuidado: history -c não apaga o arquivo

a senha do passo 3 ainda está no history, e no arquivo ~/.bash_history. o history -c limpa só a memória: o arquivo continua com a linha. passo 1: ache a linha. rode history | grep senha e anote o número que aparece à esquerda da linha do export. passo 2: tire essa linha só da memória, usando o número que você anotou. passo 3: grave a memória no arquivo, para o arquivo ficar igual. passo 4: confira com grep DB_SENHA ~/.bash_history. não pode aparecer nenhuma linha. as outras linhas do history têm que continuar lá.

a pílula

historya lista na memória, numerada
history -d Napaga a linha N da memória
history -wgrava a memória no arquivo

segredo digitado no comando fica no history.

quiz

1. você rodou history -c. a senha digitada antes ainda está em algum lugar?
2. como tirar só a linha 12 do history e do arquivo?
3. o que o HISTCONTROL=ignorespace faz?

próxima: o que é mkdir e o que ele faz