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


34

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

回答:


49

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.

呼び出しのデバッグ

次の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

6
"イベントが見つかりません:-i" "イベントが見つかりません:-E"。これらのスイッチを実行する前に、構成ファイルに何かをロードする必要がありますか?
ジョンメルリーノ

1
何のバージョンzshzsh --version。Ubuntu 12.10で、与えたコマンドが正常に機能することを確認しました。
slm

17
@JohnMerlinoサーバーでzsh 4.3.10(x86_64-unknown-linux-gnu)を使用して、タイムスタンプ付きの履歴を表示しました。zshbuiltinsmanページを調べたところ、を使用する必要があることがわかりましたfc。最終的に私のために働いたのはでしたfc -li。コマンド番号もに渡すことができるfcためfc -li -100、履歴の最後の100個のコマンドがリストされます。
トーマスアップトン14

21
私が使用する必要があり\history -E、私はああ、私の-zshのを使用し、
juanpastas

1
これはoh-my-zshの長年(6年以上)のバグです。githubで
ロココ

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 fcfc --help動作しません
exhuma

@exhumaなぜそれをグーグルではない:)
Gab是好人

@Gab是好人エイリアスの履歴はありますか?oh-my-zshhistoryコマンドを使用している場合-lは、オプションの1つにフラグを追加します。参照github.com/robbyrussell/oh-my-zsh/blob/master/lib/...
マイク・D

1
fc -lf完全なタイムスタンプが表示されます。これはzshでのみ機能し、bashでは機能しないことに注意してください。
-dr01

@exhuma zshでは、を使用できますrun-help fc
xuhdev

4

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

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

\history -E

または

\history -i

または

fc -li 100


1
「alias history = "fc -li 1"」を追加して、履歴エイリアスを〜/ .zshrcファイルに再定義すると、希望どおりに機能するようになりました。
user886869

またはそれ以上: 'alias history = "history -i"。そうすれば、エイリアスで同じコマンドを実行できます。さらに多くのキー/オプションを追加する場合は、それほど混乱しません。
ベコ博士
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.