linux - script - 如何只顯示wget進度條?



wget https download (7)

你可以使用tailfollow選項:

wget somesite.com/TheFile.jpeg --progress=bar:force 2>&1 | tail -f -n +6

+6是刪除前6行。 您的wget版本或語言可能有所不同。

你需要使用--progress=bar:force否則wget切換dot類型。

缺點是刷新的頻率低於wget(看起來每2秒)。 tail--sleep-interval選項似乎只是為了那個,但它並沒有改變我的任何東西。

例如:

wget http://somesite.com/TheFile.jpeg

downloading: TheFile.tar.gz ...
--09:30:42--  http://somesite.com/TheFile.jpeg
           => `/home/me/Downloads/TheFile.jpeg'
Resolving somesite.co... xxx.xxx.xxx.xxx.
Connecting to somesite.co|xxx.xxx.xxx.xxx|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1,614,820 (1.5M) [image/jpeg]

25% [======>                              ] 614,424      173.62K/s    ETA 00:14

我怎麼能讓它看起來像這樣

downloading: TheFile.jpeg ...
25% [======>                              ] 614,424      173.62K/s    ETA 00:14

我知道curl可以做到這一點,但是我需要得到wget才能做到這一點。


Answer #1

使用這些標誌:

wget  -q --show-progress --progress=bar:force 2>&1

Answer #2

您可以使用以下過濾器:

progressfilt ()
{
    local flag=false c count cr=$'\r' nl=$'\n'
    while IFS='' read -d '' -rn 1 c
    do
        if $flag
        then
            printf '%s' "$c"
        else
            if [[ $c != $cr && $c != $nl ]]
            then
                count=0
            else
                ((count++))
                if ((count > 1))
                then
                    flag=true
                fi
            fi
        fi
    done
}

用法:

$ wget --progress=bar:force http://somesite.com/TheFile.jpeg 2>&1 | progressfilt
100%[======================================>] 15,790      48.8K/s   in 0.3s

2011-01-13 22:09:59 (48.8 KB/s) - 'TheFile.jpeg' saved [15790/15790]

此函數取決於在進度條啟動之前發送的0x0d0x0a0x0d0x0a0x0d的序列。 此行為可能取決於實現。


Answer #3

您可以使用標準選項:

wget --progress=bar http://somesite.com/TheFile.jpeg

Answer #4

這不是一個答案,但這個片段也可能對一些人來說有用,例如“zenity wget GUI”:

LANG=C wget -O /dev/null --progress=bar:force:noscroll --limit-rate 5k http://nightly.altlinux.org/sisyphus/ChangeLog 2>&1 | stdbuf -i0 -o0 -e0 tr '>' '\n' | stdbuf -i0 -o0 -e0 sed -rn 's/^.*\<([0-9]+)%\[.*$/\1/p' | zenity --progress --auto-close

對我來說至關重要的是stdbuf(1)


Answer #5

這是一個解決方案,它將顯示每個文件(或行)的點。 如果您使用--recursive下載它特別有用。 這不會捕獲錯誤,如果有額外的行可能稍微關閉,但是對於許多文件的一般進展它是有幫助的:

wget -r -nv https://example.com/files/ | \
    awk -v "ORS=" '{ print "."; fflush(); } END { print "\n" }'

Answer #6
curl -o pic.png http://somesite.com/pic.png

只顯示沒有URL /地址聊天的進度信息。





sh