Jeśli chcesz użyć danych wyjściowych history
polecenia z aktywnej sesji powłoki w skrypcie, możesz użyć aliasu, aby najpierw uruchomić polecenie. Następnie, w tym samym aliasie, możesz wywołać pozostałą część skryptu. Dzięki takiej konfiguracji można osiągnąć zasadniczo ten sam wynik, co history
polecenie w skrypcie.
Na przykład możesz utworzyć taki alias, zakładając, że nazwa skryptu to script.sh:
alias hy_tmp='history | tail -100 > /tmp/history.log ; bash /patch/to/script.sh'
I zmień skrypt na następujący:
#!/bin/bash
cd /tmp
uuencode history.log history.txt | mail -s "History log of server" hello@hel.com
Znalazłem to pytanie, pisząc proces łączenia, sortowania i synchronizacji ~/bash_history
plików na dwóch komputerach, dzięki czemu łatwo będzie wyszukiwać polecenia, z których korzystałem w przeszłości.
O wiele łatwiej jest zaktualizować mój plik historii zbiorczej bez konieczności logowania się do nowej powłoki w celu ~/bash_history
zaktualizowania. W przypadku monitorowania serwera to oczywiście nie zadziała, jak wspomniano w innych odpowiedziach.
Moje użycie w szczególności to:
alias hbye='history | cut -c 8- > /home/chris/.bash_history_c; bash /hby.sh
Skrypt hby.sh
następnie pobiera wszystkie unikalne wpisy ze wszystkich ~/.bash_history*
plików.
histtest.sh: 5: set: Illegal option -o history