如何将最后一个命令的打印输出存储在 urxvt/zsh 的 shell 变量中?

如何将最后一个命令的打印输出存储在 urxvt/zsh 的 shell 变量中?

我希望在 zsh 中运行的最后一个命令的打印输出(stdout 和 stderr)可在可供使用的变量中使用grep,等等。

答案1

您可以将命令的输出重定向到文件(甚至变量),但这不会自动发生。

重定向输出是手册页中的一个大主题。只是为了提醒您这个术语,这会重定向标准输出和错误:

foo=$(command 2>&1)

通过检查

$ foo=$(oops 2>&1); date; echo "$foo"
Sun Feb 28 20:59:18 EST 2016
sh: 1: oops: not found

进一步阅读:

答案2

您可以设置寻呼机来捕获输出,然后在它适合一个屏幕时退出。当它不适合时,您可以使用寻呼机滚动和搜索。

export PAGER=less
export LESS=-FSXRi
# -F and -X are relevant here, but that's what I use
# also, less quickly toggles most by typing '-' and the option

我想 zsh 有一种方法可以自动修改命令以通过寻呼机,但我不知道如何实现。

将此输出与适合一个屏幕的不同目录进行比较:

find ~ -type f |& less
# |& to capture both stdout and stderr

相关内容