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?


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

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.


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.