aliases de parâmetros

1

Por exemplo, é possível se eu pudesse algo como abaixo.

alias sd='sudo su - <parameter>'

se eu escrever como abaixo no prompt de comando.

$sd parameter

Isso me sudo a um determinado ID como parâmetro.

Além disso,

alias chdr='cd /dir1/dir2/dir3/<parameter>'
$chdr parameter
    
por Ahmad 26.02.2016 / 16:04

2 respostas

3

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.)

    
por 26.02.2016 / 23:52
0

tente isto: alias sd='sudo su - $1'

    
por 26.02.2016 / 16:17

Tags