Ritorno a capo con comando eco


9

Mi esercitavo nel comando echo con opzione \r(ritorno a capo) come di seguito.

echo -e "This is \r my college"

produzione:

 my college

ma quando aggiungo un'altra parola prima \rcome sotto

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

Quindi mi dà un output come:

 my college the

Un altro esempio

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

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

Quindi, volevo sapere che qual è lo scopo reale del trasporto di ritorno qui?


Questo non è riproducibile. Il secondo comando produce l'output ␣my college, proprio come il primo.
Kusalananda

3
echo -eè notoriamente insostenibile. Probabilmente dovresti usare printfinvece.
Tripleee

Risposte:


20

L' \rè proprio questo, un "ritorno a capo" - nient'altro. Ciò significa che ciò che è dopo la \rvolontà sovrascriverà l'inizio di ciò che è già stato stampato.

Per esempio:

echo -e "1234\r56"

Verrà visualizzato:

5634

echoha stampato, 1234quindi è tornato all'inizio della riga e stampato 56sopra 12.

Per una nuova linea, prova \ninvece. Non sono necessari spazi. Per esempio:

echo -e "This is\nmy college"

Che produrrà:

This is
my college

Il ritorno a capo è utile per cose come questa:

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

Che verrà visualizzato datesopra se stesso invece di creare una nuova riga dopo ogni ciclo.


1
il ritorno a capo viene utilizzato anche nelle funzioni fornite da sysvinit. Ad esempio la funzione echo_successda /etc/init.d/functions.
Trevor Boyd Smith,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.