如何用空格别名命令? (或shell函数)

时间:2017-07-22 13:46:37

标签: bash function shell alias

我看过的所有文档似乎都表明,在别名和shell函数中,名称不能包含空格。

我正在尝试做的是让其他管理员(作为root用户)更难以针对我们的Pass实现运行命令(doc:https://www.passwordstore.org/)。它仍然是可能的,但我希望能像“传递rm $ anyValueTheyInput”这样的命令,并将其称为“echo'你不能这样做'”。当然,他们是管理员,他们可以更改别名,但它有望防止意外删除密码。

BASH有可能吗?这些都将在RHEL或Centos盒子上。

1 个答案:

答案 0 :(得分:4)

bash中无法使用参数对整个命令进行别名化(如果甚至可以在任何UNIX shell中使用它)。

你可以做的是创建一个pass函数来捕获所有不需要的参数包并转发所有其他参数包 到command pass

pass()
{
    if [ rm = "$1" ]; then 
        >&2 printf '%s\n' "You can't do that"
        return 1
    fi
    #more checks... ?
    #...
    #forward the sanitized argument pack into the actual pass binary/script
    command pass "$@" 
}