スクリプトまたは非対話型 zsh インスタンスで記録または fc を実行する

スクリプトまたは非対話型 zsh インスタンスで記録または fc を実行する

zsh文書を読み、非対話モードでコンテンツ全体にアクセスしないhistory。検索ユーティリティをスクリプト化できるようにこれを実装する方法を探しています。私が試したこと:fc~/.zsh_history

➜  ~ fc -l 0 1
    1  ls
➜  ~ echo $HISTFILE
/Users/username/.zsh_history
➜  ~ zsh -c 'echo $HISTFILE'

➜  ~ zsh -c 'HISTFILE=~/.zsh_history; echo $HISTFILE'
/Users/username/.zsh_history
➜  ~ zsh -c 'HISTFILE=~/.zsh_history; history'
zsh:fc:1: no such event: 1
➜  ~ zsh -c 'HISTFILE=~/.zsh_history; fc -l 0 1'
zsh:fc:1: no events in that range
➜  ~ zsh -c 'HISTFILE=~/.zsh_history; fc -R; fc -l 0 1'
zsh:fc:1: no events in that range
➜  ~ zsh -c 'HISTFILE=~/.zsh_history; fc -R -l 0 1'
<NO OUTPUT>

Bashでは履歴オプションを有効にできますが、set -o historyzshには存在しません。

別の方法はファイルに直接アクセスすることですが、そうすることで~/.zsh_historyフォーマットのサポートが失われます。パイプを介して上記のフォーマットを実行できる組み込みユーティリティはありますか?historyfc~/.zsh_history

答え1

fc -R履歴ファイルを読み取るために呼び出されます。これは最後の$HISTSIZE項目のみを読み取るため、HISTSIZE呼び出す前に大きな値に設定してくださいfc

HISTSIZE=999999999
fc -R ~/.zsh_history

関連情報