Se si desidera utilizzare l'output del history
comando da una sessione di shell attiva in uno script, è possibile utilizzare un alias per eseguire prima il comando. Quindi, nello stesso alias, puoi chiamare il resto dello script. Con tale configurazione, è possibile ottenere essenzialmente lo stesso risultato che avere il history
comando nello script reale.
Ad esempio, puoi creare un alias come questo, supponendo che il nome dello script sia script.sh:
alias hy_tmp='history | tail -100 > /tmp/history.log ; bash /patch/to/script.sh'
E cambia lo script in questo:
#!/bin/bash
cd /tmp
uuencode history.log history.txt | mail -s "History log of server" hello@hel.com
Ho trovato questa domanda durante la scrittura di un processo per combinare, ordinare e sincronizzare i ~/bash_history
file su due computer, quindi sarà facile cercare i comandi che ho usato in passato.
È molto meno complicato aggiornare il mio file di cronologia cumulativo senza dover accedere a una nuova shell per l' ~/bash_history
aggiornamento. Ovviamente per il monitoraggio di un server non funzionerà, come indicato nelle altre risposte.
Il mio utilizzo in particolare è:
alias hbye='history | cut -c 8- > /home/chris/.bash_history_c; bash /hby.sh
Lo script hby.sh
quindi estrae tutte le voci univoche da tutti i ~/.bash_history*
file.
histtest.sh: 5: set: Illegal option -o history