「.c」サフィックスを持つファイルで操作を実行する .zshrc 関数に追加したいと考えています。例えば、
*.c () {
gcc $0 -o ${0%.*}
}
「foo.c」に入るときに「gcc foo.c -o foo」を実行する必要があります
しかし、この関数を「.zshrc」に追加すると、ログイン時にシェルが「一致が見つかりません: *.c」と出力されます。
これを別の方法で行うか、この関数を「遅延」にすることはできますか?
あなたはalias -s
振る舞いが欲しくなるでしょう。マンページから:
ALIASES
Suffix aliases are supported in zsh since version 4.2.0. Some examples:
alias -s tex=vim
alias -s html=w3m
alias -s org=w3m
Now pressing return-key after entering foobar.tex starts vim with foobar.tex. Calling
a html-file runs browser w3m. www.zsh.org and pressing enter starts w3m with argument
www.zsh.org.
作成した関数をサフィックス エイリアスに結合すると、準備完了です。
まず、関数を次の形式で記述します。
compile_c () {
gcc $1 -o ${1%.*}
}
そして、サフィックスエイリアス
alias -s c='compile_c'
意図したとおりに動作します。