如何为命令添加空格别名?(或外壳函数)

Car*_*uss 2 bash shell alias function

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

我想做的是让其他管理员(作为 root)更难针对我们的 Pass 实现运行命令(此处的文档:https: //www.passwordstore.org/)。这仍然是可能的,但我希望将“pass rm $anyValue TheyInput”之类的命令并将其别名为“echo '你不能这样做'”。当然,他们是管理员,他们可以更改别名,但这有望防止意外删除密码。

这在 BASH 中可能吗?这些都将位于 RHEL 或 Centos 机器上。

PSk*_*cik 5

给整个命令加上参数的别名是不可能的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 "$@" 
}
Run Code Online (Sandbox Code Playgroud)