Щоб зрозуміти, що відбувається, запустіть
% alias striplines='print -lr awk " /^$/ {print \"\n\"; } /./ {printf( \" %s \",$0);}"'
% striplines
awk
/^$/ {print "\n"; } /./ {printf( " %s ",zsh);}
Оскільки $
символи містяться в подвійних лапках (коли вони розгорнуті після розширення псевдоніму), вони інтерпретуються оболонкою. Щоб правильно отримати цитування, простіше помістити ціле визначення псевдоніму в єдині лапки. Всередині одинарних лапок є те, що буде розширено, коли буде використано псевдонім. Тепер, коли аргумент awk
оточений подвійними цитатами, зрозуміло, що вам потрібні зворотні риски \"$
.
alias striplines='print -lr awk " /^\$/ {print \"\n\"; } /./ {printf( \" %s \",\$0);}"'
Корисна ідіома для одноцитування рядка з цитатами - '\''
це в значній мірі спосіб ввести буквальну одиничну цитату в рядок з цитуванням. Технічно є супозиція рядків з одним котируванням, зворотної косою рисою '
та ще одного рядка з одним котируванням. Складений порожній рядок ''
в кінці можна видалити.
alias striplines='print -lr awk '\'' /^$/ {print "\n"; } /./ {printf( " %s ",$0);}'\'
Після цього тривалого пояснення, рекомендація: коли це занадто складний псевдонім, використовуйте функцію .