ฉันจะเรียกใช้คำสั่ง "curl" ที่เทียบเท่าซึ่งทำงานคล้ายกับคำสั่ง "wget" นี้ได้อย่างไร


1

ฉันมี wget คำสั่ง:

wget -r --no-parent -nH -nd -q --show-progress --progress=bar:force ftp://ftp.ncdc.noaa.gov/pub/data/swdi/database-csv/v2/

แต่ใช้งานได้ในเวอร์ชันที่ใหม่กว่าเท่านั้น wget. น่าเสียดายที่ฉันมีรุ่นเก่ากว่า wget (GNU Wget 1.15 สร้างขึ้นใน darwin14.3.0) และไม่สามารถอัปเกรด โดยเฉพาะมันคือ wget --show-progress ตัวเลือกที่ไม่เป็นที่รู้จัก

ฉันสงสัยว่ามีคำสั่งที่เทียบเท่าหรือไม่ curl? รุ่นของ curl ในระบบของฉันคือ 7.37.1 (x86_64-apple-darwin14.0)


ฉันรู้ว่าคุณบอกว่าคุณไม่สามารถอัพเกรดระบบที่ติดตั้งได้ wget แต่ตั้งแต่ wget ไม่ได้เป็นส่วนหนึ่งของการตั้งค่าระบบหลักของ Mac OS X และจะต้องเป็นไปตามนั้นเป็นของตัวเองบางคนรวบรวมไว้อย่างชัดเจน ที่กล่าวว่ามีวิธีสำหรับคุณในการรวบรวมและเรียกใช้เวอร์ชันที่ใหม่กว่า wget โดยไม่ต้องอัพเกรด wget ที่ติดตั้งไว้แล้วในระบบของคุณ รายละเอียดในของฉัน โพสต์คำตอบ .
JakeGould

ผมอยากจะทำได้. ฉันคิดว่ามันถูกติดตั้งด้วยการชง แต่มันไม่ใช่คอมพิวเตอร์ของฉันดังนั้นฉันจึงไม่สามารถอัพเดท
Justin808

1
โปรดดูคำตอบของฉัน คุณไม่จำเป็นต้องอัปเกรด wget Homebrew นั้นได้รับการติดตั้งให้เรียกใช้เวอร์ชั่นที่ใหม่กว่า wget. หากถูกติดตั้งโดย Homebrew, Homebrew นั้นจะพึ่งพา Xcode เพื่อรวบรวมจากแหล่ง คำแนะนำของฉันแสดงให้คุณเห็นว่าคุณสามารถรวบรวมได้อย่างไร wget ด้วยตัวคุณเองในโฮมไดเร็กตอรี่ของคุณและเรียกใช้จากโฮมไดเร็กตอรี่นั้นโดยไม่รบกวน Homebrew เลย.
JakeGould

คำตอบ:


2

แต่ใช้งานได้ในเวอร์ชันที่ใหม่กว่าเท่านั้น wget. น่าเสียดายที่ฉันมี   รุ่นเก่ากว่าของ wget (GNU Wget 1.15 สร้างเมื่อวันที่ darwin14.3.0) และ   ไม่สามารถอัปเกรดได้ โดยเฉพาะมันคือ wget --show-progress ตัวเลือกที่ไม่รู้จัก

ขึ้นอยู่กับสิ่งที่ฉันรู้เกี่ยวกับวิธีการ curl ทำงานและอย่างไร wget การทำงานพวกเขาอาจดูเหมือนผิวเผิน แต่ไม่มีอะไรเทียบเท่า wget ฟังก์ชันการเรียกซ้ำใน curl. ที่จะทำอะไรแบบนั้นค่ะ curl ต้องใช้สคริปต์ Bash แฟนซีเพื่อล้อมรอบ curl คำสั่ง

ดังนั้นเมื่อคุณบอกว่าคุณไม่สามารถอัปเกรดได้ wgetคุณหมายถึงอะไรกันแน่ ตั้งแต่ wget เป็นเครื่องมือ GNU ซึ่งไม่ได้ติดตั้งกับดาร์วิน (ซึ่งใช้ BSD) และมักจะรวบรวมจากแหล่งที่มา ในความเป็นจริงรายละเอียดของรุ่นที่คุณให้นั้นได้รวบรวมอย่างชัดเจนจากแหล่งในบางวิธีเนื่องจากรุ่นคือ "GNU Wget 1.15 ที่สร้างขึ้นบน darwin14.3.0" ดังนั้นหากรุ่นของ wget ถูกติดตั้งโดยบางสิ่งบางอย่างเช่น Homebrew มีความหวังเพราะหาก Homebrew อยู่ในระบบของคุณคุณควรมี Xcode และเครื่องมือบรรทัดคำสั่ง / คอมไพเลอร์ที่เกี่ยวข้องติดตั้งอยู่ในระบบของคุณเช่นกัน

ตอนนี้ทราบแล้วว่าคุณควรจะสามารถรวบรวมรุ่นที่ปรับปรุงแล้วของ wget - เช่นเดียวกับ 1.16.3 - จากแหล่งที่มา; ข้ามรุ่นที่ติดตั้ง Homebrew และเพียงแค่ให้มันสามารถทำงานได้จากไดเรกทอรีบ้านของคุณ คุณไม่มี root / sudo เข้าถึงสิ่งนี้ได้ นี่คือวิธีที่คุณสามารถทำได้

