Zsh 셸에서 기록 명령의 날짜 / 시간 스탬프를 보는 방법


34

우분투 서버에서 history 명령을 실행하면 다음과 같이 출력됩니다.

   history
   ...
   25  cd ~
   26  ls -a
   27  vim /etc/gitconfig
   28  vim ~/.gitconfig

특정 사용자의 날짜 시간을보고 싶습니다. 그러나 내가 그들을 생각할 때 :

su otheruser
export HISTTIMEFORMAT='%F %T  '
history
...
25  cd ~
26  ls -a
27  vim /etc/gitconfig
28  vim ~/.gitconfig

여전히 날짜 시간을 표시하지 않습니다. zsh 셸을 사용하고 있습니다.

답변:


48

나는 HISTTIMEFORMAT이 Bash shells라고 생각합니다. 사용하는 경우 zsh다음 스위치를 history명령에 사용할 수 있습니다 .

$ history -E
    1   2.12.2013 14:19  history -E

$ history -i
    1  2013-12-02 14:19  history -E

$ history -D
    1  0:00  history -E
    2  0:00  history -i

당신이 man zshoptions또는man zshbuiltins 이러한 스위치에 대한 자세한 정보와 관련된 다른 정보를 찾을 수 있습니다 history.

zshbuiltins 매뉴얼 페이지에서 발췌

Also when listing,
  -d     prints timestamps for each command
  -f     prints full time-date stamps in the US `MM/DD/YY hh:mm' format
  -E     prints full time-date stamps in the European `dd.mm.yyyy hh:mm' format
  -i     prints full time-date stamps in ISO8601 `yyyy-mm-dd hh:mm' format
  -t fmt prints time and date stamps in the given format; fmt is formatted 
         with the strftime function with the  zsh extensions described for 
         the %D{string} prompt format in the section EXPANSION OF PROMPT 
         SEQUENCES in zshmisc(1).  The resulting formatted string must be no 
         more than 256 characters or will not be printed.
  -D     prints elapsed times; may be combined with one of the options above.

디버깅 호출

다음 두 가지 방법을 사용하여 zsh호출 할 때 디버그 할 수 있습니다.

방법 # 1

$ zsh -xv

방법 # 2

$ zsh
$ setopt XTRACE VERBOSE

두 경우 모두 시작시 다음과 같이 표시됩니다.

$ zsh -xv
#
# /etc/zshenv is sourced on all invocations of the
# shell, unless the -f option is set.  It should
# contain commands to set the command search path,
# plus other important environment variables.
# .zshenv should not contain commands that produce
# output or assume the shell is attached to a tty.
#

#
# /etc/zshrc is sourced in interactive shells.  It
# should contain commands to set up aliases, functions,
# options, key bindings, etc.
#

## shell functions
...
...
unset -f pathmunge _src_etc_profile_d
+/etc/zshrc:49> unset -f pathmunge _src_etc_profile_d

# Created by newuser for 4.3.10

6
"이벤트를 찾을 수 없습니다 : -i" "이벤트를 찾을 수 없습니다 : -E". 이 스위치를 실행하기 전에 구성 파일에 무언가를로드해야합니까?
JohnMerlino

1
어떤 버전 zsh입니까? zsh --version. 방금 Ubuntu 12.10에서 내가 준 명령이 제대로 작동한다는 것을 확인했습니다.
slm

17
@ JohnMerlino 나는 타임 스탬프로 기록을보고 싶었던 서버에 zsh 4.3.10 (x86_64-unknown-linux-gnu)을 가지고있었습니다. zshbuiltins매뉴얼 페이지를 살펴본 후을 사용해야한다는 것을 알게되었습니다 fc. 마침내 나를 위해 일한 것은 fc -li. 에 명령 번호를 전달할 수도 fc있으므로 fc -li -100내역에서 마지막 100 개의 명령을 나열합니다.
Thomas Upton

21
난 사용해야 \history -E해요, 나는 oh-my-zsh
juanpastas를 사용합니다

1
oh-my-zsh의 오랜 (6 년 이상) 버그입니다. github에서이 문제를 참조하십시오 : github.com/robbyrussell/oh-my-zsh/issues/739
rococo

20

history -E또는 나를 위해 작동 하지 않는history -i 무엇이든 .

zsh --version보여줍니다 zsh 4.3.6 (x86_64-suse-linux-gnu).

그런 다음 fc -li 100작동합니다! 타임 스탬프가있는 최근 100 개의 명령을 보여줍니다 :)


감사합니다. 이것은 최고의 답변과 달리 저에게도 효과적이었습니다. 내 버전은 zsh 5.1.1 (x86_64-ubuntu-linux-gnu)입니다. 그리고 내가 여기있는 동안 : 당신은 명령의 도움을 얻는 방법을 알고 fc있습니까? 어느 쪽도하지 man fc않고 fc --help
exhuma

@exhuma 왜 구글 구글 :)
Gab 是 好人

@Gab 是 好人 당신은 별칭이 있습니까? oh-my-zshhistory 명령을 사용 하는 -l경우 옵션 중 하나에 플래그를 추가하십시오 . github.com/robbyrussell/oh-my-zsh/blob/master/lib/…
Mike D

1
fc -lf전체 타임 스탬프를 표시합니다. 이것은 bash가 아닌 zsh에서만 작동합니다.
dr01

@exhuma zsh에서는을 사용할 수 있습니다 run-help fc.
xuhdev

4

당신이 사용하는 경우 oh-my-zsh에 부가 기능 zsh, history -E또는 history -i이 별칭 있기 때문에 (실 거예요 작업을fc -l 1 ).

@juanpastas가 지적했듯이 시도하십시오.

\history -E

또는

\history -i

또는

fc -li 100


1
히스토리 별칭을 ~ / .zshrc 파일로 재정의하기 위해 'alias history = "fc -li 1"'을 추가했습니다. 이제 원하는대로 작동합니다!
user886869

또는 더 나은 : 'alias history = "history -i". 그렇게하면 별칭에서 동일한 명령을 실행할 수 있으며 더 많은 키 / 옵션을 추가하려는 경우 혼란스럽지 않습니다.
Dr Beco
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.