人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

コマンドプロンプトで何かをインストールする際などに、
進捗が出たり、エラー時にエラーメッセージが赤色で出たりするものがあります。
(pythonのパッケージや、|/-のような回転など)

通常の標準出力では追記で出力されていくだけだと思いますが、
いったん出力した文字列を書き換えたり、
途中から色を変えるのは、どのような方法を使っているのでしょうか?


●質問者: xxyoxx
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● studiocherry

ANSIエスケースシーケンス(画面制御シーケンス)ですね。

参考:
https://www.grapecity.com/tools/support/powernews/column/clang/047/page02.htm


xxyoxxさんのコメント
このサイトを見たところ、WindowsのDOS窓では、起動時に特別なドライバを読み込ませると書いてありましたが、 私の環境では、スタートメニューから起動したコマンドプロンプトに出る文字で 文字が書き換わったり色が変わったりしていました。 さらに特別な方法があるのでしょうかね。 でもヒントにはなりました。ありがとうございます。

2 ● a-kuma3

unix 系の話ですよね?
https://linuxjf.osdn.jp/JFdocs/Bash-Prompt-HOWTO-5.html
http://d.hatena.ne.jp/zariganitosh/20150224/escape_sequence

回転するやつは、一文字カーソルを戻して | / - \ を書いています。
一文字戻すのは ANSI エスケープシーケンスよりは、ターミナルの制御コードで ^h を使う方が多いかも。
もしくは改行せずにカーソルを行頭に戻す ^r か。


xxyoxxさんのコメント
1文字戻すというエスケープシーケンスがあるのは、ちょっと思いつきませんでした。 知ってみると、まさにそれが制御文字という感じでしたが(^^; ちなみにwindowsのコマンドプロンプトです。

a-kuma3さんのコメント
Windows のコマンドプロンプトでも似たようなことはできます。 Ruby のコードですけど、緑色でくるくる回るやつはこんな感じ。 >|ruby| print "\033[32m" + "\r" # 緑に 10.times { [ '|', '/', '-', '\\' ].each { |ch| print ch + "\r" sleep 0.25 } } print "\033[0m" + "\r" # 元に戻す ||<
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