在 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;)
$