Saya sedang membaca buku tentang pemrograman shell dan mempelajari bahwa perintah berikut ini setara, yang berbunyi bip di Mac saya tetapi tidak mengeluarkan suara apa pun di Ubuntu:
$ echo $'\a'
$ echo -e "\a"
$
namun dalam kedua kasus, terminal meminta baris kosong. Pertanyaan saya adalah:
- Apa itu
$'\a'
di sini? Perluasan parameter, substitusi perintah, atau yang lainnya? - Mengapa
echo
mencetak baris kosong seolah-olah parameternya tidak ditentukan, seperti misalnya, dalam kasus
$ echo $NONSENSE
yang meminta baris kosong? Terima kasih!
Jawaban yang Diterima:
jangan membuat suara apa pun di Ubuntu:
mungkin karena emulator terminal khusus Anda dikonfigurasi untuk menghindari suara, atau karena pcspkr
modul kernel dibongkar, dll... Anda dapat menggunakan emulator terminal lain (mis. xterm
lama ) yang seharusnya berbunyi bip.
Apa itu
$'\a'
di sini?
Baca bab tentang ekspansi shell dari manual Bash. Ini disebut kutipan ANSI-C (seperti yang dikomentari oleh South Parker).
Mengapa echo mencetak baris kosong
echo
perintah (baca lebih lanjut echo(1)…) sering kali merupakan bash shell bawaan jadi (tanpa -n
) ia mencetak argumennya yang diperluas (di sini karakter lonceng) diikuti oleh baris baru. Tetapi emulator terminal Anda tidak membunyikan bel yang dapat didengar (dan karakter belnya tidak ditampilkan, karena merupakan karakter kontrol)
BTW, Apple dikabarkan tidak menyukai lisensi GPLv3+, jadi Anda dapat meningkatkan bash
Anda ke versi terbaru (mis. 4.4 pada Agustus 2017) di komputer Apple Anda.
Anda dapat membaca tty demistified untuk pendekatan historis ke emulator terminal di Unix. Lihat juga pty(7).