加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

如何在bash脚本中获取“之前执行的命令”?

发布时间:2020-12-15 18:58:57 所属栏目:安全 来源:网络整理
导读:我使用多个bash会话,我想在一个文件中跟踪所有这些历史记录(我不关心它是从多个会话多路复用,我总是可以在它前面放置一个会话标识符.)我有试着做 shopt -s histappend 并且还添加 history -a 到$PROMPT_COMMAND变量.但是它们都没有真正适合我,我不明白为什么
我使用多个bash会话,我想在一个文件中跟踪所有这些历史记录(我不关心它是从多个会话多路复用,我总是可以在它前面放置一个会话标识符.)我有试着做
shopt -s histappend

并且还添加

history -a

到$PROMPT_COMMAND变量.但是它们都没有真正适合我,我不明白为什么它们不起作用(就我所知,它们表现得非常不确定……有时它们会从多个会话中复用命令,有时它们不会).

这个问题的目标是探索另一种方法来保持所有会话的历史记录,在那里我可以控制我写入历史记录的内容.我们的想法是将“previous command”存储在shell变量中,然后将该变量回显到PS1变量定义中的history-log文件中.

问题是:如何在shell变量中获取“先前执行的命令”.我知道我可以执行回声!! >>交互式bash会话中的logfile.txt将其记录到日志文件中.但是如何在脚本文件(或.bashrc文件)中执行此操作?

我努力了

PROMPT_COMMAND="PC=$_;"
PREVIOUS_COMMAND=$(echo $PC)  # $_ only gives the last argument of previous command
export PS1="[u@h w] [$PREVIOUS_COMMAND $(echo $_) $_] $"

但这一切都无效.

谢谢你的时间,
?瑜伽士

就像是
fc -ln -1

应该管用.也就是说,您可能遇到并发访问问题(阅读:多个shell覆盖彼此的历史记录),您可能无法手动做得更好.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读