Vận chuyển trở lại với lệnh echo


9

Tôi đã thực hành lệnh echo với tùy chọn \r(trở về vận chuyển) như dưới đây.

echo -e "This is \r my college"

đầu ra:

 my college

nhưng khi tôi thêm một từ trước \rnhư dưới đây

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

Sau đó, nó cho tôi đầu ra như:

 my college the

Một vi dụ khac

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

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

Vì vậy, tôi muốn biết rằng mục đích thực sự của việc vận chuyển trở lại đây là gì?


Điều này là không thể tái sản xuất. Lệnh thứ hai dẫn đến kết quả đầu ra ␣my college, giống như lệnh đầu tiên.
Kusalananda

3
echo -enổi tiếng là không thể quan sát được. Bạn có thể sử dụng printfthay thế.
tripleee

Câu trả lời:


20

Chỉ \rlà, một "trở về xe ngựa" - không có gì khác. Điều này có nghĩa là những gì sau khi di \rchúc sẽ ghi đè lên phần đầu của những gì đã được in.

Ví dụ:

echo -e "1234\r56"

Sẽ hiển thị:

5634

echođã in 1234sau đó quay trở lại đầu dòng và in 56trên đầu trang 12.

Đối với một dòng mới, hãy thử \nthay thế. Không cần không gian quá. Ví dụ:

echo -e "This is\nmy college"

Sẽ xuất ra:

This is
my college

Việc trả lại xe ngựa là hữu ích cho những thứ như thế này:

#!/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

Nó sẽ hiển thị datetrên đầu của chính nó thay vì tạo một dòng mới sau mỗi vòng lặp.


1
trở lại vận chuyển cũng được sử dụng trong các chức năng được cung cấp sysvinit. Ví dụ chức năng echo_successtừ /etc/init.d/functions.
Trevor Boyd Smith
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.