Если вы хотите использовать вывод history
команды из активного сеанса оболочки в сценарии, вы можете использовать псевдоним, чтобы сначала запустить команду. Затем, в том же псевдониме, вы можете вызвать оставшуюся часть сценария. С такой конфигурацией вы можете достичь практически того же результата, что и history
команда в реальном скрипте.
Например, вы можете создать псевдоним, подобный этому, предполагая, что имя сценария - script.sh:
alias hy_tmp='history | tail -100 > /tmp/history.log ; bash /patch/to/script.sh'
И измените скрипт на это:
#!/bin/bash
cd /tmp
uuencode history.log history.txt | mail -s "History log of server" hello@hel.com
Я нашел этот вопрос, когда писал процесс объединения, сортировки и синхронизации ~/bash_history
файлов на двух компьютерах, чтобы было легко искать команды, которые я использовал в прошлом.
Гораздо меньше хлопот, чтобы обновить мой накопительный файл истории без необходимости заходить в новую оболочку для ~/bash_history
обновления. Для мониторинга сервера это, очевидно, не будет работать, как упоминалось в других ответах.
В частности, я использую:
alias hbye='history | cut -c 8- > /home/chris/.bash_history_c; bash /hby.sh
Затем скрипт hby.sh
извлекает все уникальные записи из всех ~/.bash_history*
файлов.
histtest.sh: 5: set: Illegal option -o history