我正在尝试将fzf
输出与通过xargs
启动的命令相结合,该命令的输出需要用less
进行分页。
使用基本命令的最简单示例如下:
echo test | fzf | xargs echo | less
在本例中,我使用echo
和字符串test
使其成为自包含的。
整个命令允许使用fzf
选择字符串test
,然后使用xargs
启动最简单有用的命令(echo
(,其输出预计将使用less
进行分页。
然而,当运行less
时,终端结果为"0";破碎的";并且要求CCD_ 12再次可用。
有没有一种方法可以让它在没有";断开";终端?
有趣的是,以下变体,其中一个单独的管道被移除,不会引起任何问题:
echo test | fzf | less
echo test | xargs echo | less
echo test | fzf | xargs echo
看来是这三个程序的结合造成了问题。
---ADDEDUM-
经过更多的测试,我发现当命令在Kitty作为终端模拟器和Bash作为shell下运行时会出现问题。
在Kitty+Zsh下试用->它是有效的。在xterm+Bash下尝试->它是有效的。
我现在认为这个问题范围太窄,不太有趣!我修改了标题以反映这种特殊性。
我在Kitty+fzf(在macOS上(中遇到了这个问题,并通过在fzf命令行中加前缀将TERM环境变量设置为";xterm";,例如,这至少解决了我在zsh中的问题:
TERM=xterm $(echo test | fzf | xargs echo | less)
我不知道为什么它能起作用,但偶尔会有一些东西让kitty崩溃,添加TERM=xterm
似乎经常会有所帮助,这很奇怪,因为echo $TERM
返回";xterm";不管怎样,对我来说是一个新的外壳。