現在のシェルプロセスのコマンド履歴のみを取得する方法は?

現在のシェルプロセスのコマンド履歴のみを取得する方法は?

bashシェルで実行すると、history現在のシェルで入力したすべてのコマンドの履歴だけでなく、以前のシェルで入力したコマンドの履歴も表示されます。現在のシェルでこれまでに入力したコマンドの履歴だけをどのように取得できますか?これは、現在シェルに入力されていることが知られているコマンドを見つけたい場合に便利です。ありがとうございます。

ベストアンサー1

前提は組織の添付設定されておらず、ゲームをプレイしないプロンプトコマンド、これ歴史このコマンドは次のことができます。

  -a「新しい」ヒストリーラインを追加します(入力ヒストリーライン
       現在のbashセッションが開始されてから)
       歴史的な文書。

私たちが去りたい場合本物履歴ファイルをそのまま維持しながら、次のことができます。

$cat.bash_history
#1482030925
エルエス
#1482030926
日付
#1482030928
無料

$echo "もう一つのコマンドがあります"
別のコマンド

$echo "他のコマンド"
その他のコマンド

$HISTFILE=foo 履歴-a
$猫フー
#1482031879
cat.bash_history
#1482031887
echo「もう一つのコマンドがあります」
#1482031892
エコ「他の命令」
#1482031899
HISTFILE=foo 記録-a

前のセッションの古いコマンド(ls、date、free)は、「新しい」履歴ファイルには表示されません。foo- この例ではこれを説明できることを願っています。

別の方法は、現在の履歴ファイルを(ログインセッションの開始時に!)保存し、現在のセッションの履歴を履歴ファイルに追加し(「history -a」を実行またはログアウトして)、2つのファイルを比較することです。

$履歴> hist.backup

$echo "新しいコマンド"
新しいコマンド
$echo "もう一つのコマンドがあります"
別のコマンド

$履歴> hist.current
$違いの記録。 {バックアップ、現在}
4a5,7
>5 2016-12-17 19:38:57 echo "新しいコマンド"
>6 2016-12-17 19:39:01 echo 「他のコマンドがあります」
> 7 2016-12-17 19:39:07 歴史 > hist.current

注:私は設定HISTTIMEFORMAT='%F %T '(bash 3、IIRCで導入されました)がとても好きです。タイムスタンプコマンドの実行時期を把握するのに非常に便利です。

おすすめ記事