Я определил следующую команду:

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

который возвращает мне использование процессора в виде

cpu=nn%

Теперь я хочу определить псевдоним 'cpu' для вышеуказанной команды, но у меня есть кавычки и двойные кавычки. Что я могу сделать?

1 ответ1

0

Выберите один и либо уберите необходимость, либо убегите от другого. Например, используя "" для обозначения границ строки (что кажется более простым в данном конкретном случае), мы сначала помещаем кавычки вокруг строки:

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%
$

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .