bash履歴でタイムスタンプを表示する方法は?


259

bash履歴からコマンドが実行された時間を確認する方法はありますか?注文は確認できますが、時間を取得する方法はありますか?

結論:Bash履歴の実行時間


7
LinuxとBSDの両方のマンページで、これがどれほど不十分に文書化されているかに驚く。
シュリダールSarnobat

このブログをチェックアウト- sanctum.geek.nz/arabesque/better-bash-history
abhicantdraw

4
zshを使用している場合:history -E
Vahid

4
わからない理由を、以下の2つの答えがどのようにターミナルを開くためにあなたを伝える必要性を感じて...
mwfearnley

2
@ dog0が参照しているブログによると、タイムスタンプHISTTIMEFORMATは、コマンドが発行されたときに変数が設定されない限り保存されないようです。つまり、設定していない場合、今すぐ設定しても、以前に発行されたコマンドのタイムスタンプを取得するのに役立ちません。
トミスラフ・ナキク・アルファレビッチ

回答:


317

Ctrl+ Alt+ Tを押してターミナルを開き、次のコマンドを実行します。

HISTTIMEFORMAT="%d/%m/%y %T "

または、現在のユーザーの変更を永続的にするには:

echo 'HISTTIMEFORMAT="%d/%m/%y %T "' >> ~/.bashrc
source ~/.bashrc

それから

history

詳細については、man bashまたはLinuxのBashコマンドラインのAZインデックスを参照してください。

設定される前 HISTTIMEFORMATに実行されたコマンドの場合、現在の時刻がタイムスタンプとして保存されます。HISTTIMEFORMAT設定後に実行されたコマンドには、適切なタイムスタンプが保存されます。


7
なぜexportinで宣言するの.bash_profileですか?これは、bash起動されたコマンドではなく、によってのみ読み取られる変数であるため、エクスポートしないでください。
アルバログティエレスペレス

71
これは、セッションに設定された後、新しい履歴アイテムのタイムスタンプのみを記録することに注意してくださいHISTTIMEFORMAT。つまり、これを遡及的に使用することはできません。ここではいくつかの答えはすぐにタイムスタンプ付きのエントリを示して印象にhistoryコマンドを与える
ルイ・マドックス

10
@Louis-実際、これは私にとって遡及的に機能しましたか?!?!
ステフェンム

19
@Jamil:ISO標準に従う人にとっては、日付部分は "%y-%m-%d"です;)
ゴーティエ

13
@Gauthier-実際には、ISO日付に%Fを使用してください;-) man7.org/linux/man-pages/man3/strftime.3.html
brianmearns

73

ターミナルを開いてCtrl+ Alt+ Tを実行します。

HISTTIMEFORMAT="%d/%m/%y %T "

その後、

history

変更を永続的にするには、次の手順に従います。

gedit ~/.bashrc

以下の行を.bashrcファイルに追加して保存する必要があります。

export HISTTIMEFORMAT="%d/%m/%y %T "

以下のコマンドを実行して.bashrcファイルをソースし、

source ~/.bashrc

その後、historyコマンドを実行します。

ここに画像の説明を入力してください

ソースhttp : //www.cyberciti.biz/faq/unix-linux-bash-history-display-date-time/


答えてくれてありがとう、それは永続的な変化でしょうか?
rɑːdʒɑ

1
ねえ、私はこれをOS XとWindowsで(MINGWを介して)行っています。そしてそれを.bash_profileに追加しています。profileとrcの違いは何ですか?
LasagnaAndroid

18

はい、次のことができます:を設定$HISTTIMEFORMATする.bash-historyと、適切にタイムスタンプが付けられます。これは既存の.bash-historyコンテンツには役立ちませんが、将来的には役立ちます。


1
より明確にするために拡張できますか?
rɑːdʒɑ

5
前の投稿に対する修正:HISTTIMEFORMATを設定すると、タイムスタンプの表示が可能になります(既存の場合でも)。私のお気に入りは:HISTTIMEFORMAT = '%F%T'です。あなたがどの国から住んでいるかは関係ありません...誰もがすぐにその時を知っています。:)

4
$ HISTTIMEFORMATを設定し、このセットのコマンドの前でも今日の時間を取得しました。
ヤシンオクムシュ

@ user491029「...既存のもの」。これは事実ですが、誤解を招く恐れがあります。少なくとも、ubuntu 14.04では、HISTTIMEFORMATを設定すると、すべての履歴エントリのタイムスタンプが表示され始めましたが、現在のセッションの前に実行されたコマンドのタイムスタンプは、現在のセッションのログインタイムスタンプに見えます。
jbobbins


0

すべてのユーザーの履歴タイムスタンプを有効にするには、/etc/profile.dにスクリプトを作成します:

echo 'HISTTIMEFORMAT="%Y%m%d %T "' >> /etc/profile.d/timestamp.sh

1
デフォルトのターミナルではログインシェルが実行されないため、GUIを介してログインしているユーザーには、これはおそらく機能しません。/etc/bash.bashrcより良い場所になります。
ムル

0

私は非常に遅く答えていますが、すべてのユーザーに対してこれを行うには、任意の.shファイルを作成し/etc/profile.dて次の行を追加できます:

echo 'HISTTIMEFORMAT="%Y-%m-%d %T "' >> /etc/profile.d/existing-foo-file.sh

rootまたはスーパーユーザーとしてログインしていない場合は、teeコマンドを使用してこれを行う必要があります。

echo 'HISTTIMEFORMAT="%Y-%m-%d %T "' | sudo tee /etc/profile.d/mytimestamp.sh

既存のファイルに追加する場合は-ateeコマンドにフラグを渡します。

echo 'HISTTIMEFORMAT="%Y-%m-%d %T "' | sudo tee -a /etc/profile.d/mytimestamp.sh

ここに画像の説明を入力してください


こんにちはシャシャンク、答えを追加してくれてありがとう、この答えは他の人とどう違うのですか?あなたの答えが完全に異なる場合、私たちはそれを持って喜んでいますが、そうでない場合は、既存の答えを改善することができます。
rɑːdʒɑ

こんにちは、コメントありがとう。これは次の点で他とは異なります。1.一部のユーザーは、すべてのユーザーの作成について言及していますが、のファイル名の作成/説明については誰も言及していません/etc/profile.dtimestamp.sh技術的に非常に近いように見えるため(混乱を招く)、名前existing-foo-file.sh(foo-barコンセプト)を使用しました。2.非rootユーザーでの使用について誰も言及していません。だから私は使用例を示しましたsudo。3. 3番目の例は、既存のファイルに追加する2番目の例を改善します。linux / unixの初心者がこの問題にぶつかる可能性があるため、詳しく説明しました。
シャシャンクアグラワル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.