機密情報を含むコマンドのテキスト出力を表示するには、lessを使用します。レスはバックアップ画面を使用し、使用後に消去するので良いです。短い時間(たとえば、5分)後、より少ないセッションが終了したいと思います。
パイプテキストを使用して呼び出しを少なくし、5分後に自動的に終了する簡単なコマンドライン方法はありますか?
答え1
GNU coreutilsがあると仮定すると、簡単な方法は機密コマンドを置き換えることですless
。timeout --foreground 600 less; printf '\033[?47h'; clear; printf '\033[?1049l'; stty cooked echo
このtimeout
コマンドは、指定された期間後にプロセスを終了し、TTYの使用を--foreground
許可するように切り替え、終了後に端末を回復します。シャットダウンによってバックアップ画面が消去または終了しない場合は、介入コマンドがこれを実行します。less
stty cooked echo
less
less
コマンドで使用されるエスケープシーケンスは、printf
XtermなどのDEC互換端末(エミュレータ)に適しています。特定の端末は、この操作を実行するために異なる順序を使用できます。
簡単な機能:
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でテストされています。