Retorno de carro com comando echo

9

Eu estava praticando o comando eco com a opção \r(retorno de carro) como abaixo.

echo -e "This is \r my college"

resultado:

 my college

mas quando adiciono mais uma palavra antes, \rcomo abaixo

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

Então me dá uma saída como:

 my college the

Outro exemplo

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

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

Então, eu queria saber que qual é o objetivo real do retorno de carro aqui?

Mergulho
fonte
Isto não é reproduzível. O segundo comando resulta na saída ␣my college, assim como o primeiro.
Kusalananda
3
echo -eé notoriamente não portável. Você provavelmente deve usar em seu printflugar.
Tripleee
Relacionados: unix.stackexchange.com/questions/355559/...
George Vasiliou

Respostas:

20

O \ré apenas isso, um "retorno de carro" - nada mais. Isso significa que o que é após o \rsobrescrever o início do que já foi impresso.

Por exemplo:

echo -e "1234\r56"

Exibirá:

5634

echoimprimiu 1234e voltou ao início da linha e imprimiu 56por cima 12.

Para uma nova linha, tente \n. Não há necessidade de espaços também. Por exemplo:

echo -e "This is\nmy college"

Qual saída:

This is
my college

O retorno de carro é útil para coisas 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

O qual será exibido datepor cima, em vez de criar uma nova linha após cada loop.

Tigre
fonte
1
o retorno de carro também é usado nas funções fornecidas pelo sysvinit. Por exemplo, a função echo_successde /etc/init.d/functions.
Trevor Boyd Smith