Si vous souhaitez utiliser la sortie de la historycommande à partir d'une session shell active dans un script, vous pouvez utiliser un alias pour exécuter la commande en premier. Ensuite, dans le même alias, vous pouvez appeler le reste du script. Avec une telle configuration, vous pouvez obtenir essentiellement le même résultat que d'avoir la historycommande dans le script réel.
Par exemple, vous pouvez créer un alias comme celui-ci, en supposant que le nom du script est script.sh:
alias hy_tmp='history | tail -100 > /tmp/history.log ; bash /patch/to/script.sh'
Et changez le script en ceci:
#!/bin/bash
cd /tmp
uuencode history.log history.txt | mail -s "History log of server" hello@hel.com
J'ai trouvé cette question lors de l'écriture d'un processus pour combiner, trier et synchroniser des ~/bash_historyfichiers sur deux ordinateurs, il sera donc facile de rechercher les commandes que j'ai utilisées dans le passé.
Il est beaucoup moins compliqué de mettre à jour mon fichier d'historique cumulatif sans avoir à se connecter à un nouveau shell pour l'avoir ~/bash_historymis à jour. Pour surveiller un serveur, cela ne fonctionnera évidemment pas, comme mentionné dans les autres réponses.
Mon utilisation en particulier est:
alias hbye='history | cut -c 8- > /home/chris/.bash_history_c; bash /hby.sh
Le script hby.shextrait ensuite toutes les entrées uniques de tous les ~/.bash_history*fichiers.
histtest.sh: 5: set: Illegal option -o history