Enterおよびechoコマンド

Enterおよびechoコマンド

\r以下のようにオプション(キャリッジリターン)を使用してechoコマンドを練習しています。

echo -e "This is \r my college"

出力:

 my college

\rところで、以下のように前に単語を追加すると

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

もしそうなら、ここでキャリッジリターンの実際の目的は何ですか?

答え1

それは\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各ループの後に新しい行を作成するのではなく、独自の上部に表示されます。

答え2

Tiggerはそれが何をしているのかについて素晴らしい答えを持っています\r。 Bourneシェルのもう1つのトリック(他のシェルでは異なる動作)は、次のように行末を消去することです。

#/bin/sh -e
echo "this is a first line...\r\c"
...other code...
echo "another line\033[K\r\c"

それなしで\033[K(行の終わりを殺すこと)あなたは得るでしょう:

another lineirst line...

\033[Kカーソル位置から行末までの出力がクリアされるため、上記の結果は次のとおりです。

another line

これは時間がかかり、ユーザーがどこにいるかを知らせたいスクリプトに役立ちます(たとえば、スクリプトが作業している限り、次のパスは短い)。

メモ:ちなみに、これがカーソルを\n次の行に送ることを指定したいと思います。以前のMS-DOSコンソールでは、同じ列の下に1行しかありませんでした。そのため、MS-Windowsではまだ2文字()を書く必要があります\r\n。ほとんどの場合、人々は執筆し、すべてが期待\nどおりに機能します。各項目の前に1つを挿入するFILE「テキストモード」があるためです(そしてしばしばバイナリを壊すこともあります...)。\r\n

関連情報