可视化命令的子shell/进程



有时shell命令会因为子shell进程而出现意外行为。

我最近遇到的一个例子是,这个命令不起作用,因为xargs在subshell中运行cd-命令:

ls | sort | tail -1 | xargs cd

另一个原因是cd在Makefiles中不起作用。

有没有一种方法可以可视化哪些shell/子shell/进程在(链式(命令中做什么?我想对他们有更好的感觉。

也许以下实用程序可以帮助调试管道语句:

function _() {
local code=0
"$@" || code=$? > >(tee -a "$1".out) 2> >(tee -a "$1".err >&2)
echo Exited with "$code" >> "$1".out
}

用法:

_ ls | _ sort | _ tail -1 | xargs _ cd

最新更新