Как просмотреть метку даты и времени для команды истории в оболочке Zsh

34

Когда я запускаю команду history на моем сервере Ubuntu, я получаю вывод следующим образом:

   history
   ...
   25  cd ~
   26  ls -a
   27  vim /etc/gitconfig
   28  vim ~/.gitconfig

Я хочу просмотреть дату и время конкретного пользователя. Однако, когда я предполагаю их:

su otheruser
export HISTTIMEFORMAT='%F %T  '
history
...
25  cd ~
26  ls -a
27  vim /etc/gitconfig
28  vim ~/.gitconfig

Это все еще не показывает дату и время. Я использую оболочку zsh.

JohnMerlino
источник

Ответы:

49

Я полагаю, что HISTTIMEFORMAT предназначен для оболочек Баш. Если вы используете, zshто вы можете использовать эти ключи для historyкоманды:

Примеры

$ history -E
    1   2.12.2013 14:19  history -E

$ history -i
    1  2013-12-02 14:19  history -E

$ history -D
    1  0:00  history -E
    2  0:00  history -i

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

выдержка из страницы руководства zshbuiltins

Also when listing,
  -d     prints timestamps for each command
  -f     prints full time-date stamps in the US `MM/DD/YY hh:mm' format
  -E     prints full time-date stamps in the European `dd.mm.yyyy hh:mm' format
  -i     prints full time-date stamps in ISO8601 `yyyy-mm-dd hh:mm' format
  -t fmt prints time and date stamps in the given format; fmt is formatted 
         with the strftime function with the  zsh extensions described for 
         the %D{string} prompt format in the section EXPANSION OF PROMPT 
         SEQUENCES in zshmisc(1).  The resulting formatted string must be no 
         more than 256 characters or will not be printed.
  -D     prints elapsed times; may be combined with one of the options above.

Отладка вызова

Вы можете использовать следующие 2 метода для отладки zshпри вызове.

Способ № 1

$ zsh -xv

Способ № 2

$ zsh
$ setopt XTRACE VERBOSE

В любом случае вы должны увидеть что-то вроде этого при запуске:

$ zsh -xv
#
# /etc/zshenv is sourced on all invocations of the
# shell, unless the -f option is set.  It should
# contain commands to set the command search path,
# plus other important environment variables.
# .zshenv should not contain commands that produce
# output or assume the shell is attached to a tty.
#

#
# /etc/zshrc is sourced in interactive shells.  It
# should contain commands to set up aliases, functions,
# options, key bindings, etc.
#

## shell functions
...
...
unset -f pathmunge _src_etc_profile_d
+/etc/zshrc:49> unset -f pathmunge _src_etc_profile_d

# Created by newuser for 4.3.10
SLM
источник
6
"событие не найдено: -i" "событие не найдено: -E". Нужно ли загружать что-то в конфигурационном файле перед запуском этих ключей?
ДжонМерлино
1
Какая версия zsh? zsh --version, Я только что подтвердил на Ubuntu 12.10, что команды, которые я вам дал, работали очень хорошо.
SLM
17
@JohnMerlino У меня был zsh 4.3.10 (x86_64-unknown-linux-gnu) на сервере, для которого я хотел просматривать историю с отметками времени. Просматривая zshbuiltinsсправочную страницу, я обнаружил, что мне нужно использовать fc. То, что в итоге сработало для меня, было fc -li. Вы также можете передавать номера команд fc, чтобы fc -li -100перечислить последние 100 команд в вашей истории.
Томас Аптон
21
Я должен использовать \history -E, я использую oh-my-zsh
juanpastas
1
Это давняя (6+ лет) ошибка с oh-my-zsh, смотрите эту проблему на github: github.com/robbyrussell/oh-my-zsh/issues/739
rococo
20

history -Eили history -iчто-то еще не работает для меня.

zsh --versionпоказывает это zsh 4.3.6 (x86_64-suse-linux-gnu).

Тогда fc -li 100работает! Он показывает последние 100 команд с отметкой времени :)

Габ 是 好人
источник
Спасибо, это сработало и у меня, вопреки главному ответу. Моя версия: zsh 5.1.1 (x86_64-ubuntu-linux-gnu). И пока я здесь: вы знаете, как получить помощь от команды fc? Ни, man fcни fc --helpработа
exhuma
@ exhuma, почему бы не погуглить это :)
Габ 是 好人
@Gab 是 好人 У тебя есть история? если вы используете oh-my-zshкоманду history, добавьте -lфлаг в один из вариантов. см. github.com/robbyrussell/oh-my-zsh/blob/master/lib/…
Майк Д
1
fc -lfпокажет полную метку времени. Обратите внимание, что это работает только на zsh, а не на bash.
dr01
@exhuma В Zsh вы можете использовать run-help fc.
xuhdev
4

Если вы используете oh-my-zshаддон zsh, history -Eили не history -iбудете работать (потому что это псевдоним fc -l 1).

Как отметил @juanpastas, попробуйте

\history -E

или

\history -i

или

fc -li 100

alpha_989
источник
1
Я просто добавил: 'alias history = "fc -li 1"', чтобы переопределить псевдоним истории в моем файле ~ / .zshrc, и теперь он работает как нужно!
user886869
или даже лучше: 'alias history = "history -i". Таким образом, вы можете запустить ту же команду в псевдониме, и если вы хотите добавить больше ключей / опций, это не так сложно.
Доктор Беко