gpt4 book ai didi

linux - 管道到 less -S 而不清除命令行历史记录的输出

转载 作者:IT王子 更新时间:2023-10-29 01:07:34 24 4
gpt4 key购买 nike

所以我想通过管道将命令的输出传送到 | 来为我的自定义 bash 命令在终端中水平滚动少-S

但是,如果我这样做,一旦你退出less,命令的输出将不会留在命令行历史中

有没有办法配置 less,在退出 less 时将命令的输出保留在历史记录中?

例如。如果你查看 git diff,你可以执行水平滚动然后退出,但输出仍然保留在历史记录中,然后你可以在其中键入新命令......我基本上想为我的自定义模拟这个巴什命令。同样在 git diff 中,它会在现场执行水平滚动(即不使用新屏幕)并且命令行历史记录仍然可见,而对于 less 它会在它自己的屏幕,你将无法在“lessing”时看到命令行历史记录。是否也可以在 less 中模拟这种类似 git diff 的机制?

如果有任何其他不使用 less 的解决方案,请随意将其抛出

更新问题

假设我这样做:

cat loremipsum | less -FRSX

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam sed

然后我按向右两次,使其向右滚动两次。然后我按 q 退出 less。留在屏幕上的输出将是:

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 的东西,但如果我正确阅读了你的问题和评论,我认为 less 的 -X 选项会有所帮助。例如

ls -la | less -SX

这可以防止 less 在显示输出之前保存和清除屏幕,以及在退出时清除和恢复屏幕。

更新

我拉了一个 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

关于linux - 管道到 less -S 而不清除命令行历史记录的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19300121/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com