history - コマンド履歴の表示と操作

概要

history [search] [--show-time] [--case-sensitive]
                 [--exact | --prefix | --contains] [--max N] [--null] [--reverse]
                 [SEARCH_STRING ...]
history delete [--case-sensitive]
               [--exact | --prefix | --contains] SEARCH_STRING ...
history merge
history save
history clear
history clear-session
history append COMMAND ...

説明

history は、 対話型コマンドの履歴 の検索、削除、およびその他の操作を行うために使用されます。

以下の操作(サブコマンド)が利用可能です。

search

検索文字列に一致する履歴項目を返します。検索文字列が指定されない場合は、すべての履歴項目を返します。他の操作が指定されていない場合、これがデフォルトの操作となります。サブコマンド名そのものを検索したい場合にのみ、明示的に history search と入力する必要があります。別の検索オプションを指定しない限り、 --contains 検索オプションが使用されます。 --reverse フラグを使用しない限り、項目は新しい順から古い順に並べられます。標準出力が tty に接続されている場合、history 関数によって出力がページャ(pager)にパイプされます。組み込みコマンドの history は結果を標準出力に書き込みます。

delete

履歴項目を削除します。別の検索オプションを指定しない限り、 --contains 検索オプションが使用されます。 --exact を指定しない場合は、項目が削除される前に、どのエントリを削除するかを尋ねるプロンプトが表示されます。「all」と入力すると、一致するすべてのエントリを削除できます。単一の ID(角括弧内の数字)を入力して、その単一のエントリだけを削除することもできます。複数の ID、またはスペースで区切られた ID 範囲を入力して、複数のエントリを削除することも可能です。[enter] キーを押すと、何も削除されません。なお、この対話的な削除動作は history 関数の機能です。組み込みの history コマンドは、 --exact --case-sensitive による削除のみをサポートしています。

merge

他のセッションからの履歴の変更を即座に取り込みます。通常、 fish は現在のセッションが開始された後に開始されたセッションからの履歴の変更を無視しますが、このコマンドはその変更を即座に適用します。

save

すべての変更を即座に履歴ファイルに書き込みます。シェルは自動的に履歴ファイルを保存するため、このオプションは内部用として提供されており、通常ユーザーが使用する必要はありません。

clear

履歴ファイルを消去します。 builtin history が使用されていない限り、履歴が消去される前に、本当にすべての履歴を消去してよいか確認を求めるプロンプトが表示されます。

clear-session

現在のセッションのすべてのアクティビティから履歴ファイルを消去します。注意: セッション内で history mergebuiltin history merge が実行された場合、それ以降の履歴のみが消去されます。

append

コマンドを実行することなく、履歴に追加します。

以下のオプションが利用可能です。

これらのフラグは、上記のサブコマンドの前後いずれにも配置できます。

-C--case-sensitive

大文字と小文字を区別して検索します。デフォルトでは区別しません。

-c--contains

指定された文字列を含む履歴項目を検索します。これは --search フラグのデフォルトの挙動です。現時点では、 delete サブコマンドではこのオプションはサポートされていません。

-e--exact

指定された文字列と完全に一致する履歴項目を検索または削除します。これは delete サブコマンドのデフォルトの挙動です。デフォルトでは大文字と小文字を区別しないことに注意してください。文字の大小を含めて完全に一致させたい場合は、 -C--case-sensitive フラグを併用する必要があります。

-p--prefix

指定された文字列で始まる履歴項目を検索します。現時点では、 delete サブコマンドではこのオプションはサポートされていません。

-t--show-time

各履歴項目の先頭に、その項目が記録された日時を付加します。デフォルトでは strftime 形式の # %c%n を使用します。別の形式を指定することも可能です(例: --show-time="%Y-%m-%d %H:%M:%S "--show-time="%a%I%p" )。短縮オプションの -t は strftime 形式の文字列を受け付けず、デフォルトの形式のみを使用します。UNIX エポックからの秒数を取得する %s を含め、あらゆる strftime 形式が利用可能です。

-z--null

検索操作によって出力される履歴項目の区切りを、改行ではなく NUL 文字(空文字)にします。これにより、 read -z を使って複数行にわたる履歴項目を正しく処理できるようになります。

-*NUMBER* -n NUMBER--max NUMBER

一致した履歴項目のうち、最初の NUMBER 件に制限します。これは history search においてのみ有効です。

-R--reverse

履歴の検索結果を古い順から新しい順(昇順)に並べ替えます。これはほとんどのシェルで使用されている順序です。デフォルト(指定なし)では新しい順から古い順(降順)になります。

--color WHEN

履歴項目の表示にシンタックスハイライトの色を使用するかどうかを制御します。WHEN には、 auto (デフォルト。出力先が ターミナルの場合 に着色)、 always 、または never を指定できます。

-h--help

このコマンドのヘルプを表示します。

使用例

history clear
# Deletes all history items

history search --contains "foo"
# Outputs a list of all previous commands containing the string "foo".

history delete --prefix "foo"
# Interactively deletes commands which start with "foo" from the history.
# You can select more than one entry by entering their IDs separated by a space.

履歴ファイル名のカスタマイズ

デフォルトでは、対話的なコマンドは $XDG_DATA_HOME/fish/fish_history (通常は ~/.local/share/fish/fish_history )に記録されます。

現在のシェルセッションにおいて、 fish_history 変数を別の名前に設定できます。デフォルト値(変数が未設定の場合)は fish であり、これは $XDG_DATA_HOME/fish/fish_history に対応します。例えば、これを fun に設定すると、履歴は $XDG_DATA_HOME/fish/fun_history に書き込まれます。空文字列を設定すると、履歴は一切保存されません。これはウェブブラウザのプライベートセッション機能に似ています。

fish_history はいつでも変更でき( set -x fish_history "session_name" を使用)、即座に効果を発揮します。 "default" に設定した場合は、デフォルトのセッション名( "fish" )が使用されます。

bash や zsh などの他のシェルでは、同様の目的のために HISTFILE という名前の変数を使用します。fish が異なる名前を使用しているのは、衝突を避け、挙動が異なる(ファイルパスではなくセッション名である)ことを示すためです。また、この変数を fishdefault 以外に設定すると、bash の履歴のインポートが抑制されます。これは、プレゼンテーション時などにプライベートな履歴や機密性の高い履歴が漏洩するのを防ぐことが、この機能の最も一般的なユースケースだからです。

備考

--prefix--contains の両方を指定した場合は、最後に指定されたフラグが使用されます。

後方互換性のために、各サブコマンドはロングオプションとしても指定できることに注意してください。例えば、 history search の代わりに history --search と入力することも可能です。ただし、これらのロングオプションは非推奨(deprecated)であり、将来のリリースで削除される予定です。