Como eu faço um alias para um comando Unix que inclua aspas simples e duplas?

0

Eu defini o seguinte comando:

top -b n 2 -d 0.01 | grep 'Cpu' | tail -n 1 | awk '{print "cpu=" 100.0-$8 "%"}'

que me retorna o uso da CPU na forma

cpu=nn%

Agora quero definir o alias 'cpu' para o comando acima, mas tenho aspas e aspas duplas nele. O que posso fazer?

    
por Andrea 12.06.2015 / 10:13

1 resposta

0

Escolha um e remova a necessidade ou escape do outro. Por exemplo, usando "" para indicar os limites da string (o que parece mais fácil neste caso específico), primeiro colocamos aspas ao redor da string:

alias cpu="top -b n 2 -d 0.01 | grep 'Cpu' | tail -n 1 | awk '{print "cpu=" 100.0-$8 "%"}'"

Em seguida, precisamos escapar das aspas internas para que elas não terminem a string conforme visto pelo shell:

alias cpu="top -b n 2 -d 0.01 | grep 'Cpu' | tail -n 1 | awk '{print \"cpu=\" 100.0-$8 \"%\"}'"

Então, $8 se torna uma expansão de variável de shell (ao invés de uma expressão de variável awk) neste contexto, então precisamos escapar disso também. Isso não teria sido necessário se tivéssemos conseguido usar '' (apóstrofos retos) para indicar os limites da string para o shell.

alias cpu="top -b n 2 -d 0.01 | grep 'Cpu' | tail -n 1 | awk '{print \"cpu=\" 100.0-\ \"%\"}'"

Depois de executar a versão final acima, funciona:

$ alias cpu="top -b n 2 -d 0.01 | grep 'Cpu' | tail -n 1 | awk '{print \"cpu=\" 100.0-\ \"%\"}'"
$ alias | grep '^alias cpu='
alias cpu='...'
$ cpu
cpu=nn%
$
    
por 12.06.2015 / 10:19

Tags