gpt4 book ai didi

bash - 如何在 bash 脚本中获取 "previous executed command"?

转载 作者:行者123 更新时间:2023-11-29 08:53:13 25 4
gpt4 key购买 nike

我使用多个 bash session ,我想在一个文件中跟踪所有这些 session 的历史记录(我不关心它是从多个 session 中复用的,我总是可以在它前面放一个 session 标识符。 ) 我试过做

shopt -s histappend

同时添加

history -a 

$PROMPT_COMMAND 变量。但是它们都不适合我,而且我不明白为什么它们不起作用(据我所知,它们的行为非常不确定......有时它们会从多个 session 中复用命令,有时它们不会).

这个问题的目的是探索一种替代方法来保留所有 session 的历史记录,我可以控制我写入历史记录的内容。这个想法是将“上一个命令”存储在一个 shell 变量中,然后将该变量回显到 PS1 变量定义内的历史日志文件中。

问题是:如何在 shell 变量中获取“先前执行的命令”。我知道我可以执行 echo !! >> logfile.txt 在交互式 bash session 中将其记录到日志文件中。但是我如何在脚本文件(或 .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 会覆盖彼此的历史记录)并且您可能无法通过手动方式做得更好。

关于bash - 如何在 bash 脚本中获取 "previous executed command"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6756360/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com