The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Как хранить дату выполнения в истории команд bash
По умолчанию bash, а точнее утилита history, не сохраняет в .bash_history 
время исполнения каждой команды.

Почитал маны и оказалось, что в баше трейтье версии сделать это можно и весьма просто. 
Если объявить глобальную переменную HISTTIMEFORMAT с форматом выводимых данных, 
то утилита history будет сохранять и выводить эту дату.

Итак, пишем в ~/.bashrc строчку

   export HISTTIMEFORMAT='%h %d %H:%M:%S '

После этого в .bash_history перед каждой командой появится коментарий
 с цифрой - временем выполнения этой команды в формате timestamp:

   #1198068550
   history
   #1198139874
   ьс
   #1198139876
   mc
   #1198148168
   ssh teletrade.ru
   #1198148217
   ssh teletrade.ru

А команда history будет выдавать историю данных с датой в формате,
 который мы переменной задали (в похожем формате выдают дату и время утилита ls):

   995  Дек 19 15:49:10 history
   996  Дек 20 11:37:54 ьс
   997  Дек 20 11:37:56 mc
   998  Дек 20 13:55:49 ssh teletrade.ru

Но можно сделать и по ГОСТУ, в приятном русскому глазу виде "ДД.ММ.ГГГГ"

   export HISTTIMEFORMAT='%d.%m.%Y %H:%M:%S '

А можно и на американский манер "YYYY-MM-DD"

   export HISTTIMEFORMAT='%Y-%m-%d %H:%M:%S '
 
21.12.2007 , Автор: kpblca , Источник: http://tigro.info/blog/index.php?id...
Ключи: bash
Раздел:    Корень / Программисту и web-разработчику / Shell / Готовые скрипты

Обсуждение [ Линейный режим | Показать все | RSS ]
  • 1.1, samuchif (?), 17:48, 21/12/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > на американский манер "YYYY-MM-DD"

    или "на японский", или "MM-DD-YYYY" :)

     
  • 1.2, дима (??), 00:41, 22/12/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    спасибо,
    полезно
     
  • 1.3, FreeBSD user (?), 01:28, 22/12/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    а чем tcsh не подходит? для этого никаких лишних движений делать не надо
     
     
  • 2.7, Аноним (7), 06:28, 24/12/2007 [^] [^^] [^^^] [ответить]  
  • +/
    А tcsh таки научился делать такое: some-command >log 2>err-log ???

     
     
  • 3.8, FreeBSD User (?), 19:47, 25/12/2007 [^] [^^] [^^^] [ответить]  
  • +/
    >А tcsh таки научился делать такое: some-command >log 2>err-log ???

    Если исходить из темы, то вот это, по-моему, вполне схойдет за решение
    set history = 100
    set savehist = 100

    и в $HOME будет лежать файлик .history c записями вида

    #+1197969179
    clean
    #+1197969180
    l
    #+1197969194
    chmod 644 *.h

    Это не то, что требовалось?

     

  • 1.4, Wildchild (?), 02:26, 22/12/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    ’ замените на одинарную кавычку!
     
     
  • 2.15, none (??), 12:40, 06/01/2008 [^] [^^] [^^^] [ответить]  
  • +/
    export HISTTIMEFORMAT='%h %d %H:%M:%S ' так правильно!
    Исправьте совет и не вводите читателей в заблуждение!
     

  • 1.5, xguru (?), 15:10, 23/12/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Еще посмотрите на lilalo
    http://xgu.ru/wiki/lilalo

    оно запоминает не только дату но и множество другой информации

     
     
  • 2.6, PAVLINUX (?), 23:53, 23/12/2007 [^] [^^] [^^^] [ответить]  
  • +/
    А можно в ядре сказать  CONFIG_INPUT_EVBUG=y
    и до усрачики рыть логи нажатий... (для разбора, парсер написать любой школьник сможет)...
     

  • 1.9, FreeBSD User (?), 19:54, 25/12/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Если исходить из темы, то вот это, по-моему, вполне схойдет за решение
    set history = 100
    set savehist = 100

    и в $HOME будет лежать файлик .history c записями вида

    #+1197969179
    clean
    #+1197969180
    l
    #+1197969194
    chmod 644 *.h

    Это не то, что требовалось?

     
     
  • 2.10, Wildchild (?), 20:05, 25/12/2007 [^] [^^] [^^^] [ответить]  
  • +/
    начинается очередной писькомер =(
     
  • 2.11, pavlinux (??), 02:15, 28/12/2007 [^] [^^] [^^^] [ответить]  
  • +/
    Неа, не это требовалось....


    #+1197969194
    chmod 644 *.h

    ИЛИ

    998  Дек 20 13:55:49 ssh teletrade.ru


    Угадай, как понятней???  
    Для доказательства удобности второго, приставим фильтр:

    cat /home/vasya_pupkin/.history | grep su

    На выходе будут все даты попыток запуска утильки su  

    Во втором случае, самое быстрое это через egep + sed определить чтоб одна строка начиналась на #+ и следующая за ней уже на то что мы ищем, например su

    И наконец, UNIX-тime это для скриптов, а не для людей.


     
     
  • 3.12, Oleg (??), 13:52, 28/12/2007 [^] [^^] [^^^] [ответить]  
  • +/
    >Неа, не это требовалось....

    Так допиши код в bash - в чем проблема?

    >[оверквотинг удален]
    >
    >На выходе будут все даты попыток запуска утильки su
    >
    >Во втором случае, самое быстрое это через egep + sed определить чтоб
    >одна строка начиналась на #+ и следующая за ней уже на
    >то что мы ищем, например su
    >
    >И наконец, UNIX-тime это для скриптов, а не для людей.
    >
    >

    а написать в три строки perl-скриптик трансляции unix-time to human-read. и наоборот - уже в лом? :)
    написание оставляю в качестве домашнего задания :)
    кстати, в общем случае сортировать и искать удобнее именно по unix-time. IMHO.


     
     
  • 4.13, Andrey Mitrofanov (?), 11:44, 29/12/2007 [^] [^^] [^^^] [ответить]  
  • +/
    >а написать в три строки perl-скриптик трансляции unix-time to human-read. и наоборот
    >- уже в лом? :)

    Да! %*)

    $ date +"%Y-%m-%d %H:%M:%S" -d "@1198139874"
    2007-12-20 11:37:54
    abm@abm:~$ date +"%s" -d "now"
    1198917759
    $ _

     

  • 1.14, stimpack (?), 19:51, 30/12/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    zsh% history -f
    1250  12/30/2007 22:17  ../..
    1251  12/30/2007 22:17  cryptmount -u vol06
    1252  12/30/2007 22:17  uname -r
    1253  12/30/2007 22:17  lll
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру