Defina simplesmente
alias sd='sudo su -'
e escreva
sd username
Você não pode passar parâmetros para um alias, mas uma vez que o alias foi expandido, as palavras depois dele se tornam argumentos para o comando.
Em vez de sudo su - username
, você pode usar sudo -u username -i
(a menos que sua configuração do sudo esteja restrita a executar su
, o que não traz nenhum benefício de segurança).
Se você quiser algo mais complicado, use uma função em vez de um alias.
chdr () {
cd "/dir1/dir2/dir3/$1"
}
Você pode passar argumentos para uma função. Na definição da função, "$1"
é substituído pelo primeiro parâmetro, "$2"
pelo segundo parâmetro, etc. Não se esqueça de coloca aspas duplas em torno das expansões de variáveis .
Para este caso específico, você pode gostar de CDPATH
, se o seu shell suportar este recurso (verifique o manual do seu shell).
Qualquer para o caso de uso sudo
, você pode preferir esta função que executa um shell de login se ele não receber nenhum argumento, exceto o nome do usuário, ou executa o comando especificado se passar mais argumentos. $#
é substituído pelo número de argumentos e "$@"
passa todos os argumentos inalterados.
sd () {
if [ $# -eq 1 ]; then
sudo -i -u "$1"
else
sudo -u "$@"
fi
}
(Suponho que você use um shell estilo Bourne, como sh
, ksh
(qualquer variante), bash
, zsh
, etc. (T) csh funciona de maneira diferente.)