Вам нужно:
alias aliasname="free | awk '/^Mem/ { printf(\"free: %.2f %\n\", \$4/\$2 * 100.0) }'"
Обратите внимание, что вам нужно экранировать как "
, так и $
.
Утверждение, что синтаксис псевдонима — alias aliasname='command'
, немного вводит в заблуждение, так как кажется, что одинарные кавычки являются частью синтаксиса. Они не. Часть после знака равенства похожа на присваивание переменной, поскольку это может быть любое слово оболочки слово , состоящее либо из простых символов (без кавычек ), либо из строки в кавычках, либо из их комбинации.
Все они действительны, и последние три эквивалентны:
alias ks=ls
alias ls='ls -l'
alias ls="ls -l"
alias ls=ls\ -l
Итак, все, что вам нужно сделать, это правильно экранировать кавычки, чтобы они были внутри значения псевдонима.
См., например,. этот ответ и другие ответы, например. эти вопросы для обсуждения на том:
Или используйте функцию вместо псевдонима, чтобы полностью избавиться от проблем с цитированием:
freemem() {
free | awk '/^Mem/ { printf("free: %.2f %\n", $4/$2 * 100.0) }'
}