como escapar '$' em uma instrução awk no alias do shell

-1

Eu estou tentando escrever um alias que vai matar todos os processos php em execução .. este é o comando que eu tenho no meu ~/.bash_profile

alias killphp="ps aux | g [p]hp | awk '{print $3}' | xargs kill -9"

este comando funciona muito bem se eu o digito como está sem o alias .. mas se eu simplesmente executar killphp eu recebo essa estranheza:

grep: warning: recursive search of stdin
kill: illegal process id: (standard
kill: illegal process id: input):2:abdullah
kill: illegal process id: 10.9
kill: illegal process id: 0.2
kill: 2496576: No such process
kill: 20460: No such process
kill: illegal process id: ??
kill: illegal process id: S
kill: illegal process id: 7:14AM
kill: illegal process id: 0:00.28
kill: illegal process id: /usr/local/Cellar/php54/5.4.28/bin/php
kill: illegal process id: /Users/abdullah/dev/php/smartTaxi/app/console
kill: illegal process id: bcc:resque:worker-start
kill: illegal process id: -f
kill: illegal process id: request_queue
kill: illegal process id: --env=dev
kill: illegal process id: (standard
kill: illegal process id: input):3:abdullah
kill: illegal process id: 6.0
kill: illegal process id: 0.1
kill: 2486972: No such process
kill: 9708: No such process
kill: illegal process id: ??
kill: illegal process id: S
kill: illegal process id: 7:14AM
kill: illegal process id: 0:00.08
kill: illegal process id: php
kill: illegal process id: /Users/abdullah/dev/php/smartTaxi/app/../vendor/chrisboulton/php-resque/resque.php

se eu executar type killphp , obtenho isto:

killphp is aliased to 'ps aux | g [p]hp | awk '{print }' | xargs kill -9'

então aparentemente o argumento $3 to awk sumiu! como eu escapo? Eu tentei fazer /$3 e $$3 , mas nenhum deles funciona.

    
por abbood 27.06.2014 / 06:22

1 resposta

3

Você ficaria muito melhor usando pkill . Mas, para resolver sua questão, crie killphp uma função bash em vez de um alias, colocando isso no seu perfil.

killphp() {
  ps aux | g [p]hp | awk '{print $3}' | xargs kill -9
}

Você pode usá-lo como o alias:

killphp

Você poderia ter escapado do $ escrevendo \$ , mas com funções você não precisa se preocupar com citações.

    
por 27.06.2014 / 06:27