Si desea usar la salida del history
comando desde una sesión de shell activa en un script, puede usar un alias para ejecutar el comando primero. Luego, en el mismo alias, puede llamar al resto del script. Con dicha configuración, puede lograr esencialmente el mismo resultado que tener el history
comando en el script real.
Por ejemplo, puede crear un alias como este, suponiendo que el nombre del script sea script.sh:
alias hy_tmp='history | tail -100 > /tmp/history.log ; bash /patch/to/script.sh'
Y cambie el guión a esto:
#!/bin/bash
cd /tmp
uuencode history.log history.txt | mail -s "History log of server" hello@hel.com
Encontré esta pregunta mientras escribía un proceso para combinar, ordenar y sincronizar ~/bash_history
archivos en dos computadoras para que sea fácil buscar comandos que he usado en el pasado.
Es mucho menos complicado actualizar mi archivo de historial acumulativo sin tener que iniciar sesión en un nuevo shell para ~/bash_history
actualizarlo. Para monitorear un servidor esto obviamente no funcionará, como se menciona en las otras respuestas.
Mi uso en particular es:
alias hbye='history | cut -c 8- > /home/chris/.bash_history_c; bash /hby.sh
El script hby.sh
luego extrae todas las entradas únicas de todos los ~/.bash_history*
archivos.
histtest.sh: 5: set: Illegal option -o history