Use pkill
:
alias killguake='pkill guake'
Isso é muito mais seguro do que tentar analisar a tabela de processos gerada por ps
.
Tendo dito isso, explicarei agora porque seu alias não faz o que você quer, mas, na verdade, use pkill
.
Seu alias
alias killguake="kill -9 $(ps aux | grep guake | head -n -1 | awk '{print $2}')"
tem aspas duplas. Isso significa que quando o shell analisa essa linha no seu script de inicialização do shell, ele executará substituições de comando ( $( ... )
). Portanto, cada vez que o arquivo for executado, em vez de fornecer um alias para matar guake
posteriormente, ele fornecerá um alias para eliminar o processo guake
em execução agora .
Se você listar seus aliases (com alias
), verá que esse alias é parecido com
killguake='kill -9 91273'
ou possivelmente apenas
killquake='kill -9'
se guake
não estava sendo executado no momento da inicialização do shell.
Para consertar isso (mas realmente, use apenas pkill
) você precisa usar aspas simples e escapar do $
no script Awk (que agora está entre aspas):
alias killguake='kill -9 $(ps aux | grep guake | head -n -1 | awk "{print \}")'
Um dos problemas com esta abordagem em geral é que você irá combinar os processos pertencentes a outros usuários. Outra é que você encontrará apenas o comando grep guake
em vez do processo pretendido. Outra é que ele lançará um erro se nenhum processo for encontrado. Outra é que você está invocando cinco utilitários externos para fazer o trabalho de um.