- 締切済み
bashにおいて、次々と表示を変える方法
標準出力において、その表示を次々と変えるにはどうすればいいのでしょうか。 具体的には、 ・インストール状況などの数字が、「10%→20%→30%」と変わっていく。 ・slコマンドにおいて、記号が現れては消えていく。 C言語で実現可能であるかも合わせてご教授いただけるとうれしいです。 よろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- notnot
- ベストアンサー率47% (4900/10359)
回答No.3
>・インストール状況などの数字が、「10%→20%→30%」と変わっていく。 普通は、 for(x=0; x<100; x+=10){ printf("%2d%%\r",x); } printf("\n"); のように、\r でカーソルを行頭に戻して上書きしますね。 >・slコマンドにおいて、記号が現れては消えていく。 これはカーソル移動などの画面制御のエスケープシーケンスです。 sl | cat -v とかするとESCが、^[ と表示されるのでわかるようになります。具体的なシーケンスの意味は、「ANSI ESC シーケンス」で検索してください。
- satomi3951
- ベストアンサー率71% (98/137)
回答No.2
数字を書き換える程度なら#1さんの言ってるとおり、 もうちょっと複雑なことをしたかったら、エスケープシーケンスを駆使する。 サンプルは「vt100 エスケープシーケンス」あたりで検索してください。
- DIooggooID
- ベストアンサー率27% (1730/6405)
回答No.1
> 「10%→20%→30%」と変わっていく。 標準出力時に改行コードを付加せず、 10% だけを書き出す。 バックスペースコードを3回出力してから 20% を書き出せば、 「10%→20%」と変わっていきます。
補足
回答ありがとうございます。 「改行コードを付加せず」とありますが、 改行コードを付加してしまうと、それをバックスペースコードでは消せないのでしょうか? もしそうであれば、理由も教えていただきたいです。 (「仕様上」ではなく、もしそうでない仕様にした場合にどう不都合が生じるか等) 宜しくお願い致します。