2

1 つの端末行にいくつかのデータを表示しようとしています。このデータには、ファイルへの番号とパスが含まれています。私はそれを行うために次のコードを使用しています:

#!/bin/bash 
echo
find . -type f | while read a;
do
sleep 1s;
echo -ne "$a\r";
done

問題は、実際の行が前の行をクリアしないことです。ディレクトリには次のファイルが含まれてaaa.aaaおりbbbb.bbbbbcccc.cccccccccccccccc出力は次の順序で表示されます。

./cccc.cccccccccccccccc
./aaa.aaacccccccccccccc
./bbbb.bbbbbccccccccccc

そして、私はそれが欲しい:

./cccc.cccccccccccccccc
./aaa.aaa
./bbbb.bbbbb

ラインをクリアするにはどうすればよいですか?

4

1 に答える 1

2

\033[Kの後に a を追加\r:

echo -ne "$a\r\033[K";

これは、現在の行のカーソル位置から行末までのすべてを消去するための制御シーケンスです。

于 2013-04-15T09:12:01.407 に答える