我们可以为带参数的命令创建别名吗

我们可以为带参数的命令创建别名吗

我想为以下对象创建别名:

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

当我输入 时rm -rf *,我希望将其注释掉而不采取任何操作。

[问] 一般问题是我们可以为带参数的命令生成别名吗?

答案1

您不能创建带有空格的别名,即如下所示的内容无效:

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

但是当然您可以为带有参数的命令创建别名:

alias foo='#rm -rf *'

尽管从您问题的示例来看,看起来您想#在每个rm.为此,您只需要别名rm

alias rm='#rm'

如果您只想“禁用” rmfor -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
}

相关内容