ZSH スクリプトから history/fc を呼び出す方法

ZSH スクリプトから history/fc を呼び出す方法

最後の X (20) コマンドを画面に表示する GeekTool 用のスクリプトを作成しようとしています。

ファイルを表示するか、シェル コマンドの出力を使用するか (推奨) を選択できます。

問題は、スクリプトからコマンドを実行すると~/bin/update_history_file.sh:fc:5: no such event: 0エラーが発生することです。

私のスクリプトファイルは次のとおりです:

#!/bin/zsh --login
#history | tail -n 25 > /tmp/history.txt

export HISTFILE=~/.zsh_history 
fc -l -20 -1

シェルから実行するとコマンドfcは機能しますが、スクリプトから実行すると失敗します。履歴ファイルを読み取れないことと関係があると思いますが、確認されていません。

.zsh_historyZSH 拡張履歴を使用しており、メタデータが埋め込まれているため、ファイルを直接使用することはできません。

答え1

履歴ファイルを強制的に読み取るには を追加しfc -R、それを削除する必要があります-1

#!/bin/zsh --login
#history | tail -n 25 > /tmp/history.txt

export HISTFILE=~/.zsh_history 
fc -R
fc -l -20

関連情報