타임 스탬프가있는 배쉬 기록 done } export HISTFILE=banana export HISTIGNORE=”$(thebanana)” export HISTSIZE=999999 export

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을 직접 읽는 스크립트를 사용했기 때문에 에포크 기반 타임 스탬프 (1970 년 1 월 1 일 협정 세계시 (UTC) 이후의 초)가 날짜 형식화 문자열을 사용하여 변환되지 않았습니다. . 평범한 것이 history잘 작동합니다. 대신 사용하겠습니다.



답변

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