当我在 shell(zsh)中工作时,经常发生的情况是,我cd
在某个地方执行了 ed ,然后我想快速查看一下目录。使用ls
可能会产生大量输出并将其留在终端中。使用ls | less
更好,但是当我退出时,它再次留下痕迹,less
所有输出都在那里。你知道我如何做类似的事情ls | less
,但当我退出时less
,它不会改变终端屏幕吗?
答案1
对我来说,less
表现就像你描述的一样 - 我需要less -X
使用禁用这种行为。
您可以尝试明确使用“替代屏幕缓冲区“许多终端都实现了。
vim
/之类的编辑器会使用它nano
,这样当退出时,终端就会恢复到之前的状态。
尝试这个:
tput smcup
ls | less
tput rmcup
如果tput
不可用,则分别尝试使用echo $'\e[?1049h'
/ echo $'\e[?1049l'
。
答案2
既然您提到您正在使用 zsh,那么您可以利用 zsh 内置的制表符补全功能。您不会得到“长”的 ls 列表,但您可以通过键入“ls”后跟制表符来预览目录和文件的名称。您将看到当前工作目录中可以“ls”的文件/目录,然后您可以具体 ls 一个,添加“-l filename”以详细查看某个文件/目录,或者只需按“Control-u”清除您所在的行并准备输入其他命令,制表符补全建议就会消失。
例如,当我在其中一台虚拟机上执行“ls [TAB]”时,我看到:
user@fbsd:~% ls
.cshrc .mailrc .ssh/
.login .profile .zshrc
.login_conf .rhosts code/
.mail_aliases .shrc inventory.hw.gather.sh*
当我按下 Control-u 时,命令行下方的建议就消失了。