web-dev-qa-db-ja.com

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

以下のように、オプション\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

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

9
Dip

\rはそれだけの「キャリッジリターン」です-他には何もありません。つまり、\rの後にあるものが、すでに印刷されているものの先頭を上書きします。

例えば:

echo -e "1234\r56"

表示されます:

5634

echo1234を出力してから、行の先頭に戻って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を表示します。

20
Tigger