私はさまざまなニーズを満たすために多くのbashスクリプトを書いています。最近では、その上に様々な指標を実装したい衝動を感じ始めました。
自動化された無人インストールスクリプトでどのようなことが行われているかを知っておくとよいでしょう。
また、..実際の進行状況を示すステータスバーがあれば良いようです。
ターミナル出力を操作するためのLinux(Debian推奨)モデルなどのライブラリやコマンドはありますか?
(次のコマンドは、読者が理解できるように偽モデルです。)
txtoverlay -k head -c azure "すべてのコマンドの上にMyStringを表示"
または
txtovelay -k tail -c green -a right "[完全性: 57%]"
または
txtovelay -kキャンバス-c水色-b濃い青-l 2 -t 5 -w 68 -h 50
次のグラフィックモデルのようなものを作成したいですか?
または、より複雑なオーバーレイ..
デフォルトでは、概念はHTMLでも同じです。デフォルトのWebページには、場所が固定されているいくつかのDIVがあります。
<div id="MyDiv1" style="position:fixed; color: #00ffff; top: 0px; left: 0px; padding: 10px"></div>
<div id="MyDiv2" style="position:fixed; color: #00ff00; bottom: 0px; right: 0px; padding: 10px; text-align: right"></div>
そして、スクリプトの実行中に時々、次のようなさまざまなコマンドを実行します。
document.getElementById("MyDiv1").innerHTML = "Step 5: Installing NET-TOOLS package in progress..<br>-------------------------"
document.getElementById("MyDiv2").innerHTML = "[Completition: 57 % ]"
ベストアンサー1
はい、これを行うことができます。特定の場所にカラーテキストを配置する方法に関する質問に集中してください。シンプルだがやや低いレベルのアプローチは、このtput
ユーティリティを使用することです。tput
データベースの助けを借りて端末画面を操作するコマンドがたくさんありますterminfo
。たとえば、tput cup 23 4
カーソルを端末の23行と4列に移動します。他の例:
tput ed # clear to end of screen
tput setaf 2 # set foreground color to bright green
tput cubl # move cursor left one space
tput rev # turn on reverse video mode
tput sc # save the cursor position
tput rc # restore the cursor position
stty
このユーティリティの目的を見つけることもできます。たとえば、現在の画面のサイズを確認したい場合は、次のようにしますstty size
。
私は以前、いくつかのユーティリティのためのおおよその「GUI」を構築し、画面を2つの部分に分けました。上部には固定高さヘッダーがあります。下部には(スクロール)コマンド出力が含まれています。私はBashスクリプトと+だけを使ってtput
これをしましたstty
。試行錯誤で多くを見つけましたが、オンラインには次のような良いリソースがあります。http://linuxcommand.org/lc3_adv_tput.php
man tput
とを参照してくださいman 5 terminfo
。後者の場合は、下にスクロールする必要があります。事前定義された関数特に部分。
より高いレベルの抽象化があるかもしれません。用語情報画面ベースの作業ですが、比較的簡単な要件がある場合はtput
良い選択です。 (私はtput
これだと信じています呪い他の回答で言及されたパッケージです。 )
編集する:すべての画面でこれらの機能が好きなように聞こえるのでtput
、上記の方法を使用し、メッセージが表示されるたびに呼び出しを更新するPROMPT_COMMAND
たびに、スクリプトに環境変数を指定するシェルスクリプトを作成することでこれを行うことができます。付け加えなければなりません。より頻繁に更新するには、画面に接続している間にバックグラウンドでいくつかのプロセスを実行する必要があります。これは私がこの答えで尋ねたい以上のものです。