例如,如果我可以像下面这样,是否有可能。
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 - username
sudo -u username -i
su
如果您想要更复杂的东西,请使用函数而不是别名。
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
(任何变体)、bash
、zsh
等。 (T)csh 的工作方式有所不同。)
答案2
尝试这个:alias sd='sudo su - $1'