最後のbashコマンドとそのタイムスタンプを印刷したいです。history 1
履歴コマンド自体を表示します。この機能は多くのコンピュータで使用する必要があるため、カスタム設定に依存してはいけません。たとえば、これを行うためのいくつかの簡単なコマンドが間違いなくありませんlastcmd
。 :)
fc -l -1
タイムスタンプなしで最後のコマンドを表示し、複雑すぎて頻繁に入力できません。
明らかに、多くのサーバーで使用する必要があり、すべてのサーバーをカスタマイズしたりカスタム機能を作成したりすることは不可能であるため、これを行うための標準的で簡単な方法を探しています。さらに、このコマンドを手動で入力する必要があるため、非常に簡単です。
アクセスする必要があるサーバーのデフォルト値はHISTControl = ignorebothのようです。
history 1
(記録コマンドの前にスペースが付いている)は履歴に入れないため、最後のコマンドが正しく表示されます。
HISTTIMEFORMAT
しかし、デフォルトでは設定されていないので、完全な解決策ではありません。より簡単な方法がありますか?
ベストアンサー1
指摘したように、コマンド自体が実行する最後のコマンドなので、コマンド自体をhistory 1
印刷してください。history
前の項目を取得するには、次のものが必要ですhistory 2
。
$ touch foo
$ history 2
$ history 2
19950 touch foo
19951 history 2
したがって、自己計算なしで前のコマンドを取得するには、次のコマンドhistory
を渡しますhead -n1
。
$ history 2 | head -n1
19952 touch foo
次に、目的の形式でタイムスタンプを追加します(man 3 strftime
利用可能な形式を参照)。
$ HISTTIMEFORMAT="%F %H:%M:%S " history 2 | head -n1
19959 2016-06-11 15:06:08 touch foo
%T
(代わりに使用することもできます%H:%M:%S
)