参数别名

参数别名

例如,如果我可以像下面这样,是否有可能。

alias sd='sudo su - <parameter>'

如果我在命令提示符下像下面这样写。

$sd parameter

我需要给定 ID 作为参数。

还,

alias chdr='cd /dir1/dir2/dir3/<parameter>'
$chdr parameter

答案1

简单定义

alias sd='sudo su -'

和写

标准差用户名

您无法将参数传递给别名,但是一旦扩展了别名,它后面的单词就会成为命令的参数。

您可以使用而不是(除非您的 sudo 配置仅限于运行,这不会带来任何安全优势)。sudo su - usernamesudo -u username -isu

如果您想要更复杂的东西,请使用函数而不是别名。

chdr () {
  cd "/dir1/dir2/dir3/$1"
}

您可以将参数传递给函数。在函数定义中,"$1"被第一个参数、第二个参数等替换"$2"。不要忘记在变量扩展周围加上双引号

对于这种特定情况,CDPATH如果您的 shell 支持此功能,您可能会喜欢(检查您的 shell 手册)。

对于任何sudo用例,您可能更喜欢此函数,如果除用户名之外未传递任何参数,则该函数运行登录 shell,或者如果传递更多参数,则运行指定的命令。$#被参数的数量替换,并且"$@"将所有参数不变地传递。

sd () {
  if [ $# -eq 1 ]; then
    sudo -i -u "$1"
  else
    sudo -u "$@"
  fi
}

(我假设您使用 Bourne 风格的 shell,例如sh, ksh(任何变体)、bashzsh等。 (T)csh 的工作方式有所不同。)

答案2

尝试这个:alias sd='sudo su - $1'

相关内容