そして

そして

最後の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

関連情報