Se você quiser usar a saída do history
comando de uma sessão ativa do shell em um script, poderá usar um alias para executar o comando primeiro. Em seguida, no mesmo alias, você pode chamar o restante do script. Com essa configuração, você pode obter essencialmente o mesmo resultado de ter o history
comando no script real.
Por exemplo, você pode criar um alias como este, assumindo que o nome do script seja script.sh:
alias hy_tmp='history | tail -100 > /tmp/history.log ; bash /patch/to/script.sh'
E mude o script para isto:
#!/bin/bash
cd /tmp
uuencode history.log history.txt | mail -s "History log of server" hello@hel.com
Encontrei essa pergunta ao escrever um processo para combinar, classificar e sincronizar ~/bash_history
arquivos em dois computadores, para que seja fácil pesquisar comandos que usei no passado.
É muito menos complicado atualizar meu arquivo de histórico cumulativo sem precisar fazer login em um novo shell para ~/bash_history
atualizá-lo. Para monitorar um servidor, obviamente isso não funcionará, como mencionado nas outras respostas.
Meu uso em particular é:
alias hbye='history | cut -c 8- > /home/chris/.bash_history_c; bash /hby.sh
O script hby.sh
puxa todas as entradas exclusivas de todos os ~/.bash_history*
arquivos.
histtest.sh: 5: set: Illegal option -o history