bash前缀输出与当前目录

时间:2017-04-04 21:44:33

标签: linux bash build

经过几个小时的抨击,我放弃了。

我在bash函数中有一个长时间运行的构建脚本,我们称之为“Build”:

function Build( ) {
    cd /plugins
    make
    cd /acc
    make
}

...我希望脚本的输出在每行上都有当前目录的前缀,如:

/plugins:   configure:  checking for gcc
/plugins/inner:   making inner modules
...
/acc:       configure: checking for speed of strstr.
/acc/misc   making misc pieces

....等等。脚本中有几十个“cd”,所以我不想改变每一个。尝试了各种管道组合到awk和陷阱DEBUG,但没有快乐。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您可以尝试使用以下函数覆盖内置cd

cd(){ builtin cd "$@"; pwd }

或者,如果您真的想要检测每个命令,那么:

trap "eval 'echo -n $PWD:'" DEBUG

或者即使在实际bash脚本的子进程内部(例如chdir)内实际跟踪每个make系统调用,您也可以使用strace

strace -f -e trace=chdir bash build.sh