如何在别名末尾使用bash别名

  • 本文关键字:别名 bash bash alias
  • 更新时间 :
  • 英文 :


是否可以在使用别名的命令末尾使用别名。完整的命令是:

kubectl delete pod nginx --grace-period=0 --force

这些是我的别名:

alias k=kubectl
alias gpf="--grace-period=0 --force"

我想把两个别名合并成这样的东西:

k delete pod nginx gpf

别名不是宏;它替代了一个命令。--grace-period=0不是命令;别名的组成";不会起作用。

此外,您的两个命令都没有定义别名。别名由定义

alias NAME='command to execute'

您缺少alias关键字。因此,您对gpfk的定义不定义别名,而是定义shell变量。

尽管如此,你对gpf的定义还是很有用的,因为你可以在中使用它

kubectl $gpf

以下shell函数具有您所要求的行为:

k() {
local -a args=( kubectl )               # initialize argument list to "kubectl"
for arg do                              # iterate over each funtion argument
if [[ $arg = gpf ]]; then             # if that argument is "gpf"...
args+=( --grace-period=0 --force )  # ...append the specific arguments we want
else
args+=( "$arg" )                    # otherwise, just append what we were given
fi
done
"${args[@]}"                            # then run our list as a command.
}

k删除pod nginx gpf->这实际上是有效的,但它抛出了一个错误。

如果您仔细注意,pod的删除不会花费太多时间。

错误表明没有名为";gpf";,不确定kubectl是否假定gpf是一个pod,因为它已经替换了该值。

最新更新