次のオブジェクトのエイリアスを作成したいと思います。
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
}