所以我想通过将命令的输出传递给|来在终端中为我的自定义bash命令提供水平滚动少-S
但是,如果我这样做,一旦退出较少,命令的输出将不会保留在命令行历史记录中
当你退出时,有没有办法配置less以保持历史记录中的命令输出?
例如.如果你看看git diff,你可以执行水平滚动然后退出但是输出仍然保留在历史记录中,然后你可以输入新的命令……我基本上想要为我的自定义bash命令模拟它.同样在git diff中,它在现场执行水平滚动(即不使用新的屏幕),命令行历史记录仍然可见,而少用它会在自己的屏幕上执行,你将无法看到命令线路历史,而“减少”.是否有可能在较少的情况下模拟这种git diff-like机制?
如果有任何其他解决方案,没有使用更少的随意抛出它
更新的问题
所以假设我这样做:
cat loremipsum | less -FRSX
Lorem ipsum dolor sit amet,consectetur adipiscing elit. Nullam sed
然后我向右按两次,使其向右滚动两次.然后我按q退出更少.屏幕上保留的输出将是:
cat loremipsum | less -FRSX
Lorem ipsum dolor sit amet,consectetur adipiscing elit. Nullam sed
ESCOC
dictum diam. Nullam quis urna ullamcorper,accumsan quam vitae,aliquet
ESCOD
nisl. Maecenas vitae lorem orci. Ut vel est erat. Cras quis sagittis sapien,ac volutpat metus.
username@server:~/httpdocs$
但是在git diff中你做同样的事情,然后按q,只有最后一部分(即我滚动到右边的屏幕的最后一部分)
git diff
nisl. Maecenas vitae lorem orci. Ut vel est erat. Cras quis sagittis sapien,ac volutpat metus.
username@server:~/httpdocs$
将保留在屏幕上
我如何才能实现这一点
最佳答案
我现在无法访问任何可以运行git diff的内容,但如果我正确地阅读了您的问题和评论,我认为-X选项可以帮助减少.例如
原文链接:https://www.f2er.com/linux/440215.htmlls -la | less -SX
这可以防止在显示输出之前保存和清除屏幕,以及在退出时清除和恢复屏幕.
更新
我拉了一个git工作区,想出了git diff实际上在做什么:
$pstree -p | grep git
|-xterm(6021)---bash(6023)---sh(6104)---git(17708)---less(17709)
$cat /proc/17709/cmdline | xargs -0 echo
less
$cat /proc/17709/environ | xargs -0 --replace echo {} | grep LESS
LESSOPEN=|/usr/bin/lesspipe.sh %s
LESS=FRSX
$
所以git diff没有将选项传递给less.相反,它将LESS环境变量设置为FRSX.这与将-FRSX选项传递给less相同.那么,你得到了-FRSX你需要的东西:
ls -la | less -FRSX