gpt4 book ai didi

linux - 如何为每个命令重定向文件中的 STDOUT 和 STDERR?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:31:12 25 4
gpt4 key购买 nike

<分区>

我正在尝试将来自终端的 STDOUT 和 STDERR(如果可能的话,用户提供的 STDIN)存储在每个命令的文件中。

所以我开始创建一个陷阱函数以编辑的方式执行每个命令,例如:

shopt -s extdebug

preexec_invoke_exec () {
[ -n "$COMP_LINE" ] && return # do nothing if completing
[ "$BASH_COMMAND" = "$PROMPT_COMMAND" ] && return # don't cause a preexec for $PROMPT_COMMAND

eval `history 1 | sed -e "s/^[ ]*[0-9]*[ ]*//"` |& tee ~/recent_output.txt
return 1 # This prevent executing of original command
}
trap 'preexec_invoke_exec' DEBUG


并保存上述文件并执行

source file.sh

这完成了我想要的工作,但停止了一些命令的执行,如

cd ..

这样做的原因是管道创建了一个子 shell,然后执行其中的每个命令。因此主外壳不受影响。

甚至是 bash 的脚本功能,即

script ~/recent_output.txt

有效,但仅在您在终端中执行 exit 后才提供输出

所以,基本上我想存储/获取在 bash 终端中执行的先前命令的输出。您可以使用任何语言(golang、python...)帮助我。

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