如何使用 zsh 将某些命令的输出通过管道传输到寻呼机?

uli*_*tko 5 zsh alias command-line svn

我经常使用它的客户端在控制台中使用 subversion svn。常见的任务之一是查看svn log;然而,尽管有--limit选择,它的输出通常相当大。我想将输出通过管道传输到我的$PAGERless确切地说是),就像git log那样。我想知道这是否可以通过zsh高级完成功能来实现;即每当我输入

svn log path1 path2 path3<Enter>
Run Code Online (Sandbox Code Playgroud)

管道结构将附加:

svn log path1 path2 path3 | $PAGER
Run Code Online (Sandbox Code Playgroud)

这对我来说类似于别名的工作方式,但来自“另一边”。

这在 zsh 中可能吗?

gar*_*ohn 7

您可以使用 shell 函数执行此操作。把它放在你的~/.zshrc.

svn() {
    if [ "$1" = "log" ]
    then
        command svn "$@" | less -FX
    else
        command svn "$@"
    fi
}
Run Code Online (Sandbox Code Playgroud)

我已经用bashand测试过p4,但它应该zsh和 and 一起工作svn。该-FX选项less告诉它退出,如果第一屏幕上的整个文件配合,而不是切换到备用屏幕。less如果输出适合一个屏幕,这使得它看起来根本没有使用。