Gostaria de definir um alias que execute os dois comandos a seguir consecutivamente.
gnome-screensaver
gnome-screensaver-command --lock
Agora eu adicionei
alias lock='gnome-screensaver-command --lock'
para o meu .bashrc, mas como bloqueio minha estação de trabalho com tanta frequência, seria mais fácil digitar apenas um comando.
bash
configuration
yuriel
fonte
fonte
lock()
parênteses dá errosyntax error near unexpected token
msg'` ..$1
,$2
... no corpo da função.As outras respostas respondem à pergunta adequadamente, mas seu exemplo parece que o segundo comando depende da saída do primeiro com êxito. Você pode tentar uma avaliação de curto-circuito em seu alias:
Agora, o segundo comando nem será tentado, a menos que o primeiro seja bem-sucedido. Uma descrição melhor da avaliação de curto-circuito é descrita nesta questão do SO .
fonte
git fetch && git pull origin master
e não funcionou para mim até que eu substituído&&
com;
.Os aliases destinam-se ao alias dos nomes de comando. Qualquer coisa além disso deve ser feita com funções.
Aliases são nomes que ainda estão associados ao nome original.
ll
é apenas um tipo ligeiramente específico dels
.Uma função é um novo comando que possui lógica interna. Não é simplesmente uma renomeação de outro comando. Faz operações internas.
Tecnicamente, os aliases na linguagem shell Bash são tão limitados em recursos que são extremamente inadequados para qualquer coisa que envolva mais do que um único comando . Use-os para fazer uma pequena mutação de um único comando, nada mais.
Como a intenção é criar um novo comando que execute uma operação que internamente resolverá em outros comandos, a única resposta correta é usar uma função aqui:
O uso de aliases em um cenário como esse apresenta muitos problemas. Ao contrário das funções executadas como comandos, os alias são expandidos para o comando atual, o que levará a problemas muito inesperados ao combinar esse "comando" com outros comandos. Eles também não funcionam em scripts.
fonte
gps() { git commit -m 'init '; git push; git status; }
Como explicado, os aliases são extremamente limitados, frágeis e sua única intenção é renomear comandos. Abusá-los para fins não relacionados o levará a água quente, como você acabou de experimentar.Isso não funciona?
fonte
Isso executaria os 2 comandos um após o outro:
fonte
Então use um ponto-e-vírgula:
Isso não funciona bem se você deseja fornecer argumentos para o primeiro comando. Como alternativa, crie um script trivial no diretório $ HOME / bin.
fonte
Adicionando meus 2 centavos à discussão de 11 anos, tente o seguinte:
alias lock="gnome-screensaver \gnome-screensaver-command --lock"
fonte
Adicione esta função ao seu
~/.bashrc
e reinicie seu terminal ou executesource ~/.bashrc
Dessa forma, esses dois comandos serão executados sempre que você entrar
lock
no seu terminal.No seu caso específico, criar um
alias
pode funcionar, mas eu não o recomendo. Intuitivamente, pensaríamos que o valor de um alias seria o mesmo que se você inserisse o valor no terminal. No entanto, esse não é o caso:e
Portanto, não use um alias a menos que você precise. https://ss64.com/bash/alias.html
fonte
Eu tive um problema ao declarar aliases em
~/.bashrc
. Meu terminal não reconheceu os apelidos que declarei~/.bashrc
. Aprendi com o artigo (anexado na parte inferior) que o Mac OS X é executadologin-shell
por padrão, portanto, ele chama em~/.bash_profile
vez de~/.bashrc
.Se você tiver o mesmo problema ao declarar seus aliases, consulte o seguinte link para resolver o problema:
http://www.joshstaiger.org/archives/2005/07/bash_profile_vs.html
fonte
source .bashrc
após salvar as alterações no arquivo, para permitir que o alias seja reconhecido sem fazer logout.