Eu estou tentando alias o comando, sudo shutdown
mas no meu .profile
eu não posso apenas fazer alias "sudo shutdown"="my command"
. Existe outra maneira de alternar os comandos com várias palavras no Unix?
Eu estou tentando alias o comando, sudo shutdown
mas no meu .profile
eu não posso apenas fazer alias "sudo shutdown"="my command"
. Existe outra maneira de alternar os comandos com várias palavras no Unix?
Respostas:
O nome alternativo está no lado esquerdo, para que você possa ter qualquer comando com várias palavras à direita:
alias my_alias="multi worded command"
EDIT: No entanto, se você realmente deseja ter nomes alternativos de várias palavras - no seu exemplo, se você realmente deseja que "sudo shutdown" seja o apelido, você pode contornar isso usando o seguinte recurso de apelido (no manual do bash ):
A trailing space in value causes the next word to be checked for
alias substitution when the alias is expanded.
Portanto, se você ainda deseja usar sudo
com outros comandos, mas não com, shutdown
e se puder dar um alias shutdown
a outra coisa, poderá ter:
alias sudo='sudo '
alias shutdown="echo nope"
Agora, sudo anything_else
funcionará conforme o esperado (supondo que você não tenha um alias para anything_else
, mas se o tiver, também não teria funcionado antes); mas sudo shutdown
será equivalente sudo echo nope
e imprimirá essa sequência.
alias cd="cd "
com aliases de uma letra alias X="<directory-with-long-name>"
para pular de um lugar para outro com mais facilidade.
alias gti="git "
ealias lgo="log"
Use uma função:
foo() { if [ "$1" = "bar" ]; then echo "doing something..."; fi; }
else
caso para que o comando original seja executado se o segundo parâmetro não for bar
:foo() { if [ "$1" = "bar" ]; then echo "doing something..."; else command foo "$@"; fi; }
Para citar: Bash: Espaços no nome alternativo
A documentação do Bash indica "Para quase todos os fins, as funções do shell são preferidas aos aliases". Aqui está uma função shell que substitui ls
e faz com que a saída seja canalizada more
se o argumento consistir em (apenas) -la
.
ls() {
if [[ $@ == "-la" ]]; then
command ls -la | more
else
command ls "$@"
fi
}
Como uma linha:
ls() { if [[ $@ == "-la" ]]; then command ls -la | more; else command ls "$@"; fi; }
Saída de tubo automaticamente:
ls -la
Prefiro apenas colocar um arquivo executável em / usr / local / bin (certifique-se de que esteja no seu caminho) que contém os comandos que desejo executar. O nome do script seria o comando que surgir. certifique-se de chmod + x / usr / local / bin / your_script.
Portanto, o script poderia ser chamado de 'desligamento'
O conteúdo do encerramento do arquivo seria:
#!/bin/sh
sudo shutdown
Isso abre um mundo totalmente novo. Você pode ter alguns comandos ou mesmo um script:
#!/usr/bin/env python
print "hi"
# more stuff. ....