在 shell 中預覽目前目錄

在 shell 中預覽目前目錄

當我在 shell - zsh 中工作時經常發生的情況是,我已經cd編輯了某個地方,並且想要快速查看該目錄。使用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 文件名”以查看特定文件/目錄的詳細信息,或者只需單擊“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 時,命令列下方的建議消失了。

相關內容