Історія башів із мітками часу


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

Напевно, я неправильно отримую формат стропінгу. Це допоможе, якби сторінка man включила хоча б пару прикладів .. +% 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.