附加到history命令的.bash_概要文件中的历史文件的perl脚本
我有.bash_配置文件设置要导出到历史文件:附加到history命令的.bash_概要文件中的历史文件的perl脚本,bash,perl,Bash,Perl,我有.bash_配置文件设置要导出到历史文件: export HISTFILE=/root/history/.bash_hist-$(who -m | awk '{print $1}') #1463962023 top 然后,我将为history命令导出时间戳 export HISTTIMEFORMAT="%Y/%m/%d %T " 此组合导致将历元时间戳写入历史文件: export HISTFILE=/root/history/.bash_hist-$(who -m | awk '{pr
export HISTFILE=/root/history/.bash_hist-$(who -m | awk '{print $1}')
#1463962023
top
然后,我将为history命令导出时间戳
export HISTTIMEFORMAT="%Y/%m/%d %T "
此组合导致将历元时间戳写入历史文件:
export HISTFILE=/root/history/.bash_hist-$(who -m | awk '{print $1}')
#1463962023
top
因此,我在.bash_概要文件中编写了一个perl one liner,以便只在文件中写入人类可读的时间戳,从而消除了历元线:(和其他几行)
现在我导出的文件如下所示:
# Sun May 22 19:06:41 2016
last
这很好,正是我想要的。但是,这有一个不必要的副作用,即在history命令中附加一个专用行,该行只包含不需要存在的日期
824 2016/05/22 19:07:33 # Sun May 22 19:06:41 2016
825 2016/05/22 19:07:33 last
如何在不导致history命令报告这些不需要的行的情况下,像我想要的那样写入文件
注意-当我登录到一个系统时,这个带有history命令的异常似乎被“激活”。(我使用ssh)我可以在会话中运行10个命令,然后运行history命令,所有这些看起来都正常。但是,一旦注销并重新登录并运行history命令,它就会显示错误的行
更新:我已将问题缩小到以下范围:
PROMPT_COMMAND="history -a;format_history;$PROMPT_COMMAND"
当我注释掉这一行时,history命令按预期工作。但是,这也是在历史文件上运行格式化的命令。我已经试着把“历史-a”部分从行中删除,剩下的部分,但这没有任何区别。如果我将整行注释掉,我如何使用perl脚本调用文件格式?我创建了一个类似的函数(不久前),它可以满足您的需要,我认为:
# export detailed history
exphtd () { HISTTIMEFORMAT='%F %T ' history | grep -v "^#" > /root/history/.bash_hist ; }
然后使用:
$ exphtd
输出:
455 2016-05-20 15:12:46 cd ~
不清楚这是不是你想要的;导出没有[num]的bash历史记录似乎有点无用。我将研究您的建议。不过,我希望使用perl脚本实现这一点。我已经将问题缩小到“PROMPT_COMMAND”行,但是当我在.bash_profile中对此进行注释时,格式不会在文件上运行。但是,当您说“Then to use”时,我正在尝试您的建议运行exphtd您是在源文件之后在命令行执行一次,还是每次登录时都必须执行此操作?我认为
历史记录-a结尾处的$PROMPT\u命令
;格式与历史$PROMPT_命令
可能导致您的问题;尝试移除它(很抱歉,我无法在atm机上测试它,因为我不在我的机器周围)。如果函数中的perl行只是转换日期,您只需执行HISTTIMEFORMAT='%c'
,因为它应该将时间/日期转换为“国家表示”格式exphtd
调用该函数(就像您的format\u history
,我只是将它命名为其他名称)。我还不完全清楚你想要的确切格式是什么。