34

When I run the history command on my ubuntu server, I get output as follows:

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

I want to view the datetime of a particular user. However when I assume them:

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

It still doesn't show datetime. I am using zsh shell.

50

I believe the HISTTIMEFORMAT is for Bash shells. If you're using zsh then you could use these switches to the history command:

Examples

$ 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

If you do a man zshoptions or man zshbuiltins you can find out more information about these switches as well as other info related to history.

excerpt from zshbuiltins man page

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.

Debugging invocation

You can use the following 2 methods to debug zsh when you invoke it.

Method #1

$ zsh -xv

Method #2

$ zsh
$ setopt XTRACE VERBOSE

In either case you should see something like this when it starts up:

$ 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
    "event not found: -i " "event not found: -E". Do I need to load something in a config file before running these switches? – JohnMerlino Dec 2 '13 at 19:41
  • 1
    What version of zsh? zsh --version. I just confirmed on Ubuntu 12.10 that the commands I gave you worked just fine. – slm Dec 2 '13 at 19:52
  • 17
    @JohnMerlino I had zsh 4.3.10 (x86_64-unknown-linux-gnu) on a server for which I wanted to view history with timestamps. After looking through the zshbuiltins man page, I discovered that I needed to use fc. What finally worked for me was fc -li. You can pass command numbers to fc, too, so fc -li -100 lists the last 100 commands in your history. – Thomas Upton Jul 23 '14 at 13:11
  • 21
    I have to use \history -E, I use oh-my-zsh – juanpastas Sep 25 '14 at 22:30
  • 1
    It's a long-standing (6+ years) bug with oh-my-zsh, see this issue on github: github.com/robbyrussell/oh-my-zsh/issues/739 – rococo Jun 24 '18 at 20:28
20

history -E or history -i or whatever DO NOT work for me.

zsh --version shows that zsh 4.3.6 (x86_64-suse-linux-gnu).

Then fc -li 100 works! It shows the recent 100 commands with timestamp :)

  • Thanks, this worked for me as well, contrary to the top answer. My version is: zsh 5.1.1 (x86_64-ubuntu-linux-gnu). And while I'm here: do you know how to get the help of the command fc? Neither man fc nor fc --help work – exhuma Jun 13 '17 at 6:49
  • @exhuma why not google it :) – Gab是好人 Jun 14 '17 at 8:57
  • @Gab是好人 do you have history aliased? if you are using oh-my-zsh the history command is add the -l flag in one of the options. see github.com/robbyrussell/oh-my-zsh/blob/master/lib/… – Mike D Jun 19 '17 at 12:51
  • 1
    fc -lf will show a full timestamp. Note that this works only on zsh, not on bash. – dr01 Jul 27 '17 at 7:49
  • @exhuma In zsh, you can use run-help fc. – xuhdev Oct 28 '17 at 20:37
4

If you are using oh-my-zsh addon in zsh, history -E or history -i wont work (because it's aliased to fc -l 1).

As @juanpastas pointed out, try

\history -E

or

\history -i

or

fc -li 100

  • 1
    I just added: 'alias history="fc -li 1"' to redefine the history alias into my ~/.zshrc file and it's now working as desired! – user886869 Jun 8 at 23:14
  • or even better: 'alias history="history -i". That way you can run the same command in the alias, and if you want to add more keys/options it is not that confusing. – Dr Beco Oct 7 at 20:36

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.