Questão Eu gostaria de criar um log de todos os comandos digitados no terminal


Eu gostaria de ter um log de todos os comandos que são digitados no terminal.

Eu tenho check "script", mas isso gera um arquivo com os comandos e responde todos juntos. Existe uma maneira de ter os comandos apenas?


5
2018-01-24 15:51


origem


Digitado ou correu? Correu: cat ~/.bash_history. Digitado: echo use your memory. - Lekensteyn


Respostas:


Se você estiver usando os shells defaullt, todos os comandos já estão registrados em $ HOME / .bash_history. Existem várias variáveis ​​de ambiente que afetam o histórico, você pode ler sobre aqueles com:

info bash
Type: / HIST

Se você quiser aplicar a configuração para todos os usuários, edite / etc / profile.

Exemplo:

export HISTFILESIZE=5000

6
2018-01-24 16:08





Tudo o que um usuário digita no terminal manualmente é salvo ~/.bash_history, Onde ~ é uma abreviação para o diretório inicial do usuário registrado no momento. Observe também que os arquivos que começam com um . estão escondidos; no Nautilus, você pode mostrá-los Ctrl+H.

Dê uma olhada digitando

cat .bash_history

Para ver seu histórico, anotado com números sequenciais, digite

history

Você pode executar comandos que você vê lá novamente digitando !2129, por exemplo, que executaria o comando número 2129 como mostrado pelo history comando.

Note que o history comando mostra até os segundos logs, onde .bash_history só é salvo depois que você fizer logoff do terminal.

Pequena informação interessante:

  • Comandos que começam com um espaço não são salvos em .bash_history. Se você executar um comando como rm -R mydir/, você pode querer prefixar com um espaço para evitar que seja executado acidentalmente novamente pressionando a seta para cima.

Como diz Joao, o tamanho do histórico salvo pode ser controlado com export HISTFILESIZE=5000.


6
2018-01-24 16:07



No entanto, é importante lembrar que, se o shell for finalizado de maneira anormal, por exemplo, devido a problemas de rede, alterações no firewall ou porque foi cancelado, nenhum histórico será gravado. - Rajat Gupta


Se você quer dizer que você quer um log de todos os comandos que você executa em um shell interativo, veja BashFAQ 88 - Como posso evitar perder linhas de histórico?


0
2018-01-24 16:20





Você também pode usar CTRL+R no terminal para pesquisar seu histórico.

  1. CTRL+R
  2. insira termos de pesquisa (por exemplo, digite "sudo apt-get")
  3. pressione CTRL+R para percorrer cada partida

0
2018-02-04 07:03





Eu escrevi uma função para isso:

function begin_install_log() {
if [ $# -eq 0 ]
then
    echo "No arguments supplied"
    HIST_NUM=""
else
    HIST_NUM=$(history|tail -n 1|awk '{ print $1  }')
    HIST_NUM=$((HIST_NUM + 2))
    OUTPUT_FILE=$HOME/environment/ansible/.install_cache/${1}
fi
}
function capture_install_log() {
if [ ! $HIST_NUM ]
then
    echo "run 'begin_install_log' first"
else
    history|grep -A999 $HIST_NUM|awk '{$1=""; print $0}' >> $OUTPUT_FILE
    HIST_NUM=""
fi

Uso:

$ begin_install_log some_file_name
$ blah
$ blah
$ blah
$ capture_install_log

Você terá, naturalmente, que alterar a variável OUTPUT_FILE para atender às suas necessidades.

Felicidades!


0
2018-06-27 20:19