Pour avoir une idée de ce qui se passe, lancez
% alias striplines='print -lr awk " /^$/ {print \"\n\"; } /./ {printf( \" %s \",$0);}"'
% striplines
awk
/^$/ {print "\n"; } /./ {printf( " %s ",zsh);}
Étant donné que les $
caractères sont entre guillemets (lorsqu'ils sont développés après le développement de l'alias), ils sont interprétés par le shell. Pour obtenir le bon devis, il est plus facile de mettre la définition d'alias entière entre guillemets simples. Ce qui se trouve à l'intérieur des guillemets simples est ce qui sera développé lorsque l'alias est utilisé. Maintenant que l'argument de awk
est entouré de guillemets, il est clair que vous avez besoin de barres obliques inverses avant \"$
.
alias striplines='print -lr awk " /^\$/ {print \"\n\"; } /./ {printf( \" %s \",\$0);}"'
Un idiome utile pour mettre entre guillemets simples une chaîne entre guillemets simples est que '\''
c'est à peu près un moyen de mettre une citation simple littérale dans une chaîne entre guillemets simples. Techniquement, il existe une juxtaposition d'une chaîne entre guillemets simples, d'une barre oblique inverse '
et d'une autre chaîne entre guillemets simples. La chaîne vide juxtaposée ''
à la fin peut être supprimée.
alias striplines='print -lr awk '\'' /^$/ {print "\n"; } /./ {printf( " %s ",$0);}'\'
Après cette longue explication, une recommandation: quand c'est trop compliqué pour un alias, utilisez une fonction .
Gilles 'SO- arrête d'être méchant'
la source