私は実行時に特定の情報が出力画面に表示されるスクリプトを書いています。
例えば一定のデータ表示される内容は次のとおりです。
my name is mukesh.
i am 27 years old
unix version 7.2.3.0
ただし、上記の表示に加えて他のコンテンツを表示する必要があります(その他のデータ)すなわち
Process A is starting
Process A is running
Process A is completed.
しかし、私は上記のディスプレイを望んでいません。
Process A is starting
画面を消去してProcess A is running
then byに変更したいです。Process A is completed.
clear
含まれているフルスクリーンを削除するので、使用したくありません。一定のデータ返品。しかし、一定のデータを処理して画面に表示するのに多くの時間がかかるからです。
答え1
行を消去し、キャリッジリターン(\r
)を使用して行の先頭に移動できます。
clr2eol=`tput el` # capture escape sequence for "clear-to-end-of-line"
echo -n "Process A has started." # display without a newline
sleep 3
echo -n "\r${clr2eol}Process A is running." # move to beginning of line (bol), clear, and display new text
sleep 5
echo -n "\r${clr2eol}Process A has completed." # again, move to bol, clear and display new test
echo # terminating newline you may not want to have this sent right away
マンページを読むterminfo
。
答え2
キャリッジリターン(\r
)を使用すると、現在の行の先頭に戻り、テキストを上書きできます。
printf "%s\r" "Process A is starting "
sleep 5
printf "%s\r" "Process A is running "
sleep 5
printf "%s\n" "Process A is completed."
答え3
これを行うには、(n)cursesなどを使用する必要があります。http://www.gnu.org/software/ncurses/