実行中のプロセスを動的に表示しますか?

実行中のプロセスを動的に表示しますか?

私は実行時に特定の情報が出力画面に表示されるスクリプトを書いています。

例えば一定のデータ表示される内容は次のとおりです。

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 runningthen 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/

関連情報