1. ホーム
  2. zsh

[解決済み] zshの履歴が短すぎる

2023-03-16 01:07:02

質問

を実行すると history をBashで実行すると、大量の結果(1000以上)が得られます。しかし history を実行すると、15件しかヒットしません。これでは、zshで履歴を検索してもほとんど意味がありません。 私の .zshrc ファイルには次の行があります。

HISTFILE=~/.zhistory
HISTSIZE=SAVEHIST=10000
setopt sharehistory
setopt extendedhistory

zsh を修正してシェルの履歴をより便利にするにはどうしたらよいですか。


アップデイト

zshで history 1 を呼び出すと、Bash の場合と同じように、すべての履歴を取得できます。 history . 同じ結果を得るためにコマンドをエイリアス化することもできますが、なぜ history はzshとBashで異なる挙動をするのはなぜでしょう。

どのように解決するのですか?

NVaughan (the OP)は、質問へのアップデートですでに答えを述べています。 history では異なる振る舞いをします。 bashzsh :

要するに

  • zsh :
    • history 最新 15 件の 履歴エントリ
    • history 1 リスト すべて - は以下を参照してください。
  • バッシュ :
    • history リスト すべて 履歴のエントリーを表示します。

悲しいことに 数値オペランド history も異なる挙動をします。

  • zsh :
    • history <n> すべてのエントリを表示する で始まる <n> - したがって history 1 が示すように すべて のエントリを表示します。
    • ( history -<n> - に注意してください。 - - は <n> 最も新しい のエントリーがあるため、デフォルトの動作は事実上 history -15 )
  • バッシュ :
    • history <n> <n> 最も新しい のエントリーをご覧ください。
    • (bashの history はリストアップをサポートしていません。 から をサポートしません。 fc -l <n> を使うこともできますが のような特定のエントリ <n> が存在しなければなりません。 がなければならず、さもなければコマンドは失敗します - 下記参照)。

オプションの背景情報です。

  • zshでは history は事実上(実際ではなく)エイリアスで fc -l の別名です。 man zshbuiltins
    • 歴史に関する多くの機能については man zshall
  • bashで。 history は独自のコマンドであり、その構文は fc -l
    • 参照してください。 man bash
  • bash と zsh の両方をサポート fc -l <fromNum> [<toNum>] をサポートし、与えられた 範囲 の履歴をリストアップします。
    • bash: 特定のエントリ <fromNum> が存在しなければなりません。
    • zsh: 少なくとも1つのエントリが(明示的または暗示的な)範囲に該当する限り、コマンドは成功します。
    • このように fc -l 1 は zsh ではすべての履歴エントリを返しますが、 bash では一般的に、エントリ #1 はもはや存在しないことを考えると、返せません (しかし、前述のように history を引数なしで使用することができます)。