コマンドオプションのエイリアスを設定する方法はありますか?たとえば、私はしばしばoptions-mindepth
と-maxdepth
withを使用しますfind
が、両方とも長く、それぞれ9文字で、対応する略語はありません。-mn
など、より速く入力できる名前でエイリアスを指定したいと思います-mx
。もちろん、いつでも新しいオプション名を使用してカスタムバイナリを作成できますが、私はこの動作を提供するシェル組み込み/ユーティリティに興味があります(コマンドがエイリアスを使用できるようにするalias
方法と似ています)。
ベストアンサー1
シェル関数またはスクリプトを作成します。唯一の質問は、極端なケースにどれだけ興味があるかということです。全く気にしないなら
#!/bin/bash
args=()
while (($# > 0))
do
case "$1" in
("-mn") args=("${args[@]}" "-mindepth") ;;
("-mx") args=("${args[@]}" "-maxdepth") ;;
(*) args=("${args[@]}" "$1") ;;
esac
shift
done
exec find "${args[@]}"
もう少し気になるなら試してみてください
("-mn") args=("${args[@]}" "-mindepth" "$2") ; shift ;;
変換しないように、パラメータを含む他のすべての検索オプションに同様のケースを追加します。
find / -name -mn -print
入力する
find / -name -mindepth -print
このスクリプトを呼び出さないでくださいfind
。おそらくfnd
find や less より短いオプションが必要だからですmyfind
。 findを呼び出すとうまくいくかもしれませんが、コメントで述べたように、標準プログラムの動作を変更する方法はわかりません。