![프로그래밍 방식으로 Bash 기록에 항목을 추가하고 타임스탬프가 작동하도록 하려면 어떻게 해야 합니까?](https://linux55.com/image/23080/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D%20%EB%B0%A9%EC%8B%9D%EC%9C%BC%EB%A1%9C%20Bash%20%EA%B8%B0%EB%A1%9D%EC%97%90%20%ED%95%AD%EB%AA%A9%EC%9D%84%20%EC%B6%94%EA%B0%80%ED%95%98%EA%B3%A0%20%ED%83%80%EC%9E%84%EC%8A%A4%ED%83%AC%ED%94%84%EA%B0%80%20%EC%9E%91%EB%8F%99%ED%95%98%EB%8F%84%EB%A1%9D%20%ED%95%98%EB%A0%A4%EB%A9%B4%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%ED%95%B4%EC%95%BC%20%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
CentOS 6.2 및 Bash 4.1.2(1)에서 다음을 포함하는 파일을 추가했습니다 /etc/profile.d
.
HISTTIMEFORMAT='%c : '
history -s "# some text as a marker"
이는 변수가 설정되어 있고 태그가 사용자의 기록 목록에 기록되어 있는 한(그리고 ~/.bash_history
기록되어 있는 경우 exit
) 작동합니다.
문제는 다음과 같습니다
history -s
마커 추가 시 타임스탬프를 추가하지 마세요.- 뒤로 스크롤 기록이 표시에서 중지됩니다(
~/.bash_history
파일을 메모리로 읽지 않음). - 댓글을 표시하는 기록 항목에는 (누락된) 타임스탬프 대신 "??"가 있습니다.
나는 다음을 추가해 보았습니다:
history -s "#$(date +%s)"
다른 history -s
명령 앞에 있지만 Bash는 이를 동일한 형식임에도 불구하고 타임스탬프가 아닌 기록의 명령으로 처리합니다.
또 다른 옵션은 마커와 타임스탬프를 세션에 직접 첨부하는 것입니다 ~/.bash_history
. 하지만 나중에 추가하면 세션 기록의 활동과 연속되지 않습니다. 다른 사용자 또는 단일 사용자의 여러 세션으로 인해 태그와 관련 세션 사이에 추가 세션이 추가될 수 있습니다.
이러한 문제를 해결할 수 있는 방법이 있나요?
고쳐 쓰다:
set -o history
해당 줄을 추가(및 제거 ) 해 보았고 history -s "#$(date +%s)"
위에서 언급한 기록 스크롤 문제를 해결한 것처럼 보였지만 누락된 타임스탬프는 여전히 문제입니다.
답변1
나는이 질문을 게시했습니다.bash 메일링 리스트 도움말그리고 관리자인 Chet Ramey로부터 답변을 받았습니다.불다.
그는 명령 앞에 다음 중 하나를 추가할 것을 권장합니다 history -s
.
set -H # aka set -o histexpand
또는
histchars='!^#'
나는 그들 모두를 시도했고 모두 작동했습니다. 그 이유는 #
프로필 코드 실행시 기본 내역 댓글 문자가 설정되어 있지 않아 null( \0
)이기 때문입니다.
이것은 내 작업 파일입니다.
HISTTIMEFORMAT='%c : '
histchars='!^#'
set -o history
history -s "# some text as a marker"