이 옵션을 활성화하기 전에 실행된 명령의 타임스탬프를 기록에 인쇄하지 않도록 할 수 있습니까?

이 옵션을 활성화하기 전에 실행된 명령의 타임스탬프를 기록에 인쇄하지 않도록 할 수 있습니까?

이를 실행하면 history타임스탬프를 활성화하기 전에 실행한 명령 이전에 현재 날짜가 출력됩니다. 어쨌든 이를 무시하도록 할 수 있습니까?

예를 들어, 내 .bash_history모습이 다음과 같다면:

1  +2016-01-30 16:54:10 cd /tmp
2  +2016-01-30 16:54:10 wine *exe
3  +2016-01-30 16:54:10 grep...
4  +2016-01-30 16:54:10 sed.....
5  +2016-01-30 16:52:20 history

$HISTTIMEFORMAT명령 1-4에서 날짜를 출력하지 않기를 원합니다. 왜냐하면 그것은 단지 현재 날짜이고 이 명령을 실행할 때 활성화되어 있지 않기 때문입니다.

답변1

귀하의 .bash_history파일은 이와 같지 않고 단지 history표시될 뿐입니다. 파일의 형식은 #별도의 줄에 단일 숫자(에포크 이후 초)입니다. 시간 값이 저장되어 읽히지 않은 항목의 경우 실제 현재 시간이 아닌 현재 쉘 읽기 기록 시간(보통 쉘이 시작된 시간)이 표시됩니다.

실제 값이 없는 각 항목 앞에 알려진 시간이 있는 숫자를 삽입하도록 파일을 편집하는 경우 표시되지 않는 #해당(형식화된) 시간에 대한 #seconds별칭이나 함수(또는 스크립트 sed) 를 설정할 수 있습니다. awk그리고 (적어도 제가 제공해야 하는 버전인 4.1.2 및 4.3.11에서는) #0파일을 편집하여 특별히 삽입하면 파일이 유효하지 않은 것으로 간주되어 표시됩니다 ??(물음표 두 개).바꾸다형식화된 시간입니다. 요청하신 시간은 아니지만 정부 업무를 위해 충분히 가까울 수 있습니다.

시간과 오류를 절약하려면 다음 명령을 사용하여 이 편집을 자동화할 수 있습니다.

perl -ni.bak 'if /^#/ print $_.<> else print "#seconds".$/.$_' .bash_history

관련 정보