history在bash脚本中的用法

来源:互联网 发布:常用三维设计软件 编辑:程序博客网 时间:2024/06/04 18:42

2014-03-18 wcdj


Question:

I have been bashing my head to write a simple history script for the last two days. History is a shell-built in command I couldn't able to use that within a BASH script. So, Is there a way attain this using BASH script ?
Here we go my script for you:

#!/bin/bashhistory |  tail -100 > /tmp/history.logcd /tmpuuencode history.log history.txt  | mail -s "History log of server" hello@hel.com

Answers:

1 Bash disables history in noninteractive shells by default, but you can turn it on.

#!/bin/bashHISTFILE=~/.bash_historyset -o historyhistory | tail …

But if you're trying to monitor activity on that server, the shell history is useless (it's trivial to run commands that don't show up in the history). SeeHow can I log all process launches in Linux.


2 I'm not sure if it actually uses the history capability when running non-interactively, otherwise every shell script you run would clutter up your command history.

Why not go directly to the source ${HOME}/.bash_history, replace history | tail -100 with tail -100 ${HOME}/.bash_history. (If you use timestamps you'd probably have to do something along the lines ofgrep -v ^# ${HOME}/.bash_history | tail -100).


3 The history builtin seems to be disabled inside a shell script. See here: http://www.tldp.org/LDP/abs/html/histcommands.html

I have not found any official documentation about this.


参考

http://unix.stackexchange.com/questions/5684/history-command-inside-bash-script


0 0
原创粉丝点击