为在 shell 提示符下输入的每个命令调用一个脚本?

为在 shell 提示符下输入的每个命令调用一个脚本?

在 bash 上,有没有简单的方法来运行命令每一个在您的 shell 中输入另一个命令的时间?

我知道“陷阱...调试”,但不幸的是它确实不是为每个命令运行指定的代码。例如:

$ trap 'echo "COMMAND: $BASH_COMMAND"' DEBUG
$ ls
COMMAND: ls --color
[output of ls]

但:

$ (for a in `seq 1 10`; do echo -n "$a "; done;)
1 2 3 4 5 6 7 8 9 10

我想要一些可以给我“命令:(for a in ...)”的东西,例如在提示符下插入的任何命令。

答案1

您可以使用

PROMPT_COMMAND='printf "COMMAND:%s\n" "$(fc -ln|tail -1)"'

打印上一条命令其输出(在下一个提示之前)

$ PROMPT_COMMAND='printf "COMMAND:%s\n" "$(fc -ln|tail -1)"'
COMMAND:     PROMPT_COMMAND='printf "COMMAND:%s\n" "$(fc -ln|tail -1)"'
$ ls
32-but ubuntu-gnome/  IE9 - Win7/
[output of ls]
COMMAND:     ls
$ (for a in `seq 1 10`; do echo -n "$a "; done;)
1 2 3 4 5 6 7 8 9 10 COMMAND:    (for a in `seq 1 10`; do echo -n "$a "; done;)
$ 

相关内容