![타임스탬프가 있는 Bash 기록](https://linux55.com/image/25955/%ED%83%80%EC%9E%84%EC%8A%A4%ED%83%AC%ED%94%84%EA%B0%80%20%EC%9E%88%EB%8A%94%20Bash%20%EA%B8%B0%EB%A1%9D.png)
Bash $HISTFILE에 기록된 명령의 타임스탬프를 유지하고 싶습니다. 가능합니까?
man bash
정보 출처로 설정하지 못했습니다 .
내 다른 옵션은 다음과 같습니다.
function thebanana() {
local -r -a bash_commands=(
"ls"
# ... more coconut commands
)
for bash_command in "${bash_commands[@]}"; do
printf "${bash_command}"
printf ":"
done
}
export HISTFILE=banana
export HISTIGNORE="$(thebanana)"
export HISTSIZE=999999
export HISTFILESIZE=999999999
export HISTCONTROL=ignoredups:erasedups
저는 OS X Mountain Lion을 사용하고 있다는 점을 언급하고 싶습니다(한숨). uname -a
나에게주세요:
Darwin CoconutMac.local 12.2.0 Darwin Kernel Version 12.2.0: Sat Aug 25 00:48:52 PDT 2012; root:xnu-2050.18.24~1/RELEASE_X86_64 x86_64
그리고 echo $BASH_VERSION
나에게 다음을 제공합니다:
3.2.48(1)-release
다음을 추가해 보세요.
export HISTTIMEFORMAT='%b %d %I:%M:%S %p '
다음과 같은 종류의 타임스탬프 접두사를 명령에 추가합니다.
#1349057791
변수( echo $HISTTIMEFORMAT
)를 에코해 보았더니 올바른 값이 나왔습니다.
흥미로운!
디버깅을 위해 .profile을 완전히 삭제하기도 했습니다. 여전히 흥미로운 타임스탬프만 있습니다.
#1349058320
이 문제를 더 이상 해결하는 방법을 모르겠습니다... :(
해결책: 제가 사용하고 있는 스크립트는 내장 기록이 아닌 $HISTFILE을 직접 읽으므로 epoch 기반 타임스탬프(1970년 1월 1일 협정 세계시(UTC) 이후의 초 수)가 날짜 형식 문자열을 사용하여 변환되지 않습니다. . 평범한 오래된 것이 history
훌륭하게 작동하므로 대신 사용하겠습니다.
답변1
예, 다음 항목에 입력하세요 ~/.bashrc
.
export HISTTIMEFORMAT='%F %T '
그런 다음 다음 명령을 실행하십시오.
. ~/.bashrc
history
다음과 같습니다.
(...)
5200 2012-09-30 23:55:37 find -printf '%Ts %f\n'
5201 2012-10-01 00:00:58 ls
5202 2012-10-01 00:03:45 cd
(...)
출력 설명:
- 첫 번째 열은 고유합니다.
id
- 두 번째는 날짜, 세 번째는 시간
- 최신은 명령줄입니다.