Wagenrücklauf mit Echo-Befehl

9

Ich habe den Echo-Befehl mit der Option \r(Wagenrücklauf) wie unten geübt .

echo -e "This is \r my college"

Ausgabe:

 my college

aber wenn ich noch ein Wort \rwie unten hinzufüge

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

Dann gibt es mir Ausgabe wie:

 my college the

Ein anderes Beispiel

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

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

Also wollte ich wissen, was der eigentliche Zweck der Kutschenrückgabe hier ist?

Tauchen
quelle
Dies ist nicht reproduzierbar. Der zweite Befehl führt zur Ausgabe ␣my college, genau wie der erste.
Kusalananda
3
echo -eist notorisch unportabel. Sie sollten wahrscheinlich printfstattdessen verwenden.
Tripleee
Siehe auch
George Vasiliou

Antworten:

20

Das \rist nur das, ein "Wagenrücklauf" - sonst nichts. Dies bedeutet, dass das, was nach dem \rTestament ist, den Anfang dessen überschreibt, was bereits gedruckt wurde.

Zum Beispiel:

echo -e "1234\r56"

Wird angezeigt:

5634

echogedruckt hat 1234dann wieder an den Anfang der Linie gegangen und 56über die Oberseite gedruckt 12.

Versuchen Sie \nstattdessen eine neue Zeile . Auch keine Leerzeichen erforderlich. Zum Beispiel:

echo -e "This is\nmy college"

Welches wird ausgegeben:

This is
my college

Der Wagenrücklauf ist nützlich für solche Dinge:

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

Dies wird dateüber sich selbst angezeigt, anstatt nach jeder Schleife eine neue Zeile zu erstellen.

Tigger
quelle
1
Wagenrücklauf wird auch in den von sysvinit bereitgestellten Funktionen verwendet. Zum Beispiel die Funktion echo_successvon /etc/init.d/functions.
Trevor Boyd Smith