Як переглянути штамп дати для команди історії в оболонці Zsh


34

Коли я запускаю команду історія на моєму сервері 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.

Відповіді:


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 man

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.

Налагодження виклику

Ви можете використовувати наступні два способи налагодження, 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

6
"подія не знайдена: -i" "подія не знайдена: -E". Чи потрібно мені щось завантажувати у конфігураційний файл перед запуском цих комутаторів?
JohnMerlino

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 команд у вашій історії.
Thomas Upton

21
Мені доводиться використовувати \history -E, я використовую о-
мі-зш

1
Це давня (6+ років) помилка з ой- мі-зш
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 чому б не google it :)
Габ 是 好人

@Gab 是 好人 У вас історія зненацька? якщо ви використовуєте oh-my-zshкоманду "Історія", додайте -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


1
Я щойно додав: 'Псевдонім історія = "fc -li 1"', щоб переосмислити псевдонім історії у мій файл ~ / .zshrc-файл, і він зараз працює за бажанням!
користувач886869

а ще краще: 'alias history = "історія -i". Таким чином ви можете запустити одну і ту ж команду в псевдонімі, і якщо ви хочете додати більше клавіш / параметрів, це не так заплутано.
Д-р Беко
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.