从长时间运行的命令的标准输出更新终端标题?

从长时间运行的命令的标准输出更新终端标题?

我想在长时间运行的命令(例如:)期间使用git svn fetch从输出中获取的值来更改终端窗口的标题,同时仍写入标准输出。

使用命名管道或 tee 和 xargs 可以实现这一点吗?

我在想

git svn fetch | sed "s/^\(r\d*\).*$/ \"\\\033]0;\"\1\"\\\007\"/" | xargs -l1 echo -ne

基于:http://tldp.org/HOWTO/Xterm-Title-3.html


更新

让它工作就足够了:

(echo "r9" ; echo "r10") | sed "s/^\(r\d*\).*$/ \"\\\033]0;\"\1\"\\\007\"/" | xargs -l1 echo -ne

更新 2:

这几乎满足了我的要求。我看到了 r10,但没有看到 r9:

(echo "r9" ; sleep 1 ; echo "r10") | sed "s/^\(r[0-9]*\)\.*$/\\\033]0;\1\\\007/" | xargs -0 echo -ne

答案1

我没有完整的答案,但一种方法是tee将 git 的输出发送到另一个脚本和标准输出。例如:

$ git svn fetch | tee grepping-and-prompt-changing-script.sh

这里有一些例子:

http://linux.101hacks.com/unix/tee-command-examples/

相关内容