回答:
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では設定されていませんでした)。したがって、現在のセッションを他のファイルに出力するために、先頭に追加されたコマンドを呼び出します。これは、シェル構文では、指定した追加の環境変数でコマンドを実行することを意味します。そのようです:-a
bash
ksh
mksh
HISTFILE
bash
bash
ksh
mksh
HISTFILE
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である UbuntuのPOSIX /bin/sh
シェルに関する限り、fc
組み込みが存在します。ただし、Ubuntuではダッシュはlib-editなしでコンパイルされます。これは、パフォーマンス上の理由からUbuntu開発者が意識的に選択したものであり、ライン編集を必要fc
とする他のモード はそのままでは機能しません(dash
自分で再コンパイルしてインストールしない限りlib-edit
)。
シェルニュートラルな方法は、既存のツールを使用してセッションを記録する か、コマンドごとに記録する独自の関数を記述することです。