書式
history search [ --show-time ] [ --case-sensitive ] [ --exact | --prefix | --contains ] [ --max=n ] [ --null ] [ 'search string'... ]

書式
history delete [ --show-time ] [ --case-sensitive ] [ --exact | --prefix | --contains ] 'search string'...

書式
history merge

書式
history save

書式
history clear

書式
history ( -h | --help )

概要

history コマンドは
コマンドライン履歴の

  • 検索
  • 削除
  • マージ

をします。

関数と ビルトイン の両方があります。

注意:後方互換性のために
各サブコマンドには
長いオプションも
用意されています。

たとえば、
history search に対して
history --search です。

長いオプションは非推奨で、
将来的には削除される予定です

サブコマンド

search

history search
検索文字列にマッチする
履歴を出力します。

検索文字列を
指定しなかった場合は、
全履歴を出力します。

単に history コマンドを
実行した場合のデフォルトの挙動です。

サブコマンドのうちの
ひとつを検索文字列に
指定するときのみ、

明示的に
history search
と起動する必要があります。

  • search
  • delete
  • merge
  • save
  • clear

他の検索オプションを
指定しない場合は
--contains オプションが
使われます。

履歴の順番は
新しい方から古い方に
並びます。

標準出力が
端末につながっているとき、
history 関数はページャに
パイプされます。

history ビルトインは
単に標準出力に出力するだけです。

delete

history delete
履歴のエントリを削除します。

以下のオプション

  • --prefix
  • --contains

を付けなければ、
指定された文字列に
完全一致する履歴が削除されます。

--exact を付けなければ、
どのエントリを削除するのかを尋ねてから
エントリが削除される前に
プロンプトが表示されます。

マッチしたエントリ
すべてを削除するために
all という単語を指定できます。

1つのエントリを削除するために、
ID([]で囲まれた数字)を入力できます。

複数のエントリを削除するには、
スペース区切りで複数のIDを入力します。

何も削除しない場合は
ただEnterを押してください。

注意:対話的な history delete
history 関数によるものです。

history ビルトインは

  • --exact
  • --case-sensitive

オプションのみをサポートしています。

merge

history merge
他のfishセッションからの
履歴の更新をマージします。

通常、fishは
現在のセッションの後に
起動したセッションでの
履歴の更新を無視します。

history merge
他のセッションでの更新を
即座に適用します。

save

history save
すべての更新を
履歴ファイルに書き込みます。

fishは自動的に
履歴ファイルに保存します。

history save は内部的に
使われるためのものであるため、
通常ではユーザ側で使う必要はありません。

clear

history clear
履歴ファイルをクリアします。

履歴を消去する前に、
全履歴を本当に削除するのか
という確認のプロンプトが表示されます。

history ビルトインでは
いきなり全削除します。

オプション

以下のオプションがあります。

オプションは
上記のサブコマンドの
前か直後に置けます。

-C / --case-sensitive
大文字小文字を区別する。
デフォルトは区別しない。
fish 2.4.0より前はデフォルトで区別していた。
-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 の書式文字列は受け付けない。
(デフォルトのフォーマットのみが使われる)

%s (1970/01/01からの秒数)も含め
strftime すべてのフォーマットが使える。

注意: --with-time オプションも
用意されているが、
非推奨であるため将来削除される予定。

-z / --null

search サブコマンドからの出力において、
改行の代わりにヌル文字で
履歴エントリを区切る。

read -z で複数行にわたる履歴エントリを
正しく扱える出力形式である。

-<number> / -n <number> / --max=<number>
マッチした最初の
number エントリのみを表示する。
history search のみで有効。
-h / --help
ヘルプを表示する。

実行例

# 全履歴を削除する
$ history --clear

# 文字列fooが含まれる過去に実行したコマンドすべてを表示する
$ history --search --contains 'foo'

# 文字列fooから始まる過去に実行したコマンドを対話的に削除する
# IDはスペース区切りで指定することで複数個のエントリを削除できる
$history --delete --prefix 'foo'

注意: --prefix--contains
双方を指定した場合は、
最後のオプションが使われる。

最後までお読みいただき、ありがとうございました。参考になれば嬉しいです。