История Bash с метками времени


15

Я хотел бы сохранить временные метки для команд, зарегистрированных в моем Bash $ HISTFILE, это возможно?

Мне не удалось настроить его, используя man bashв качестве источника информации.

Мои другие варианты заключаются в следующем:

function thebanana() {
  local -r -a bash_commands=(
    "ls"
    # ... more coconut commands
  )
  for bash_command in "${bash_commands[@]}"; do
    printf "${bash_command}"
    printf ":"
  done
}
export HISTFILE=banana
export HISTIGNORE="$(thebanana)"
export HISTSIZE=999999
export HISTFILESIZE=999999999
export HISTCONTROL=ignoredups:erasedups

Я должен был упомянуть, что я на OS X Mountain Lion (вздох). uname -aдает мне:

Darwin CoconutMac.local 12.2.0 Darwin Kernel Version 12.2.0: Sat Aug 25 00:48:52 PDT 2012; root:xnu-2050.18.24~1/RELEASE_X86_64 x86_64

и echo $BASH_VERSIONдает мне:

3.2.48(1)-release

Попробовал добавить это:

export HISTTIMEFORMAT='%b %d %I:%M:%S %p '

и это только префикс этого вида временных меток к командам:

#1349057791

Я пытаюсь вернуть обратно переменную ( echo $HISTTIMEFORMAT), она имеет правильное значение.

Интересный!

Я даже удалил .profile полностью, чтобы отладить это. Еще только смешные метки времени:

#1349058320

Я не знаю, как решить эту проблему ... :(

Решение : Я использовал скрипт, который читает $ HISTFILE напрямую, а не встроенную историю, поэтому временная метка, основанная на эпохе (секунды с UTC) 1 января 1970 года, не переводилась с использованием строки форматирования даты , Обычный старый historyработает хорошо, я буду использовать это вместо этого.


2
Вы пробовали установку HISTTIMEFORMAT?
jw013

Возможно, я неправильно получаю формат strftime. Было бы полезно, если бы справочная страница содержала хотя бы пару примеров. +% Y-% m-% d% H-% M-% S?
Robottinosino

Ответы:


15

Да, вставьте это в ~/.bashrc:

export HISTTIMEFORMAT='%F %T '

Затем выполните следующие команды:

. ~/.bashrc
history

Это будет выглядеть так:

 (...)
 5200  2012-09-30 23:55:37 find -printf '%Ts %f\n'
 5201  2012-10-01 00:00:58 ls
 5202  2012-10-01 00:03:45 cd
 (...)

Пояснения к выводу:

  • Первый столб уникален id
  • второй - дата, третий - час
  • последняя ваша командная строка

3
Нет, не работает на OSX .. :( Возможно, в этом проблема. Странная ОС.
Robottinosino

А вы source ~/.bashrc?
Жиль Квено

Я определенно сделал. Он делает «что-то»: добавляет закомментированную строку перед командой с числовой отметкой времени: # 1349057149
Robottinosino

1
@Robottinosino Да, строка комментариев - это ожидаемый формат. Чтобы отобразить команды с отформатированным временем, используйте historyвстроенную команду, а не смотрите на файл истории напрямую.
jw013

1
Можно ли записать отметку времени в файл истории с помощью HISTTIMEFORMAT? Я никогда не использую historyкоманду, вместо этого я использую текстовый редактор, чтобы найти нужные мне команды, и было бы неплохо иметь удобочитаемую ссылку на дату.
ушел
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.