Повернення каретки з командою echo


9

Я практикував команду ехо з опцією \r(повернення каретки), як показано нижче.

echo -e "This is \r my college"

вихід:

 my college

але коли я додаю ще одне слово раніше, \rяк нижче

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

Тоді це дає мені вихід:

 my college the

Ще один приклад

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

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

Отже, я хотів знати, що в чому полягає фактична мета повернення вагона сюди?


Це не відтворюється. Друга команда дає результат ␣my college, як і перша.
Kusalananda

3
echo -eє сумно нерепортажним. Ви, мабуть, використовуєте printfзамість цього.
tripleee

Відповіді:


20

\rНе тільки що, «повернення каретки» - нічого. Це означає, що після \rзаповіту буде замінено початок того, що вже було надруковано.

Наприклад:

echo -e "1234\r56"

Відобразиться:

5634

echoнадрукував, 1234потім повернувся до початку рядка та надрукував 56у верхній частині 12.

Для нового рядка спробуйте \nзамість цього. Не потрібно також пробілів. Наприклад:

echo -e "This is\nmy college"

Що виведе:

This is
my college

Повернення вагона корисно для таких речей:

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

Яка буде відображатися dateнад самою вершиною замість створення нового рядка після кожного циклу.


1
повернення каретки також використовується в передбачених системою функцій. Наприклад функція echo_successвід /etc/init.d/functions.
Тревор Бойд Сміт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.