Saya hanya memperhatikan bahwa sepertinya flag -e
tidak ada untuk echo
perintah di shell saya di Linux. Apakah ini hanya pengaturan yang kacau atau itu "normal"?
Beberapa kode sebagai contoh:
#!/bin/sh
echo -e "\e[3;12r\e[3H"
Cetakan:
-e \e[3;12r\e[3H
Ini berhasil sebelumnya! Saya kira beberapa stty
perintah menjadi sangat salah dan sekarang tidak berfungsi lagi. Seseorang menyarankan bahwa saya sh
sebenarnya adil bash
.
shell
escape-characters
echo
BrainStone
sumber
sumber
echo
built - in dari/bin/sh
shell yang disediakan olehdash
paket pada Debian (sistem operasi yang dapat menggunakan Linux atau FreeBSD sebagai kernelnya).Jawaban:
Karena Anda menggunakan
sh
, tidakbash
, makaecho
perintah dish
tidak memiliki opsi-e
. Darish
halaman manual:Dan itu juga tidak ada
\e
:sumber
sh
implementasi implementasiecho -e
, pada saat kompilasibash
dapat dikatakan tidak mendukungecho -e
. Hanya saja sh tertentu (mungkindash
) tidak mendukung-e
sedangkan tertentubash
tidak.-e
bukan POSIX (pada kenyataannya, gema POSIX umumnya tidak menerima opsi (meskipun diizinkan untuk mendukung-n
), lihat di sini ), dan/bin/sh
pada sistem Anda tampaknya shell POSIX.-e
adalah ekstensi yang diterima di beberapa shell, tetapi Anda tidak harus bergantung pada itu, itu tidak portabel. Idealnya, gunakanprintf
, atau beralih ke menggunakan shell yang telahecho -e
.Juga lihat peringatan
\e
dalam komentar di bawah ini, yang harus diganti dengan\033
.sumber
sh
tidak mengenali\e
keduanya. Gunakan\033
Perhatikan bahwa kapan saja dan di hampir semua shell, Anda dapat mengetahui "gema" mana yang akan dipanggil dengan mengetik
type echo
atauwhich echo
. Biasanya shell builtin. Jadi itu tergantung pada "gema" mana yang diinstal dan pada shell mana yang Anda gunakan.sumber
which echo
jangan digunakan, kemungkinan tidak akan memberi tahu Anda jika Anda menggunakan builtin karenawhich
biasanya biner eksternal.type
itu bagus.type which
atauwhich which
). ;)