dynamiczne wyświetlanie uruchomionego procesu?

2

Piszę skrypt i zgodnie z tym, kiedy go uruchamiam, pewne informacje będą wyświetlane na ekranie wyjściowym.

na przykład powiedz, że wyświetlane stałe dane to:

my name is mukesh.
i am 27 years old
unix version 7.2.3.0

ale oprócz powyższego wyświetlacza należy również wyświetlić coś innego ( różne dane ) Tj

Process A is starting
Process A is running
Process A is completed.

ale nie chcę powyższego wyświetlacza.

Chcę Process A is startingzostać usunięty z ekranu i zastąpiony przez, Process A is runninga następnie przezProcess A is completed.

Nie jestem bardzo chętny do użycia, clearponieważ spowoduje to usunięcie całego ekranu zawierającego stałe dane . a także dlatego, że przetwarzanie stałych danych zajmuje dużo czasu i jest wyświetlane na ekranie.

Munish
źródło

Odpowiedzi:

3

Możesz wyczyścić linię i użyć znaku powrotu karetki ( \r), aby przejść do początku linii.

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

Przeczytaj stronę podręcznika na terminfo.

Arcege
źródło
ten jest dobry ...... ++++++ 1
munish
3

Znak powrotu karetki ( \r) powróci na początek bieżącego wiersza, dzięki czemu można zastąpić tekst:

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."
Glenn Jackman
źródło