설치 단계가 아직 진행 중임을 보여주고 싶습니다. 그래서 매초마다 현재 행에 점을 추가하겠습니다.
각 설치 단계에 이 진행 기능을 추가할 수 있도록 이에 대한 기능을 생성할 수 있습니까?
#!/bin/bash
echo "Step 1: Apt-get update"
while :;do echo -n .;sleep 1;done &
trap "kill $!" EXIT
sudo apt-get update 2>&1 >/dev/null
kill $! && trap " " EXIT
echo "Step 2: Apt-get upgrade"
sudo apt-get upgrade -y 2>&1 >/dev/null
# Also show progress
진행이 완료되면 현재 줄을 다음으로 바꾸고 싶습니다.
Step 1: Apt-get update finished
그러면 다음 단계가 실행됩니다.
답변1
모든 진행 상황 정보를 같은 줄에 유지할 수 있으면 \r
다음 방법을 사용할 수 있습니다.
#!/bin/bash
echo -n "Step 1: Apt-get update"
while :;do echo -n .;sleep 1;done &
trap "kill $!" EXIT
sudo apt-get update 2>&1 >/dev/null
kill $! && trap " " EXIT
echo -e "\rStep 1: Apt-get update finished"
그러면 "1단계..."와 같은 줄에 마침표가 표시되고 해당 줄은 "완료" 메시지로 대체됩니다. 모든 지점을 포함하기 위해 "완료" 뒤에 따옴표 안에 공백을 추가할 수 있습니다. 또한 지점 수를 계산하고 줄 바꿈을 방지할 수도 있습니다(출력과 비교하여 숫자를 추적하여 $COLUMNS
).
apt-get
로그 출력을 완전히 삭제하는 것보다 파일에 기록하는 것이 좋습니다 . 특히 이 upgrade
경우 발생할 수 있는 오류를 해결하려면 출력이 필요합니다.
apt
대신 사용하는 것이 더 쉬운 방법입니다 apt-get
. 멋진 진행률 표시줄을 표시하고 완료되면 깔끔하게 제거합니다.