Existe uma maneira de alias um comando multi-worded no Unix?

10

Estou tentando aliasar o comando sudo shutdown , mas no meu .profile não posso fazer apenas alias "sudo shutdown"="my command" . Existe outra maneira de codificar os comandos multi-word no Unix?

    
por agentbanks217 10.02.2011 / 22:17

5 respostas

17

O nome do alias está no lado esquerdo, portanto, você pode ter qualquer comando com várias palavras à direita:

alias my_alias="multi worded command"

EDIT: No entanto, se você realmente quiser ter apelidos com nomes de várias palavras - no seu exemplo, se você realmente quer que "sudo shutdown" seja o alias, você pode resolver isso usando o seguinte recurso de alias (em o manual bash):

A trailing space in  value causes the next word to be checked for
alias substitution when the alias is expanded.

Então, se você ainda quiser usar sudo com outros comandos, mas não com shutdown , e se você puder pagar alias de shutdown para outra coisa, você pode ter:

alias sudo='sudo '
alias shutdown="echo nope"

Agora, sudo anything_else funcionará como esperado (supondo que você não tenha um alias para anything_else , mas se tiver, ele não teria funcionado antes); mas sudo shutdown será equivalente a sudo echo nope e imprimirá essa string.

    
por 10.02.2011 / 22:20
4

Use uma função:

foo() { if [ "$1" = "bar" ]; then echo "doing something..."; fi; }
    
por 10.02.2011 / 22:20
1

Você pode usar um traço como uma solução: alias sudo-shutdown="your command"

    
por 10.02.2011 / 22:20
1

Eu prefiro apenas colocar um arquivo executável em / usr / local / bin (tenha certeza que está no seu caminho) que contém os comandos que eu quero executar. O nome do script seria o comando que aparece. não se esqueça de chmod + x / usr / local / bin / your_script.

Assim, o script pode ser chamado de "desligamento"

O conteúdo do encerramento do arquivo seria:

#!/bin/sh
sudo shutdown

Isso abre um mundo totalmente novo. Você poderia ter alguns comandos ou mesmo um script:

#!/usr/bin/env python
print "hi"
# more stuff. ....
    
por 10.02.2011 / 22:41
1

Para citar: Bash: espaços no nome do alias

A documentação do Bash indica "Para quase todos os efeitos, as funções do shell são preferidas aliases. " Aqui está uma função do shell que substitui ls e faz com que a saída seja canalizada para more se o argumento consistir em (apenas) -la .

ls() {
    if [[ $@ == "-la" ]]; then
        command ls -la | more
    else
        command ls "$@"
    fi
}

Como um verso:

ls() { if [[ $@ == "-la" ]]; then command ls -la | more; else command ls "$@"; fi; }

Saída de canal automaticamente:

ls -la
    
por 29.07.2016 / 20:06

Tags