我想为以下对象创建别名:
rm -rf *
=>#rm -rf *
rm *
=>#rm *
当我输入 时rm -rf *
,我希望将其注释掉而不采取任何操作。
[问] 一般问题是我们可以为带参数的命令生成别名吗?
答案1
您不能创建带有空格的别名,即如下所示的内容无效:
alias 'rm -rf *'='#rm -rf *'
但是当然您可以为带有参数的命令创建别名:
alias foo='#rm -rf *'
尽管从您问题的示例来看,看起来您想#
在每个rm
.为此,您只需要别名rm
:
alias rm='#rm'
如果您只想“禁用” rm
for -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
}