我有一个xargs
递归调用 git 命令的函数。
当我现在调用时,gitr log
我必须按 Enter 直到结束或按 q 才能xargs
运行下一个调用。
我可以告诉xargs
跳过用户输入或less
立即输出所有内容吗?
答案1
如果您希望它在不运行的情况下转储所有内容,您可以git
使用该选项进行调用。以下是来自--no-pager
less
手册页:
--无寻呼机
不要将 git 输出通过管道传输到分页器中。
答案2
尝试重定向标准输入或标准输出或两者。
例如:
gitr log < /dev/null | cat
答案3
提示您的不是 xargs,而是 less。 less 不是由 xargs 调用的,而是由 git 调用的。
git 的每次调用一次对一个存储库进行操作,因此如果您想对多个存储库进行操作,则需要告诉 git 不要调用寻呼机。不过,您可能想手动调用寻呼机。
下面是一些未经测试的概念验证代码,这些代码会导致 git 不调用分页器,而是在交互调用时在所有 git 调用的输出上调用分页器。您的代码进入run_git
辅助功能。
gitr () {
if [ -t 1 ]; then
run_git \
-ccolor.branch=always "$@" -ccolor.grep=always -ccolor.showbranch=always -ccolor.status=always \
| ${GIT_PAGER:-less -r}
else
run_git "$@"
fi
}