Skip to content


История команд в bash с указанием даты и времени

Big brother is watching you Читая в очередной раз man по bash-у, наткнулся на интересную переменную оболочки, цитирую:

HISTTIMEFORMAT
If this variable is set and not null, its value is used as a format string for strftime(3) to print the time stamp associated with each history entry displayed by the history builtin. If this variable is set, time stamps are written to the history file so they may be preserved across shell sessions.

Это означает, что в историю команд можно добавлять дату и время, когда была выполнена та или иная команда. В случае, когда сервер администрируют несколько человек, это может быть весьма полезно при различных "разборах полетов" на тему кто где и когда накосячил :) Для этого в bashrc (системный, который /etc/bashrc, или в домашней директории, который ~/.bashrc) нужно добавить строчку:

export HISTTIMEFORMAT="%h/%d - %H:%M:%S "

После чего история команд вместо этого

    3  h
    4  man bash
    5  cat ~/.bashrc
    6  less ~/.bashrc

будет уже выглядеть более подробно, примерно вот так:

    3  Июл/04 - 19:55:01 h
    4  Июл/04 - 19:55:26 man bash
    5  Июл/04 - 20:25:13 cat ~/.bashrc
    6  Июл/04 - 20:25:18 less ~/.bashrc

P.S. А на тему происхождения картинки с глазом, которая в этой заметке в качестве иллюстрации притулена, весьма интересно написано в Википедии.

Posted in *nix.

Tagged with , .


2 Responses

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.

  1. Харон says

    есть мнение, что выбранный тобой формат не очень удобен для автоматического анализа и вообще русские буквы - это не круто :)
    Если бы я использовал bash, то поставил бы
    export HISTTIMEFORMAT="%t%d.%m.%y %H:%M:%S%t"
    результат:
    1898 13.05.09 13:20:15 history | awk '/aptsearch/'
    1899 13.05.09 13:20:34 history | awk '/history/'

  2. Admin says

    Согласен, твой формат лучше :) Сам я окончательно остановился на таком: "%Y%m%d %H:%M:%S "

You must be logged in to post a comment.