진행률 표시 줄의 길이가 내 PuTTY 창에 따라 조정되는 효과를 얻으려고합니다. 이 효과는 wget의 진행률 막대를 통해 수행됩니다. 여기 사용 가능한 공간에 따라 진행률 막대의 크기를 조정하는 방법은 무엇입니까?
내가 진행률 표시 줄 만들기 위해 내 bash는 스크립트에서 사용하는 내 프로그램입니다 : 여기#!/bin/bash
maxwidth=50 # line length (in characters)
filled_char="#"
blank_char="."
current=0 max=0 i=0
current=${1:-0}
max=${2:-100}
if (($current > $max))
then
echo >&2 "current value must be smaller max. value"
exit 1
fi
percent=`awk 'BEGIN{printf("%5.2f", '$current'/'$max' * 100)}'`
chars=($current*$maxwidth)/$max
echo -ne " ["
while (($i < $maxwidth))
do
if (($i <= $chars));then
echo -ne $filled_char
else
echo -ne $blank_char
fi
i=($i+1)
done
echo -ne "] $percent%\r"
if (($current == $max)); then
echo -ne "\r"
echo
fi
내가 그것을 사용하는 방법의 예입니다
_progress_bar을,이 예에서는 모든 토르 양파 프록시 종료를 찾습니다 노드와 사용자 정의 체인 아래의 IP를 금지 :
#!/bin/bash
IPTABLES_TARGET="DROP"
IPTABLES_CHAINNAME="TOR"
WORKING_DIR="/tmp/"
# get IP address of eth0 network interface
IP_ADDRESS=$(ifconfig eth0 | awk '/inet addr/ {split ($2,A,":"); print A[2]}')
if ! iptables -L "$IPTABLES_CHAINNAME" -n >/dev/null 2>&1 ; then #If chain doesn't exist
iptables -N "$IPTABLES_CHAINNAME" >/dev/null 2>&1 #Create it
fi
cd $WORKING_DIR
wget -q -O - http://proxy.org/tor_blacklist.txt -U NoSuchBrowser/1.0 > temp_tor_list1
sed -i 's|RewriteCond %{REMOTE_ADDR} \^||g' temp_tor_list1
sed -i 's|\$.*$||g' temp_tor_list1
sed -i 's|\\||g' temp_tor_list1
sed -i 's|Rewrite.*$||g' temp_tor_list1
wget -q -O - "https://check.torproject.org/cgi-bin/TorBulkExitList.py?ip=$IP_ADDRESS&port=80" -U NoSuchBrowser/1.0 > temp_tor_list2
wget -q -O - "https://check.torproject.org/cgi-bin/TorBulkExitList.py?ip=$IP_ADDRESS&port=9998" -U NoSuchBrowser/1.0 >> temp_tor_list2
sed -i 's|^#.*$||g' temp_tor_list2
iptables -F "$IPTABLES_CHAINNAME"
CMD=$(cat temp_tor_list1 temp_tor_list2 | uniq | sort)
UBOUND=$(echo "$CMD" | grep -cve '^\s*$')
for IP in $CMD; do
let COUNT=COUNT+1
_progress_bar $COUNT $UBOUND
iptables -A "$IPTABLES_CHAINNAME" -s $IP -j $IPTABLES_TARGET
done
iptables -A "$IPTABLES_CHAINNAME" -j RETURN
rm temp_tor*
편집 :
#!/bin/bash
for i in {1..100}; do
_progress_bar $i 100
done
'sed' 명령의 순서는 ca n 결합 되나요? 'sed 's ...; s ...; s ... 'filename' 또는'sed -e'... '-e'... '-e'... 'filename' 그리고'wget'을 파이프로 연결할 수 있습니까? 'wget ... | sed ...> filename' (두 번째 세트의 파이프도 사용할 수 있습니다 :'{wget ...; wget ...;} | sed ...> filename'). –