(진행률 표시줄) 스크립트와 함께 (복사) 명령을 사용하는 방법

(진행률 표시줄) 스크립트와 함께 (복사) 명령을 사용하는 방법

질문

이 스크립트가 작동하고 파일이 처리되는 동안 진행률 표시줄( BBC.pdf) 을 표시하려면 무엇을 입력해야 합니까? 문제는 응답하는 동안 진행률 표시줄을 표시하는 대신 스크립트를 사용하여 명령을 실행하는 것에 관한 것입니다.

진행률 표시줄 스크립트

#!/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
}

내가 시도한 것

sudo ./cpp.sh /home/user1/Downloads/BBC.pdf /home/user1/

sudo cp ./cpp.sh /home/user1/Downloads/BBC.pdf /home/user1/

그리고cpp.sh스크립트에 있어요~/scripts목차

답변1

스크립트가 이름이 지정된 함수를 정의 cp_p하지만 실행하지는 않습니다. 함수 정의를 제거하고 코드를 직접 사용하세요.

#!/bin/sh
strace -q -ewrite cp -- "${1}" "${2}" 2>&1 \
  | awk …

함수 정의를 유지하려면 마지막에 실행하세요. 여기서는 유용하지 않지만 여러 기능이 있는 대규모 스크립트에서는 유용할 수 있습니다.

#!/bin/sh
cp_p()
{
}
cp_p "$@"

어느 쪽이든 스크립트를 실행하려면 간단히 실행하면 됩니다.

./cpp.sh /home/user1/Downloads/BBC.pdf /home/user1/

cpp.sh파일이 현재 디렉터리에 있다고 가정합니다 .

#!게시물의 첫 번째 줄 앞에 공백이 있다는 점에 유의하세요. 복사-붙여넣기 오류인 경우 문제를 해결하세요. 스크립트에 공백이 있으면 제거하십시오. #!스크립트의 처음 2바이트여야 합니다.

관련 정보