パラメータ付きのコマンドのエイリアスを作成できますか?

パラメータ付きのコマンドのエイリアスを作成できますか?

次のオブジェクトのエイリアスを作成したいと思います。

  • rm -rf *=>#rm -rf *
  • rm *=>#rm *

を入力するときにrm -rf *コメントし、何もしないようにしたいです。

[Q]一般的な質問は、パラメータ付きのコマンドのエイリアスを生成できるかどうかです。

答え1

スペースを含むエイリアスは作成できません。つまり、次の内容は無効です。

alias 'rm -rf *'='#rm -rf *'

ただし、もちろん、パラメーターを使用してコマンドのエイリアスを作成することもできます。

alias foo='#rm -rf *'

#あなたの質問の例では、それぞれにエイリアスをしたいようですが、これをrm行うにはエイリアスだけが必要ですrm

alias rm='#rm'

rmに対して「無効」にするには、-rfラッパー関数を作成する必要があります。

rm() {
    if [ "$1" != "-rf" ]; then
        rm $@
    fi
}

無効にrm -rf *するだけで含まれていない他のアイテムはそのまま残すことはできますかrm -rf*

そうそうできます。たとえば、

rm() {
    if [ "$1" != "-rf" ]; then
        rm $@
    else
        shift 1
        x="$@"
        if [ "$x" != "$(echo *)" ]; then
            rm -rf $@
        fi
    fi
}

関連情報