셸 스크립트의 진행 표시기
1. 일련의 원점을 사용하여 진도를 표시한다
!/bin/bash function dots(){ seconds=${1:-5} # print a dot every 5 seconds by default while true do sleep $seconds echo -n '.' done } dots 10 & BG_PID=$! trap "kill -9 $BG_PID" INT # Do the real job here sleep 150 kill $BG_PID echo dots 함수는 일정 시간마다 원점을 인쇄합니다. 이 시간 값은 첫 번째 파라미터를 통해 전송할 수 있습니다. 그렇지 않으면 기본값은 5초입니다.백그라운드에서dots 함수를 시작한 후 "$!"을 통해dots의pid를 가져와서 시간 소모된 작업을 시작합니다. 작업이 끝난 후에kill에서 백엔드에서dots를 실행합니다.trap 명령은 사용자 Ctrl 을 방지하기 위한 것입니다.C 스크립트 실행을 중단할 때dots는 백엔드에서 실행됩니다.
2. 진행률을 표시하기 위해 회전선을 사용한다.
#!/bin/bash
function rotate(){ INTERVAL=0.5 RCOUNT= "0" echo -n 'Processing' while : do ((RCOUNT = RCOUNT + 1)) case $RCOUNT in 1) echo -e '-\b\c' sleep $INTERVAL ;; 2) echo -e '\\\b\c' sleep $INTERVAL ;; 3) echo -e '|\b\c' sleep $INTERVAL ;; 4) echo -e '/\b\c' sleep $INTERVAL ;; *) RCOUNT=0 ;; esac done } rotate & trap "kill -9 $BG_PID" INT ROTATE_PID=$! # Do the job here sleep 15 kill -9 $ROTATE_PID echo 진행률 표시기로 회전선을 사용하려면/-\| 를 순서대로 표시한 다음 반복할 수 있습니다.이 문자열을 빈틈없이 표시하려면, 앞의 문자를 체크아웃하고 삭제하거나, 새로운 문자로 덮어쓰십시오. 선이 회전하는 것처럼 보일 수 있습니다.
3. pv로 진도 표시
pv(Pipe Viewer)는 파이프를 통한 내용의 데이터 통과 과량, 데이터 통과 속도, 사용 시간, 예상 남은 시간(ETA), 통과 백분율 등의 정보를 표시할 수 있다.사용할 때 pv를 두 프로세스의 파이프 사이에 꽂고 적절한 매개 변수를 제공할 수 있습니다.예를 들어 tar 백업 속도를 보기 위해
tar czf - /path/to/some/directory/ * | pv > backup. tar .gz cp의 속도를 보기 위해
file = /path/to/some/file size=` ls -sk $ file | awk '{print $1}' ` && pv -s ${size}k $ file > /desination/filename 4. dialog를 사용하여 진도 dialog를 표시하는 것은 셸 스크립트에 대화상자를 표시하는 도구로 제공하는 --gauge는 진도 표시줄로 사용할 수 있으며 진도 크기는 표준 입력에서 읽을 수 있습니다.다음은 간단한 예입니다.
for i in $( seq 0 10 100) ; do sleep 1; echo $i | dialog --gauge "Please wait" 10 70 0; done 다음 스크립트는cp진도에 대한 디스플레이를 제공합니다
#!/bin/bash file =$1 newfile=$2 filename=` basename $ file ` if [ -d $newfile ]; then newfile=$newfile/$filename fi cp $ file $newfile & CP_PID=$! trap 'kill -9 $CP_PID' INT size_old=`stat -c "%s" $ file ` size_new=`stat -c "%s" $newfile` ( while [ $size_new -lt $size_old ]; do echo "$size_new * 100 / $size_old" | bc sleep 1 size_new=`stat -c "%s" $newfile` done ) | dialog --title "File Copy" --gauge "cp $file $newfile" 10 70 0 5. CP에 진행 상태 표시를 제공하는 또 다른 방법은 다음과 같습니다.
#!/bin/sh cp_p() { strace -q -ewrite cp -- "${1}" "${2}" 2>&1 \ | awk '{ count += $NF if (count % 10 == 0) { percent = count / total_size * 100 printf "%3d%% [" , percent for (i=0;i<=percent;i++) printf "=" printf ">" for (i=percent;i<100;i++) printf " " printf "]\r" } } END { print "" } ' total_size=$(stat -c ' %s' "${1}" ) count=0 }
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.