在 shell 中预览当前目录

在 shell 中预览当前目录

当我在 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 时,命令行下方的建议就消失了。

相关内容