Less

短時間內自動退出少

  • February 7, 2018

我使用 less 查看包含敏感資訊的命令的文本輸出。Less 對此有好處,因為它使用備用螢幕並在使用後擦拭它。我希望在短時間內退出較少的會話,比如 5 分鐘。

是否有任何簡單的命令行方法可以使用管道文本呼叫 less 並在 5 分鐘後自動退出?

假設你有 GNU coreutils,一個簡單的方法是在這些敏感的命令中替換less為。timeout --foreground 600 less; printf '\033[?47h'; clear; printf '\033[?1049l'; stty cooked echotimeout命令在給定持續時間後終止程序,--foreground開關允許less使用 TTY,並stty cooked echo在終止後修復終端less。如果殺死less阻止了備用螢幕的清除和退出,則乾預命令會執行此操作。

命令中使用的轉義序列適用於與printfDEC 兼容的終端(仿真器),例如 Xterm。您的特定終端可能使用不同的序列來完成此任務。

一個簡單的功能:

tless () {
 timeout --foreground 600 less "$@"
 printf '\033[?47h' # Enter alternate screen
 clear
 printf '\033[?1049l' # Exit alternate screen and restore cursor
 </dev/tty stty cooked echo # Use in a pipe requires specifying the TTY
}

可以大大減少打字。


感謝@meuh 指出原始版本可能無法清除或退出備用螢幕。

編輯為允許tless some-file. 此外,該版本已在 Linux 和 Solaris 11 上進行了測試。

引用自:https://unix.stackexchange.com/questions/422007