など、先ほどのコマンドのパラメータをもっと使いやすくする関数を書きたい!:1
です。私はbashでこれを達成できることを読みました:
set -o history
set -o histexpand
では、にアクセスできる zsh 関数を作成するにはどうすればよいでしょう!:1
か。
など、先ほどのコマンドのパラメータをもっと使いやすくする関数を書きたい!:1
です。私はbashでこれを達成できることを読みました:
set -o history
set -o histexpand
では、にアクセスできる zsh 関数を作成するにはどうすればよいでしょう!:1
か。
!
まず、ZSH スクリプトでは使用できません。
ただし、コマンド ライン履歴にアクセスする方法は他にもあります。
$ echo foobar
foobar
$ fc -l -1
501 echo foobar
もちろん、これはスクリプト内からも機能しません。履歴にアクセスしようとするためです。これは、非対話型 zsh には存在しません。ただし、それを関数に組み込み、.zshrc
そこからスクリプトに渡すことができます。
function histaccess ()
{
lastcmd=$(fc -l -1)
somescript ${(z)${lastcmd#* }}
}
を呼び出すhistaccess
と、最後のコマンド ラインが取得され ( fc -l -1
)、履歴番号が取り除かれ ( ${lastcmd#* }
)、zsh のように分割され ( ${(z)...}
)、 に渡されsomescript
ます。あなたはさらにsomescript
何でもすることができます。スクリプトに ZSH を使用する場合は1
、オプションKSH_ARRAYS
が設定されていない限り配列は で始まり、履歴の展開はコマンド名である0
で始まることに注意してください。!:0
の呼び出しで履歴がいっぱいになるのを避けたい場合はhistaccess
、 のキー (たとえばAlt+I
) にバインドできます.zshrc
。
zle -N histaccess
bindkey '^[i' histaccess