≡ Menu

Bash History: Display Date And Time For Each Command

How do I display shell command history with date and time under UNIX or Linux operating systems?

If the HISTTIMEFORMAT is set, the time stamp information associated with each history entry is written to the history file, marked with the history comment character. Defining the environment variable as follows:
$ HISTTIMEFORMAT="%d/%m/%y %T "
OR
$ echo 'export HISTTIMEFORMAT="%d/%m/%y %T "' >> ~/.bash_profile
Where,
%d - Day
%m - Month
%y - Year
%T - Time
To see history type
$ history
Sample outputs:

....
..
  986  11/03/10 04:31:36 memcached-tool  10.10.28.22:11211 stats
  987  11/03/10 04:31:36 w
  988  11/03/10 04:31:37 iostat
  989  11/03/10 04:31:37 top
  990  11/03/10 04:31:37 at
  991  11/03/10 04:31:38 atop
  992  11/03/10 04:31:40 collectl
  993  11/03/10 04:31:41 grep CPU /proc/cpuinfo
  994  11/03/10 04:31:45 vmstat 3 100
  995  11/03/10 04:31:55 sar -W -f /var/log/sa/sa12
....
..

References:

For more info type the following commands:
man bash
help history
man 3 strftime

Tweet itFacebook itGoogle+ itPDF itFound an error/typo on this page?

