GNU 화면 로그 파일의 파일 이름으로 시작 시 날짜와 시간의 조합을 사용하고 싶습니다. screenrc에서 다음을 입력하면
logfile '~/log/screen_%H_%m%d%Y_%0c-%t.%n'
다음과 같이 동적으로 생성된 파일을 얻습니다.
screen_nanna13_06062012_08:03-bash.0
이제 화면의 하드 상태 표시줄에 해당 파일 이름이 표시되기를 원합니다. 사용할 수 없습니다
hardstatus string '~/log/screen_%H_%m%d%Y_%0c-%t.%n'
시간이 바뀔 때마다 자리 표시자가 업데이트되기 때문입니다.
제가 생각할 수 있는 솔루션에는 화면이 시작되기 전에 실행되는 bash 코드가 포함되어 있지만 개별 화면 창은 자체 동적 로그 파일을 얻어야 하기 때문에 좋지 않습니다.
화면에 변수 대체 메커니즘이 있나요?
답변1
screen 명령을 사용하여 해결책을 찾았습니다 backtick
.
backtick 1 0 0 date +%d%b%Y_%k:%M
logfile '~/log/%H_%1`-%t.%n'
hardstatus string '~/log/%H_%1`-%t.%n'
UNIX 날짜 명령을 사용하여 현재 날짜/시간을 %1` 변수에 로드합니다. 유일한 문제는 세션 중에 나중에 새 창이 생성되면 로그 파일 이름의 날짜가 변경되지 않는다는 것입니다(그러나 나에게는 이것이 해당 로그 파일을 더 잘 식별할 수 있게 해주기 때문에 기능이기도 합니다).
답변2
이 명령은 정확히 달성하려는 명령이며, 새 창이 생성되는 경우 로그 파일 이름의 날짜도 변경합니다.
backtick 1 1 0 /bin/date +%Y-%m-%d_%k.%M.%S # generate %1`
logfile '~/log/%H_%1`-%t.%n'
hardstatus string '~/log/screenlog_%H_%1`_win.%n.txt'
출처: 화면 매뉴얼 페이지
추신. backtick 1 0 0
버전에서는 전혀 작동하지 않습니다. 4.08.00 시도했을 때. 그것은 단지 그것을 완전히 무시합니다.