셸 스크립트의 진행 표시기
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에 따라 라이센스가 부여됩니다.