Выберите один и либо уберите необходимость, либо убегите от другого. Например, используя ""
для обозначения границ строки (что кажется более простым в данном конкретном случае), мы сначала помещаем кавычки вокруг строки:
alias cpu="top -b n 2 -d 0.01 | grep 'Cpu' | tail -n 1 | awk '{print "cpu=" 100.0-$8 "%"}'"
Затем нам нужно экранировать внутренние кавычки, чтобы они не заканчивали строку, как это видно из оболочки:
alias cpu="top -b n 2 -d 0.01 | grep 'Cpu' | tail -n 1 | awk '{print \"cpu=\" 100.0-$8 \"%\"}'"
Затем $8
становится расширением переменной оболочки (а не выражением переменной awk) в этом контексте, поэтому нам также нужно избегать этого. В этом не было бы необходимости, если бы мы могли использовать ''
(прямые апострофы) для указания границ строк в оболочке.
alias cpu="top -b n 2 -d 0.01 | grep 'Cpu' | tail -n 1 | awk '{print \"cpu=\" 100.0-\$8 \"%\"}'"
После запуска финальной версии выше, она работает:
$ alias cpu="top -b n 2 -d 0.01 | grep 'Cpu' | tail -n 1 | awk '{print \"cpu=\" 100.0-\$8 \"%\"}'"
$ alias | grep '^alias cpu='
alias cpu='...'
$ cpu
cpu=nn%
$