GNU/Linux >> Belajar Linux >  >> Linux

Mekanisme Karakter Lonceng '\a'?

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:

  1. Apa itu $'\a' di sini? Perluasan parameter, substitusi perintah, atau yang lainnya?
  2. 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).


Linux
  1. Bisakah Bash Menulis Ke Aliran Inputnya Sendiri?

  2. Bashscript Bekerja Dari Terminal Tetapi Tidak Dari Crontab?

  3. Apa yang Digema $? Mengerjakan??

  1. Apakah Mungkin Mendapatkan Karakter Di Kursor Terminal Menggunakan Kode Ansi Escape?

  2. Bagaimana Cara Membuat Animasi Rotasi Menggunakan Shell Script?

  3. mengirim email dari terminal linux dalam satu baris

  1. Lakukan petualangan di terminal Linux Anda

  2. Bagaimana Cara Menentukan Pengkodean Karakter yang Digunakan Terminal Dalam Program C/c++?

  3. Apakah mungkin untuk mengekspos terowongan TCP di Linux sebagai perangkat karakter khusus?