{ 37 comments… add one }

  • Deej March 11, 2010, 11:36 am

    Errant ‘ ” ‘; ought it to read:

    echo ‘export HISTTIMEFORMAT=”%d/%m/%y %T ‘ >> ~/.bash_profile

    ?

    Deej

  • Deej March 11, 2010, 11:37 am

    Ha, ha – even I messed up ! I see the command has now been amended.

    echo ‘export HISTTIMEFORMAT=”%d/%m/%y %T ” ‘>> ~/.bash_profile

    Deej

  • Abhijeet Vaidya March 11, 2010, 11:41 am

    End single quote is missing.
    Correct command is:
    echo ‘export HISTTIMEFORMAT=”%d/%m/%y %T “‘ >> ~/.bash_profile

    • Fouzan March 14, 2012, 12:47 pm

      Can you please suggest how to comeout from bash to normal user. after giving this command not able to come out from bash

  • nixCraft March 11, 2010, 11:46 am

    @Deej / Abhijeet,

    Thanks for the heads up. Due to caching it takes a few seconds to minutes to clean out old html page cache. The faq has been updated.

  • Somaikeres March 11, 2010, 12:17 pm

    Thanks, this helps a lot in an enterprise domain, where different ppl run different commands. Nice trick;)

  • Rahul Kolan March 11, 2010, 1:25 pm

    how to set this on solaris 10 and how to refresh local.login in solaris …

  • nixCraft March 11, 2010, 1:34 pm

    This is bash specific feature. Refer to your local ksh(1) man page or see fc -l. But, there is no $HISTTIMEFORMAT for ksh.

  • jake March 11, 2010, 1:56 pm

    awesome tip. i’ve forgoten to pursue this, but i’ve always wanted to add that to my bash hist file

    thx

  • LA March 11, 2010, 2:39 pm

    Is there a way to have cumulative history file where commands typed by all users are logged with date and time?

  • cindy March 11, 2010, 2:51 pm

    I don’t think this tip works for all version of Bash? Because I couldn’t get it working even I put this line in .bash_profile and .profile.

  • nixCraft March 11, 2010, 3:03 pm

    @LA, you need to configure system accounting and auditing which can keep track of all user activities, system resource consumptions and more. History is personal user account specific tool. Also, user can delete history or ignore history file. Search our site for sar and auditing howtos.

    @cindy, refer to your local bash man page. You can find out bash version number with the following command:
    echo $BASH_VERSION

  • cindy March 11, 2010, 4:06 pm

    Yes, I figured my bash is way too old to have this environment variable. The version that I have is “GNU bash, version 2.03.0(1)-release” and all the examples I found online is above 3.0. My collegue searched the “HISTTIMEFORMAT” in some man pages for history and other, we cannot find this variable. But it’s a nice tip to use. :(
    Thanks!

  • izaak March 12, 2010, 11:06 am

    I would also add
    $ echo 'export HISTSIZE=10000' >> ~/.bash_profile

    It’s really useful, I think.

  • Dariusz March 12, 2010, 2:31 pm

    you can add it to /etc/profile so it is available to all users. I also add:

    # Make sure all terminals save history
    shopt -s histappend histreedit histverify
    shopt -s no_empty_cmd_completion # bash>=2.04 only

    # Whenever displaying the prompt, write the previous line to disk:
    PROMPT_COMMAND=’history -a’

    #Use GREP color features by default: This will highlight the matched words / regexes
    export GREP_OPTIONS=’–color=auto’
    export GREP_COLOR=’1;37;41′

  • Babar Haq March 15, 2010, 6:25 am

    Good tip. We have multiple users connecting as root using ssh and running different commands. Is there a way to log the IP that command was run from?
    Thanks in advance.

    • Anthony August 21, 2014, 9:01 pm

      Just for anyone who might still find this thread (like I did today):

      export HISTTIMEFORMAT=”%F %T : $(echo $SSH_CONNECTION | cut -d\ -f1) : ”

      will give you the time format, plus the IP address culled from the ssh_connection environment variable (thanks for pointing that out, Cadrian, I never knew about that before), all right there in your history output.

      You could even add in $(whoami)@ right to get if you like (although if everyone’s logging in with the root account that’s not helpful).

  • cadrian March 16, 2010, 5:55 pm

    Yup, you can export one of this

    env | grep SSH
    SSH_CLIENT=192.168.78.22 42387 22
    SSH_TTY=/dev/pts/0
    SSH_CONNECTION=192.168.78.22 42387 192.168.36.76 22

    As their bash history filename

    set |grep -i hist
    HISTCONTROL=ignoreboth
    HISTFILE=/home/cadrian/.bash_history
    HISTFILESIZE=1000000000
    HISTSIZE=10000000

    So in profile you can so something like HISTFILE=/root/.bash_history_$(echo $SSH_CONNECTION| cut -d\ -f1)

  • TSI March 21, 2010, 10:29 am

    bash 4 can syslog every command bat afaik, you have to recompile it (check file config-top.h). See the news file of bash: http://tiswww.case.edu/php/chet/bash/NEWS
    If you want to safely export history of your luser, you can ssl-syslog them to a central syslog server.

  • Dinesh Jadhav November 12, 2010, 11:00 am

    This is good command, It helps me a lot.

  • Indie September 19, 2011, 11:41 am

    You only need to use

    export HISTTIMEFORMAT='%F %T '

    in your .bash_profile

  • lalit jain October 3, 2011, 9:58 am

    — show history with date & time

    # HISTTIMEFORMAT=’%c ‘
    #history

  • Sohail January 13, 2012, 7:05 am

    Hi
    Nice trick but unfortunately, the commands which were executed in the past few days also are carrying the current day’s (today’s) timestamp.

    Please advice.

    Regards

    • Raymond March 15, 2012, 9:05 am

      Hi Sohail,

      Yes indeed that will be the behavior of the system since you have just enabled on that day the HISTTIMEFORMAT feature. In other words, the system recall or record the commands which were inputted prior enabling of this feature. Hope this answers your concern.

      Thanks!

      • Raymond March 15, 2012, 9:08 am

        Hi Sohail,

        Yes, that will be the behavior of the system since you have just enabled on that day the HISTTIMEFORMAT feature. In other words, the system can’t recall or record the commands which were inputted prior enabling of this feature, thus it will just reflect on the printed output (upon execution of “history”) the current day and time. Hope this answers your concern.

        Thanks!

  • Sohail February 24, 2012, 6:45 am

    Hi

    The command only lists the current date (Today) even for those commands which were executed on earlier days.

    Any solutions ?

    Regards

  • nitiratna nikalje August 24, 2012, 5:24 pm

    hi vivek.do u know any openings for freshers in linux field? I m doing rhce course from rajiv banergy. My samba,nfs-nis,dhcp,telnet,ftp,http,ssh,squid,cron,quota and system administration is over.iptables ,sendmail and dns is remaining.

    -9029917299(Nitiratna)

  • JMathew August 26, 2012, 10:51 pm

    Hi,

    Is there anyway to log username also along with the Command Which we typed …

    Thanks in Advance

  • suresh May 22, 2013, 1:42 pm

    How can i get full comman along with data and path as we het in history command.

  • rajesh December 6, 2013, 5:56 am

    Thanks… it worked..

  • Krishan February 7, 2014, 6:18 am

    The command is not working properly. It is displaying the date and time of todays for all the commands where as I ran the some command three before.

    How come it is displaying the today date

  • PR April 29, 2014, 5:18 pm

    Hi..

    I want to collect the history of particular user everyday and want to send an email.I wrote below script.
    for collecting everyday history by time shall i edit .profile file of that user
    echo 'export HISTTIMEFORMAT="%d/%m/%y %T "' >> ~/.bash_profile
    Script:

    #!/bin/bash
    #This script sends email of particular user
    history >/tmp/history
    if [ -s /tmp/history ]
    then
           mailx -s "history 29042014"  </tmp/history
               fi
    rm /tmp/history
    #END OF THE SCRIPT
    

    Can any one suggest better way to collect particular user history for everyday

  • lefty.crupps October 24, 2014, 7:10 pm

    Love it, but using the ISO date format is always recommended (YYYY-MM-DD), just as every other sorted group goes from largest sorting (Year) to smallest sorting (day)
    https://en.wikipedia.org/wiki/ISO_8601#Calendar_dates

    In that case, myne looks like this:
    echo ‘export HISTTIMEFORMAT=”%YY-%m-%d/ %T “‘ >> ~/.bashrc

    Thanks for the tip!

    • lefty.crupps October 24, 2014, 7:11 pm

      please delete post 33, my command is messed up.

  • lefty.crupps October 24, 2014, 7:11 pm

    Love it, but using the ISO date format is always recommended (YYYY-MM-DD), just as every other sorted group goes from largest sorting (Year) to smallest sorting (day)
    https://en.wikipedia.org/wiki/ISO_8601#Calendar_dates

    In that case, myne looks like this:
    echo ‘export HISTTIMEFORMAT=”%Y-%m-%d %T “‘ >> ~/.bashrc

    Thanks for the tip!

  • Vanathu October 30, 2014, 1:01 am

    its show only current date for all the command history

    • lefty.crupps October 30, 2014, 2:08 am

      it’s marking all of your current history with today’s date. Try checking again in a few days.

Leave a Comment