Carriage kembali dengan perintah gema

9

Saya sedang berlatih perintah gema dengan opsi \r(carriage return) seperti di bawah ini.

echo -e "This is \r my college"

keluaran:

 my college

tetapi ketika saya menambahkan satu kata lagi sebelumnya \rseperti di bawah ini

echo -e "This is the \r my college"

Maka itu memberi saya output seperti:

 my college the

Contoh lain

echo -e "This is \r valid data"
 valid data

echo -e "This is not a \r valid data"
 valid data a

Jadi, saya ingin tahu apa tujuan sebenarnya dari pengangkutan kembali ke sini?

Menukik
sumber
Ini tidak dapat direproduksi. Perintah kedua menghasilkan output ␣my college, sama seperti yang pertama.
Kusalananda
3
echo -eterkenal tidak bisa diangkut. Anda mungkin harus menggunakan printfsebagai gantinya.
tripleee

Jawaban:

20

Hanya \rsaja, "carriage return" - tidak ada yang lain. Ini berarti apa yang terjadi setelah surat \rwasiat menimpa awal dari apa yang sudah dicetak.

Sebagai contoh:

echo -e "1234\r56"

Akan menampilkan:

5634

echotelah dicetak 1234kemudian kembali ke awal garis dan dicetak 56di atas 12.

Untuk baris baru, coba \nsaja. Tidak perlu spasi juga. Sebagai contoh:

echo -e "This is\nmy college"

Yang akan menghasilkan:

This is
my college

Carriage return berguna untuk hal-hal seperti ini:

#!/bin/sh
i=0
while [ $i -lt 3 ]
do
    echo -ne "\r"`date` #you should remove new line too
    sleep 1
    i=$(($i + 1))
done
exit

Yang akan ditampilkan datedi atas sendiri bukannya membuat garis baru setelah setiap loop.

Tigger
sumber
1
carriage return juga digunakan dalam fungsi yang disediakan sysvinit. Misalnya fungsi echo_successdari /etc/init.d/functions.
Trevor Boyd Smith