Bash의 진행률 표시줄 시각화 대기 시간

Bash의 진행률 표시줄 시각화 대기 시간

Bash 스크립트에서는 백그라운드 프로세스가 완료될 때까지 사용자가 몇 초 정도 기다려야 하는 경우가 있습니다.

나는 보통 다음과 같은 예를 사용합니다.

sleep 10

사용자가 얼마나 기다려야 하는지 알 수 있도록 스크립트에 진행률 표시줄을 어떻게 추가합니까?

명령을 설치했지만 bar설명서를 읽을 수 없습니다.

답변1

while true;do echo -n .;sleep 1;done &
sleep 10 # or do something else here
kill $!; trap 'kill $!' SIGTERM
echo done

그러면 무한 while 루프가 시작되어 매초 스피너를 에코하고 백그라운드에서 실행됩니다.

command 대신 원하는 명령을 실행하십시오 sleep 10.

명령 실행이 완료되면 백그라운드에서 실행 중인 마지막 작업이 종료됩니다(이것은 무한 while 루프입니다).

원천:https://stackoverflow.com/a/16348366/1069083

대신 다음 스피너와 같은 다양한 while 루프를 사용할 수 있습니다.

while :;do for s in / - \\ \|; do printf "\r$s";sleep 1;done;done

답변2

시작하기에 충분합니다.

#!/bin/bash

for i in {001..100}; do
    sleep 1
    printf "\r $i"

done

\r개행 없이 줄을 처음으로 되돌리려면 이스케이프 시퀀스를 사용하세요 . 이를 통해 수백 줄의 출력 없이 출력을 업데이트할 수 있습니다. 이 베이스를 이용하면 =>25% ==>50% ===>75%단순히 숫자를 출력하는 것이 아니라 천천히 화살표를 출력하는 방법을 찾을 수 있습니다 . if-then 논리를 사용하여 숫자의 크기에 따라 =의 특정 숫자를 인쇄하는 매우 기본적인 방법으로 이 작업을 수행할 수 있습니다.

답변3

이것은 용도입니다커서 이동그러면 카운트다운을 표시하는 줄이 다시 작성됩니다.

c=5 # seconds to wait
REWRITE="\e[25D\e[1A\e[K"
echo "Starting..."
while [ $c -gt 0 ]; do 
    c=$((c-1))
    sleep 1
    echo -e "${REWRITE}$c"
done
echo -e "${REWRITE}Done."

답변4

파일 복사 프로세스의 진행 상황을 보려면 간단히 다음을 사용할 수 있습니다.

pv source_file > destination_file

또는

rsync --progress source_file destination_file

cp명령 보다는

관련 정보