타임스탬프가 있는 Bash 기록

타임스탬프가 있는 Bash 기록

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
  • 두 번째는 날짜, 세 번째는 시간
  • 최신은 명령줄입니다.

관련 정보