Less
短時間內自動退出少
我使用 less 查看包含敏感資訊的命令的文本輸出。Less 對此有好處,因為它使用備用螢幕並在使用後擦拭它。我希望在短時間內退出較少的會話,比如 5 分鐘。
是否有任何簡單的命令行方法可以使用管道文本呼叫 less 並在 5 分鐘後自動退出?
假設你有 GNU coreutils,一個簡單的方法是在這些敏感的命令中替換
less
為。timeout --foreground 600 less; printf '\033[?47h'; clear; printf '\033[?1049l'; stty cooked echo
該timeout
命令在給定持續時間後終止程序,--foreground
開關允許less
使用 TTY,並stty cooked echo
在終止後修復終端less
。如果殺死less
阻止了備用螢幕的清除和退出,則乾預命令會執行此操作。命令中使用的轉義序列適用於與
printf
DEC 兼容的終端(仿真器),例如 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 上進行了測試。