現在のセッションのみの履歴を確認する方法はありますか?


10

現在のセッションでのみコマンド履歴を確認できるコマンドやその他の方法があるかどうかを知りたいと思いました。

回答:


12

history内蔵bashして使用される場合、ファイル名を指定可能-anrwフラグ、および-aからのフラグ説明help history状態:

このセッションの履歴行を履歴ファイルに追加します

したがって、次のことが可能です。

~$ history -a this_session.history
~$ cat ./this_session.history 
history mysession.history 
cat mysession.history 
clear
history -a this_session.history

レコードの場合、-w(ファイル履歴への書き込み履歴)は指定されたファイルに履歴全体を書き込むため、ここで-a(追加)を選択することをお勧めします。


他にも手動による方法があります。特にフラグkshは持っていませんが、持っているもの と持っているものは環境変数です(多くの機能が含まれているため、それも持っています)。ちなみに、この変数はデフォルトでは設定されていません(少なくともUbuntuでは設定されていませんでした)。したがって、現在のセッションを他のファイルに出力するために、先頭に追加されたコマンドを呼び出します。これは、シェル構文では、指定した追加の環境変数でコマンドを実行することを意味します。そのようです:-abashkshmkshHISTFILEbashbashkshmkshHISTFILE

bash-4.4$ HISTFILE='mykshfile.hist' ksh
$ echo 'Hello'
Hello
$ echo 'World'
World
$ 
bash-4.4$ cat ./mykshfile.hist 
�echo 'Hello'
echo 'World'

これからわか​​ることは、kshそれとその関連シェルが、通常のテキストではなく特殊文字を使用して履歴を出力するbashことです。したがって、そのファイルをで開くことができますksh

Debian Almquist ShellまたはDashである UbuntuPOSIX /bin/shシェルに関する限り、fc組み込みが存在ます。ただし、Ubuntuではダッシュはlib-editなしでコンパイルされます。これは、パフォーマンス上の理由からUbuntu開発者が意識的に選択したものであり、ライン編集を必要fcとする他のモード はそのままでは機能しません(dash自分で再コンパイルしてインストールしない限りlib-edit)。


シェルニュートラルな方法は、既存のツールを使用してセッション記録するコマンドごとに記録する独自の関数記述することです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.