como fazer alias com aspas

1

Eu tentei fazer alias com aspas da seguinte forma:

alias myalias='ps -ef | grep tomcat | kill -9 'awk {'print $2'}''

mas, como você pode ver, eu já tenho ' no awk

então eu tentei substituir

awk {'print $2'}

com

awk {"print $2"}

mas coisas estranhas acontecem comigo quando eu executo esse alias, ou seja, a janela do console é fechada ... Como posso fazer este alias funcionar?

    
por Jas 11.03.2014 / 13:55

4 respostas

6

Usar uma função em vez de um alias evita a maioria desses problemas de cotação:

myfn() { ps -ef | awk '/tomcat/ {print $2}' | xargs kill -9; }

Se você estiver usando o awk, não precisa do grep.

Ou fique com uma função e evite quase todo o trabalho que você está fazendo:

alias myalias='pkill -9 -f tomcat'
    
por 11.03.2014 / 14:27
2

Você pode "colar" aspas simples com aspas duplas:

alias myalias='ps -ef | grep tomcat | kill -9 'awk {'"'"'print $2'"'"'}''

Aqui está uma referência interessante: link

No entanto, existem soluções mais simples para eliminar um processo em vez de usar vários canais ou aspas simples adicionais (Cf outras respostas). Aqui eu estava apenas tentando responder sua pergunta inicial, mantendo sua lógica.

    
por 11.03.2014 / 14:12
2

Aqui estão os itens essenciais para o alias citar:

alias x='echo dollar sign: \$ "single quote: '\'' backslash: \ double quote: \"."'
$ alias x
alias x='echo dollar sign: \$ "single quote: '\'' backslash: \ double quote: \"."'
$ x
dollar sign: $ single quote: ' backslash: \ double quote: ".

Há muito pouco que não pode ser feito, praticamente qualquer coisa que possa ser digitada na linha de comando bash pode ser colocada em um alias .

    
por 24.12.2017 / 00:39
1

Em vez de executar esses vários canais, use argumentos para ps para obter apenas o pid para começar:

alias killtc='kill 'ps -C tomcat -o pid=''
    
por 11.03.2014 / 14:16