web-dev-qa-db-ja.com

Zshシェルで履歴コマンドの日時スタンプを表示する方法

Ubuntuサーバーでhistoryコマンドを実行すると、次のような出力が表示されます。

   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 Shellを使用しています。

38
JohnMerlino

HISTTIMEFORMATはBashシェル用だと思います。 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を呼び出すときにデバッグするには、次の2つの方法を使用できます。

方法#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
58
slm

_history -E_または_history -i_または何かしないでくださいうまくいきます。

_zsh --version_は、そのzsh 4.3.6 (x86_64-suse-linux-gnu)を示します。

次に_fc -li 100_が機能します!タイムスタンプ付きの最近の100個のコマンドが表示されます:)

22
Gab是好人

zshoh-my-zshアドオンを使用している場合、history -Eまたはhistory -iは機能しません(fc -l 1にエイリアスされているため)。

@juanpastasが指摘したように、試してみてください

\history -E

または

\history -i

または

fc -li 100

4
alpha_989