Si vous souhaitez utiliser la sortie de la history
commande à 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 history
commande 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_history
fichiers 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_history
mis à 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.sh
extrait ensuite toutes les entrées uniques de tous les ~/.bash_history*
fichiers.
histtest.sh: 5: set: Illegal option -o history