Retorno de carro con comando echo

9

Estaba practicando el comando echo con la opción \r(retorno de carro) como a continuación.

echo -e "This is \r my college"

salida:

 my college

pero cuando agrego una palabra más antes \rcomo a continuación

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

Entonces me da salida como:

 my college the

Otro ejemplo

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

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

Entonces, quería saber cuál es el propósito real del retorno de carro aquí.

Inmersión
fuente
Esto no es reproducible. El segundo comando da como resultado la salida ␣my college, al igual que el primero.
Kusalananda
3
echo -eEs notoriamente inportable. Probablemente deberías usar printfen su lugar.
tripleee
Relacionado: unix.stackexchange.com/questions/355559/…
George Vasiliou

Respuestas:

20

El \res sólo eso, un "retorno de carro" - nada más. Esto significa que lo que está después \rsobrescribirá el comienzo de lo que ya se ha impreso.

Por ejemplo:

echo -e "1234\r56"

Mostrará:

5634

echoha impreso y 1234luego regresó al principio de la línea e imprimió 56sobre la parte superior de 12.

Para una nueva línea, intente en su \nlugar. No hay necesidad de espacios también. Por ejemplo:

echo -e "This is\nmy college"

Lo que dará salida:

This is
my college

El retorno de carro es útil para cosas como esta:

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

Que se mostrará datesobre la parte superior de sí mismo en lugar de crear una nueva línea después de cada bucle.

Tigger
fuente
1
el retorno de carro también se usa en las funciones proporcionadas por sysvinit. Por ejemplo, la función echo_successde /etc/init.d/functions.
Trevor Boyd Smith el