Làm cách nào để có được cURL để không hiển thị thanh tiến trình?


563

Tôi đang cố gắng sử dụng cURL trong một tập lệnh và làm cho nó không hiển thị thanh tiến trình.

Tôi đã thử các -s, -silent, -S, và -quiettùy chọn, nhưng không ai trong số họ làm việc.

Đây là một lệnh điển hình tôi đã thử:

curl -s http://google.com > temp.html

Tôi chỉ nhận được thanh tiến trình khi đẩy nó vào một tệp, vì vậy curl -s http://google.comkhông có thanh tiến trình, nhưng curl -s http://google.com > temp.htmlkhông.


12
curl -s http://google.comlà im lặng cho tôi ở đây. Phiên bản nào của curl và Linux?
Adrian Petrescu

-s hoạt động tốt với tôi trong curl 7.21.0 (i686-pc-linux-gnu) libcurl / 7.21.0 OpenSSL / 0.9.8o zlib / 1.2.3.4 libidn / 1.18 và curl 7.19.5 (i386-apple-darwin9. 7.0) libcurl / 7.19.5 zlib / 1.2.3 có vẻ như bạn cần nâng cấp curl của mình
derevo

Tôi đã thử nó trên Fedora 15 và Mac OSX 10.7.1. Ngoài ra, tôi chỉ nhận được thanh tiến trình khi đẩy nó vào một tệp, vì vậy curl -s google.com không có thanh tiến trình, nhưng curl -s google.com > temp.html thì có.
adammenges

1
Đối với bất kỳ ai muốn tìm ra phiên bản của lệnh đã cài đặt curllibcurlsử dụngdpkg -l | grep curl
Dimitry K

1
Trong trường hợp này, hãy chạy man curlcho thấy trang hướng dẫn của curl, sau đó nhấn /progresshoặc /hide progresshoặc stophoặc bất cứ điều gì để tìm kiếm truy vấn để có được những gì bạn muốn. Sau đó, bạn có thể đạt được một câu trả lời như chmac đề nghị.
kenju

Câu trả lời:


561
curl -s http://google.com > temp.html

hoạt động cho phiên bản curl 7.19.5 trên Ubuntu 9.10 (không có thanh tiến trình). Nhưng nếu vì lý do nào đó không hoạt động trên nền tảng của bạn, bạn luôn có thể chuyển hướng stderr sang / dev / null:

curl  http://google.com 2>/dev/null > temp.html

31
Tôi cần phải có suy nghĩ về điều đó. Nó cũng sẽ ẩn các thông báo lỗi.
Tom Zych

1
Trong trường hợp của tôi, sử dụng / dev / null là ổn.
adammenges

Nice - điều này làm việc tuyệt vời. Tôi đã có vấn đề trên centOS 6.3, nhưng không phải trên các bản phát hành khác - kỳ lạ, nhưng cách giải quyết đơn giản dễ dàng - thx!
Ross

Nhân tiện, hãy xem liên kết bên dưới về 2>/dev/nullnếu bạn không biết: stackoverflow.com/questions/10508843/what-is-dev-null-21
kenju 23/8/2015

Theo trang hướng dẫn cài đặt curl trên máy chủ Ubuntu 14, -ssẽ khiến curl không "hiển thị đồng hồ đo tiến độ hoặc thông báo lỗi ". (Tôi chưa thử kiểm tra hoặc đọc mã nguồn để xem điều đó có thực sự đúng không.)
David Winiecki

535

Trong phiên bản curl 7.22.0 trên Ubuntu và 7.24.0 trên OSX, giải pháp để không hiển thị tiến trình nhưng để hiển thị lỗi là sử dụng cả -s( --silent) và -S( --show-error) như vậy:

curl -sS http://google.com > temp.html

Điều này hoạt động cho cả đầu ra được chuyển hướng > /some/file, đầu ra đường ống | lessvà đầu ra trực tiếp đến thiết bị đầu cuối cho tôi.


3
Đối với 7.35 của tôi, sử dụng -sS sẽ loại bỏ đồng hồ đo tiến độ nhưng CSONG loại bỏ thông tin thường được ghi vào thiết bị xuất chuẩn - mà tôi cần, vì nó bao gồm tên tệp được ghi vào đĩa thay vì tệp (khác) phải được sử dụng trong yêu cầu. Dường như không có cách nào để đơn giản đánh bại đồng hồ tiến độ một mình!
Jack

48

Tôi thấy rằng với curl 7.18.2, thanh tiến trình tải xuống không bị ẩn với:

curl -s http://google.com > temp.html

nhưng nó là với:

curl -ss http://google.com > temp.html

6

Không chắc chắn tại sao nó làm điều đó. Hãy thử -svới -otùy chọn để đặt tệp đầu ra thay vì >.


0

Trên MacOS 10.13.6 (High Sierra), tùy chọn '-ss' hoạt động. Nó đặc biệt hữu ích bên trong perl, trong một lệnh như curl -ss --get {someURL}, thật ra nó đơn giản hơn rất nhiều so với bất kỳ trình bao bọc LWP hoặc HTTP nào, chỉ để lấy nội dung của trang web hoặc trang web.


-1

Cách đây một thời gian đã viết một tập lệnh đơn giản để thực hiện việc tìm kiếm ví dụ như đã cài đặt các phiên bản cụ thể của jdk:

#!/bin/bash
REPO_TAG_URL=$1

SEARCH=`curl -s $REPO_TAG_URL`
NEXT_PAGE=`echo $SEARCH | jq -r .next`

echo $SEARCH | jq '.results[].name'

while [[ $NEXT_PAGE != 'null' ]]; do
    SEARCH=`curl -s $NEXT_PAGE`
    NEXT_PAGE=`echo $SEARCH | jq -r .next`
    echo $SEARCH | jq '.results[].name'
done

echo "Thats all folks"

Bạn sử dụng nó như thế này: ./script.sh https://registry.hub.docker.com/v2/repositories/library/tomcat/tags/

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.