web-dev-qa-db-fra.com

Retour chariot avec commande echo

Je pratiquais la commande echo avec l'option \r (retour chariot) comme ci-dessous.

echo -e "This is \r my college"

production:

 my college

mais quand j'ajoute un mot de plus avant \r comme ci-dessous

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

Ensuite, cela me donne une sortie comme:

 my college the

Un autre exemple

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

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

Donc, je voulais savoir quel est le but réel du retour en chariot ici?

9
Dip

Le \r est juste cela, un "retour chariot" - rien d'autre. Cela signifie ce qui se trouve après le \r remplacera le début de ce qui a déjà été imprimé.

Par exemple:

echo -e "1234\r56"

Affichera:

5634

echo a imprimé 1234 puis est retourné au début de la ligne et a imprimé 56 par-dessus 12.

Pour une nouvelle ligne, essayez \n au lieu. Pas besoin d'espace non plus. Par exemple:

echo -e "This is\nmy college"

Qui produira:

This is
my college

Le retour chariot est utile pour des choses comme ceci:

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

Ce qui affichera date au-dessus de lui-même au lieu de créer une nouvelle ligne après chaque boucle.

20
Tigger