短い時間後に自動的にless終了

短い時間後に自動的にless終了

機密情報を含むコマンドのテキスト出力を表示するには、lessを使用します。レスはバックアップ画面を使用し、使用後に消去するので良いです。短い時間(たとえば、5分)後、より少ないセッションが終了したいと思います。

パイプテキストを使用して呼び出しを少なくし、5分後に自動的に終了する簡単なコマンドライン方法はありますか?

ベストアンサー1

GNU coreutilsがあると仮定すると、簡単な方法は機密コマンドを置き換えることですlesstimeout --foreground 600 less; printf '\033[?47h'; clear; printf '\033[?1049l'; stty cooked echoこのtimeoutコマンドは、指定された期間後にプロセスを終了し、TTYの使用を--foreground許可するように切り替え、終了後に端末を回復します。シャットダウンによってバックアップ画面が消去または終了しない場合は、介入コマンドがこれを実行します。lessstty cooked echolessless

コマンドで使用されるエスケープシーケンスは、printfXtermなどの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でテストされています。

おすすめ記事