짧은 시간 후 자동으로 less 종료

짧은 시간 후 자동으로 less 종료

민감한 정보가 포함된 명령의 텍스트 출력을 보려면 less를 사용합니다. Less는 백업 화면을 사용하고 사용 후 지우기 때문에 좋습니다. 짧은 시간(예: 5분) 후에 더 적은 세션이 종료되기를 원합니다.

파이프 텍스트를 사용하여 덜 호출하고 5분 후에 자동으로 종료되도록 하는 간단한 명령줄 방법이 있습니까?

답변1

GNU coreutils가 있다고 가정하면 간단한 방법은 민감한 명령을 바꾸는 것입니다 less. timeout --foreground 600 less; printf '\033[?47h'; clear; printf '\033[?1049l'; stty cooked echotimeout명령은 지정된 기간 후에 프로세스를 종료하고 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에서 테스트되었습니다.

관련 정보