エコーコマンドによるキャリッジリターン


9

\r以下のようにオプション(復帰)付きのエコーコマンドを練習していました。

echo -e "This is \r my college"

出力:

 my college

\r次のように前に単語をもう1つ追加すると

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

次に、次のような出力が得られます。

 my college the

もう一つの例

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

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

それで、ここで改行の実際の目的は何ですか?


これは再現できません。2番目のコマンド␣my collegeは、最初のコマンドと同様に、結果を出力します。
クサラナンダ

3
echo -e悪名高い移植性がない。printf代わりに使用する必要があります。
トリプルリー2017

回答:


20

それ\rはまさに「キャリッジリターン」です-他には何もありません。これは、が\r既に印刷されているものの最初を上書きすることになることを意味します。

例えば:

echo -e "1234\r56"

表示されます:

5634

echo印刷された1234後、行56の先頭に戻り、の上に印刷されました12

新しい行については、\n代わりに試してください。スペースも必要ありません。例えば:

echo -e "This is\nmy college"

どちらが出力されます:

This is
my college

キャリッジリターンは次のような場合に役立ちます。

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

date各ループの後に新しい行を作成するのではなく、それ自体の上に表示されます。


1
復帰は、sysvinitが提供する関数でも使用されます。たとえば、echo_successからの関数/etc/init.d/functions
Trevor Boyd Smith
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.