การรวบรวม wget จากแหล่งที่มา

ก่อนคว้าไฟล์บีบอัดจากเจ้าหน้าที่ wget แหล่งที่มา:

curl -O http://ftp.gnu.org/gnu/wget/wget-1.16.3.tar.gz

ถัดไปขยายขนาดไฟล์เก็บถาวรเช่นนี้:

tar -xzf wget-1.*.tar.gz

ตอนนี้ไปที่ไดเรกทอรีแตก:

cd wget-1.*

เรียกใช้สิ่งนี้ configure คำสั่ง:

./configure --with-ssl=openssl

ถ้าอย่างนั้น configure คำสั่งล้มเหลวคุณอาจต้องเพิ่ม --with-libssl-prefix คุณค่าเช่นนี้:

./configure --with-ssl=openssl --with-libssl-prefix=/usr/lib

เมื่อครั้ง configure กระบวนการเสร็จสมบูรณ์ให้เรียกใช้ make:

make

ถ้ามันทำงานได้อย่างหมดจด wget 1.16.3 ไบนารี่พร้อมให้คุณใช้งาน

ใช้งานเวอร์ชันที่คอมไพล์สดใหม่ wget จากไดเรกทอรีบ้านของคุณ

ถึงตอนนี้คำแนะนำส่วนใหญ่จะบอกว่าคุณควรจะวิ่ง sudo make install เพื่อรับ wget ติดตั้งอย่างสมบูรณ์ในระบบ แต่ถ้าคุณไม่มี root / sudo สิทธิพิเศษ - หรือคุณไม่ต้องการอัปเกรด wget เวอร์ชันที่ติดตั้งทั้งระบบ - คุณยังสามารถเรียกใช้ wget เลขฐานสองที่คุณเพิ่งคอมไพล์เช่นนี้ ก่อนอื่นให้ถอยออกจากคุณ wget ไดเรกทอรีแหล่งที่มาเช่นนี้:

cd ~/

ตอนนี้เพียงแค่เรียกใช้ wget 1.16.3 ไบนารีที่คุณเพิ่งรวบรวมอย่างชัดเจนเพื่อยืนยันว่ามันใช้งานได้:

~/wget-1.16.3/src/wget --version

ผลลัพธ์ควรเป็นดังนี้:

GNU Wget 1.16.3 built on darwin13.4.0.

+digest +https +ipv6 -iri +large-file -nls +ntlm +opie -psl +ssl/openssl 

Wgetrc: 
    /usr/local/etc/wgetrc (system)
Compile: 
    gcc -DHAVE_CONFIG_H -DSYSTEM_WGETRC="/usr/local/etc/wgetrc" 
    -DLOCALEDIR="/usr/local/share/locale" -I. -I../lib -I../lib 
    -DNDEBUG 
Link: 
    gcc -DNDEBUG -liconv -lssl -lcrypto -ldl -lz ftp-opie.o openssl.o 
    http-ntlm.o ../lib/libgnu.a 

Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
<http://www.gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Originally written by Hrvoje Niksic <hniksic@xemacs.org>.
Please send bug reports and questions to <bug-wget@gnu.org>.

ซึ่งหมายความว่าคุณอยู่ในธุรกิจ!

วิ่งของคุณ wget คำสั่งจากไดเรกทอรีบ้านของคุณ

ดังนั้นตอนนี้คุณสามารถเรียกใช้ wget คำสั่งโพสต์ในคำถามของคุณเช่นนี้:

~/wget-1.16.3/src/wget -r --no-parent -nH -nd -q --show-progress --progress=bar:force ftp://ftp.ncdc.noaa.gov/pub/data/swdi/database-csv/v2/

และปรับแต่งเล็กน้อย - แต่สิ่งที่ควรค่าแก่การสังเกต - ก็คือมีมากมาย wget ตัวเลือกมีชื่อเต็มและตัวย่อย่อ ดังนั้น --no-parent สามารถตัดให้สั้นลง -np เพื่อทำให้คำสั่งมีลักษณะดังนี้:

~/wget-1.16.3/src/wget -r -np -nH -nd -q --show-progress --progress=bar:force ftp://ftp.ncdc.noaa.gov/pub/data/swdi/database-csv/v2/

การล้างข้อมูลภายหลังการใช้งาน

และถ้าคุณต้องการที่จะกำจัด wget 1.16.3 สิ่งที่คุณเพิ่งคอมไพล์ - เนื่องจากคุณบอกว่าคอมพิวเตอร์ที่คุณกำลังทำงานไม่ใช่ของคุณ - จากนั้นเพียงลบ wget ไฟล์ต้นฉบับที่คุณทำงานด้วยเช่นนี้:

rm wget-1.16.3.tar.gz
rm -rf wget-1.16.3

1
คุณทำมันอีกครั้ง - แก้ปัญหาด้วยการสิ้นสุดข้อ จำกัด คำตอบที่ดี
fixer1234
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.