Untuk mengetahui apa yang sedang terjadi, jalankan
% alias striplines='print -lr awk " /^$/ {print \"\n\"; } /./ {printf( \" %s \",$0);}"'
% striplines
awk
/^$/ {print "\n"; } /./ {printf( " %s ",zsh);}
Karena $
karakter dalam tanda kutip ganda (ketika mereka diperluas setelah alias diperluas), mereka ditafsirkan oleh shell. Untuk mendapatkan kutipan yang benar, lebih mudah untuk menempatkan seluruh definisi alias dalam tanda kutip tunggal. Apa yang ada di dalam tanda kutip tunggal adalah apa yang akan diperluas ketika alias digunakan. Sekarang argumen awk
dikelilingi dalam tanda kutip ganda, jelas bahwa Anda perlu backslash sebelumnya \"$
.
alias striplines='print -lr awk " /^\$/ {print \"\n\"; } /./ {printf( \" %s \",\$0);}"'
Sebuah idiom yang berguna untuk mengutip tunggal string yang dikutip tunggal adalah cara yang '\''
cukup banyak untuk menempatkan kutipan tunggal literal dalam string yang dikutip tunggal. Secara teknis ada penjajaran string dengan tanda kutip tunggal, tanda garis miring terbalik '
, dan string tanda kutip tunggal. String kosong disandingkan ''
di akhir dapat dihapus.
alias striplines='print -lr awk '\'' /^$/ {print "\n"; } /./ {printf( " %s ",$0);}'\'
Setelah penjelasan panjang ini, sebuah rekomendasi: ketika terlalu rumit untuk sebuah alias, gunakan sebuah fungsi .