最後の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
)
答え2
役に立つ可能性のある非歴史的なオプションの1つは、シェルを表示するようにカスタマイズすることです。私はこれと他の情報(gitブランチまで!)を見せるためにそれを得ました:
HOST='\[\033[02;36m\]\h'; HOST=' '$HOST
TIME='\[\033[01;31m\]\t \[\033[01;32m\]'
LOCATION=' \[\033[01;34m\]`pwd | sed "s#\(/[^/]\{1,\}/[^/]\{1,\}/[^/]\{1,\}/\).*\(/[^/]\{1,\}/[^/]\{1,\}\)/\{0,1\}#\1_\2#g"`'
BRANCH=' \[\033[00;33m\]$(git_branch)\[\033[00m\]\n\$ '
PS1=$TIME$USER$HOST$LOCATION$BRANCH
私の記録自体は役に立ちませんが、ターミナルで後ろにスクロールすると、少なくとも次のことがわかります。
$ vi .bashrc
17:57:09 durrantm Castle2012 /home/durrantm
$ pwd
/home/durrantm
17:57:10 durrantm Castle2012 /home/durrantm
$ ls *.lt*
ls: cannot access *.lt*: No such file or directory
17:57:15 durrantm Castle2012 /home/durrantm
$ ls *.rb*
1.rb 2.rb 3.rb 3_step_minimal_foundation_spec.rb arrival.rb r.rb validate_controller.rb x.rb*
17:57:19 durrantm Castle2012 /home/durrantm
$ c
17:57:24 durrantm Castle2012 /home/durrantm/Dropbox/_/work/code
$ which ruby
/home/durrantm/.rvm/rubies/ruby-2.1.2/bin/ruby
17:57:27 durrantm Castle2012 /home/durrantm/Dropbox/_/work/code
答え3
bashは、最後のコマンドが実行された時点のタイムスタンプを取得する簡単な方法を提供していないようです。
サーバーのbash構成をカスタマイズできる場合は、@terdonの回答に基づいてカスタムbash機能を作成できます。
答え4
実装する
export HISTTIMEFORMAT='%F %T '
履歴ファイルは時間を記録します(新しいコマンドのみ)。
$ history 5
99576 2016-06-13 02:26:25 export HISTTIMEFORMAT='%F %T '
99580 2016-06-13 02:26:45 bash -c 'IFS=:$IFS ; set -- a b c ; echo "$@ "'
99581 2016-06-13 02:27:37 dash -c 'set a b c; IFS=; echo $*'
99582 2016-06-13 02:28:25 fc -l -1
99607 2016-06-13 02:28:25 history 5
そして
履歴に書き込まないように、コマンドの前にスペースを使用します。
$ history 1
99607 2016-06-13 02:28:25 history 5
次に、簡単にエイリアスを作成します。
$ alias h='history 1'
次に、設定後にスペースを追加して次のようにHISTTIMEFORMAT
します。
$ h ### Understand that there is an space in front of the command.
99607 2016-06-13 02:28:25 history 5