Historia Bash ze znacznikami czasu

15

Chciałbym zachować znaczniki czasu dla poleceń zalogowanych w moim Bash $ HISTFILE, czy to możliwe?

Nie udało mi się skonfigurować go man bashjako źródła informacji.

Moje inne opcje są następujące:

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

Powinienem wspomnieć, że jestem na OS X Mountain Lion (westchnienie). uname -adaje mi:

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

i echo $BASH_VERSIONdaje mi:

3.2.48(1)-release

Próbowałem dodać to:

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

i tylko przedrostki tego rodzaju znaczników czasu do poleceń:

#1349057791

Próbuję powtórzyć echo zmiennej ( echo $HISTTIMEFORMAT), która ma właściwą wartość.

Ciekawy!

Nawet całkowicie usunąłem .profile, aby to debugować. Wciąż tylko śmieszne znaczniki czasu:

#1349058320

Nie wiem, jak rozwiązać ten problem ... :(

Rozwiązanie : korzystałem ze skryptu, który bezpośrednio odczytuje $ HISTFILE, a nie wbudowanej historii, więc znacznik czasu oparty na epoce (sekund od uniwersalnego czasu koordynowanego (UTC) z 1 stycznia 1970 r.) Nie był tłumaczony przy użyciu ciągu formatującego datę . Zwykłe stare historydziała dobrze, użyję tego zamiast tego.

Robottinosino
źródło
2
Próbowałeś ustawienia HISTTIMEFORMAT?
jw013
Prawdopodobnie robię błąd w formacie strftime. Pomogłoby to, gdyby strona podręcznika zawierała co najmniej kilka przykładów .. +% Y-% m-% d% H-% M-% S?
Robottinosino

Odpowiedzi:

15

Tak, wstaw to ~/.bashrc:

export HISTTIMEFORMAT='%F %T '

Następnie uruchom następujące polecenia:

. ~/.bashrc
history

Będzie to wyglądać tak:

 (...)
 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
 (...)

Objaśnienia danych wyjściowych:

  • pierwsza kolumna jest wyjątkowa id
  • druga to data, trzecia to godzina
  • najnowsza jest twoja linia poleceń
Gilles Quenot
źródło
3
Nie, nie działa na OSX .. :( Prawdopodobnie problem. Dziwny system operacyjny.
Robottinosino
Prawda source ~/.bashrc?
Gilles Quenot
Zdecydowanie tak. Robi „coś”: dodając komentarz do wiersza przed cyfrowym znacznikiem czasu: # 1349057149
Robottinosino
1
@Robottinosino Tak. Skomentowany wiersz ma oczekiwany format. Aby wyświetlić polecenia z sformatowanym czasem, użyj historywbudowanego polecenia, nie patrz bezpośrednio na plik historii.
jw013
1
Czy możliwe jest zapisanie znacznika czasu w pliku historii przy użyciu HISTTIMEFORMAT? Nigdy nie używam historypolecenia, zamiast tego używam edytora tekstu, aby znaleźć polecenia, których szukam, i byłoby miło mieć odniesienie do daty czytelne dla człowieka.
odszedł