How to Download Files with cURL on Command Line
สารบัญ:
- การติดตั้ง Curl
- ติดตั้ง Curl บน Ubuntu และ Debian
- ติดตั้ง Curl บน CentOS และ Fedora
- วิธีใช้ Curl
- บันทึกผลลัพธ์ไปยังไฟล์
- ดาวน์โหลดหลายไฟล์
- ทำการดาวน์โหลดต่อ
- รับส่วนหัว HTTP ของ URL
- เปลี่ยน User-Agent
- ระบุอัตราการถ่ายโอนสูงสุด
- ถ่ายโอนไฟล์ผ่าน FTP
- ส่งคุกกี้
- การใช้พรอกซี
- ข้อสรุป
curl
เป็นโปรแกรมอรรถประโยชน์บรรทัดคำสั่งสำหรับถ่ายโอนข้อมูลจากหรือไปยังเซิร์ฟเวอร์ที่ออกแบบมาเพื่อทำงานโดยไม่ต้องมีการโต้ตอบกับผู้ใช้ ด้วย
curl
คุณสามารถดาวน์โหลดหรืออัพโหลดข้อมูลโดยใช้หนึ่งในโปรโตคอลที่รองรับเช่น HTTP, HTTPS, SCP, SFTP และ FTP
curl
มีตัวเลือกมากมายที่ช่วยให้คุณสามารถถ่ายโอนต่อ จำกัด แบนด์วิดท์สนับสนุนพร็อกซีตรวจสอบผู้ใช้และอีกมากมาย
ในบทช่วยสอนนี้เราจะแสดงวิธีใช้เครื่องมือ curl ผ่านตัวอย่างการใช้งานจริงและคำอธิบายโดยละเอียดเกี่ยวกับตัวเลือก curl ทั่วไป
การติดตั้ง Curl
แพ็คเกจ curl ได้รับการติดตั้งไว้ล่วงหน้าในลีนุกซ์ส่วนใหญ่ในปัจจุบัน
ในการตรวจสอบว่ามีการติดตั้งแพ็คเกจ Curl ในระบบของคุณหรือไม่เปิดคอนโซลของคุณพิมพ์
curl
แล้วกด Enter หากคุณติดตั้ง
curl
แล้วระบบจะพิมพ์
curl: try 'curl --help' or 'curl --manual' for more information
มิฉะนั้นคุณจะเห็นสิ่งที่ต้องการ
curl command not found
หากไม่ได้ติดตั้ง
curl
คุณสามารถติดตั้งได้อย่างง่ายดายโดยใช้ตัวจัดการแพ็คเกจของการกระจายของคุณ
ติดตั้ง Curl บน Ubuntu และ Debian
sudo apt update
sudo apt install curl
ติดตั้ง Curl บน CentOS และ Fedora
วิธีใช้ Curl
ไวยากรณ์สำหรับคำสั่ง
curl
เป็นดังนี้:
curl
ในรูปแบบที่ง่ายที่สุดเมื่อเรียกใช้โดยไม่มีตัวเลือกใด ๆ
curl
แสดงทรัพยากรที่ระบุไปยังเอาต์พุตมาตรฐาน
ตัวอย่างเช่นในการดึงหน้าแรกของ
example.com
คุณจะต้องเรียกใช้:
curl example.com
คำสั่งจะพิมพ์ซอร์สโค้ดของโฮมเพจ
example.com
ในหน้าต่างเทอร์มินัลของคุณ
หากไม่ได้ระบุโปรโตคอล
curl
จะพยายามเดาโปรโตคอลที่คุณต้องการใช้และจะใช้ค่าเริ่มต้นเป็น
HTTP
บันทึกผลลัพธ์ไปยังไฟล์
หากต้องการบันทึกผลลัพธ์ของคำสั่ง
curl
ให้ใช้ตัวเลือก
-o
หรือ
-O
ตัวพิมพ์เล็ก
-o
บันทึกไฟล์ด้วยชื่อไฟล์ที่กำหนดไว้ล่วงหน้าซึ่งในตัวอย่างด้านล่างคือ
vue-v2.6.10.js
:
curl -o vue-v2.6.10.js
ตัวพิมพ์ใหญ่
-O
บันทึกไฟล์ด้วยชื่อไฟล์ดั้งเดิม:
ดาวน์โหลดหลายไฟล์
หากต้องการดาวน์โหลดหลายไฟล์พร้อมกันให้ใช้ตัวเลือก
-O
หลายตัวตามด้วย URL ไปยังไฟล์ที่คุณต้องการดาวน์โหลด
ในตัวอย่างต่อไปนี้เรากำลังดาวน์โหลดไฟล์ Arch Linux และ Debian iso:
curl -O http://mirrors.edge.kernel.org/archlinux/iso/2018.06.01/archlinux-2018.06.01-x86_64.iso \
-O
ทำการดาวน์โหลดต่อ
คุณสามารถทำการดาวน์โหลดต่อได้โดยใช้ตัวเลือก
-C -
สิ่งนี้มีประโยชน์หากการเชื่อมต่อของคุณลดลงในระหว่างการดาวน์โหลดไฟล์ขนาดใหญ่และแทนที่จะเริ่มดาวน์โหลดตั้งแต่เริ่มต้นคุณสามารถดำเนินการต่อก่อนหน้านี้ได้
ตัวอย่างเช่นหากคุณดาวน์โหลดไฟล์ iso ของ Ubuntu 18.04 โดยใช้คำสั่งต่อไปนี้:
curl -O
และการเชื่อมต่อของคุณก็ลดลงคุณสามารถดาวน์โหลดต่อได้ด้วย:
รับส่วนหัว HTTP ของ URL
ส่วนหัว HTTP คือคู่ของคีย์ - ค่าที่คั่นด้วยโคลอนที่มีข้อมูลเช่นตัวแทนผู้ใช้ประเภทเนื้อหาและการเข้ารหัส ส่วนหัวจะถูกส่งผ่านระหว่างไคลเอนต์และเซิร์ฟเวอร์ที่มีการร้องขอหรือการตอบสนอง
ใช้อ็อพชัน
-I
เพื่อดึงข้อมูลส่วนหัว HTTP ของทรัพยากรที่ระบุเท่านั้น:
curl -I --http2
ตัวเลือก
-L
สั่งให้
curl
ติดตามการเปลี่ยนเส้นทางใด ๆ จนกว่าจะถึงปลายทางสุดท้าย:
เปลี่ยน User-Agent
บางครั้งเมื่อดาวน์โหลดไฟล์เซิร์ฟเวอร์ระยะไกลอาจถูกตั้งค่าให้บล็อก Curl User-Agent หรือเพื่อส่งคืนเนื้อหาที่แตกต่างกันขึ้นอยู่กับอุปกรณ์ผู้เยี่ยมชมและเบราว์เซอร์
ในสถานการณ์เช่นนี้เพื่อเลียนแบบเบราว์เซอร์อื่นให้ใช้ตัวเลือก
-A
ตัวอย่างเช่นการเลียนแบบ Firefox 60 คุณจะใช้:
curl -A "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0"
ระบุอัตราการถ่ายโอนสูงสุด
ตัวเลือก
--limit-rate
อนุญาตให้คุณ จำกัด อัตราการถ่ายโอนข้อมูล ค่าสามารถแสดงเป็นไบต์, กิโลไบต์ด้วยส่วนต่อท้าย
k
, เมกะไบต์ที่มีส่วนต่อท้าย
m
และกิกะไบต์ด้วยส่วนต่อท้าย
g
ในตัวอย่างต่อไปนี้
curl
จะดาวน์โหลดไบนารีไปและ จำกัด ความเร็วในการดาวน์โหลดไว้ที่ 1 mb:
curl --limit-rate 1m -O
ตัวเลือกนี้มีประโยชน์ในการป้องกันไม่ให้
curl
แบนด์วิดท์ที่มีอยู่ทั้งหมด
ถ่ายโอนไฟล์ผ่าน FTP
ในการเข้าถึงเซิร์ฟเวอร์ FTP ที่มีการป้องกันด้วย
curl
ให้ใช้ตัวเลือก
-u
และระบุชื่อผู้ใช้และรหัสผ่านที่แสดงด้านล่าง:
curl -u FTP_USERNAME:FTP_PASSWORD ftp://ftp.example.com/
เมื่อล็อกอินแล้วคำสั่งจะแสดงรายการไฟล์และไดเรกทอรีทั้งหมดในโฮมไดเรกทอรีของผู้ใช้
คุณสามารถดาวน์โหลดไฟล์เดียวจากเซิร์ฟเวอร์ FTP โดยใช้ไวยากรณ์ต่อไปนี้:
curl -u FTP_USERNAME:FTP_PASSWORD ftp://ftp.example.com/file.tar.gz
ในการอัพโหลดไฟล์ไปยังเซิร์ฟเวอร์ FTP ใช้
-T
ตามด้วยชื่อไฟล์ที่คุณต้องการอัปโหลด:
curl -T newfile.tar.gz -u FTP_USERNAME:FTP_PASSWORD ftp://ftp.example.com/
ส่งคุกกี้
บางครั้งคุณอาจต้องทำการร้องขอ HTTP ด้วยคุกกี้เฉพาะเพื่อเข้าถึงทรัพยากรระยะไกลหรือเพื่อแก้ไขข้อบกพร่อง
โดยค่าเริ่มต้นเมื่อขอทรัพยากรที่มี
curl
ไม่มีการส่งหรือจัดเก็บคุกกี้
ในการส่งคุกกี้ไปยังเซิร์ฟเวอร์ให้ใช้สวิตช์
-b
แล้วตามด้วยชื่อไฟล์ที่มีคุกกี้หรือสตริง
ตัวอย่างเช่นหากต้องการดาวน์โหลดไฟล์ Oracle Java JDK rpm ไฟล์
jdk-10.0.2_linux-x64_bin.rpm
คุณจะต้องผ่านคุกกี้ชื่อ
oraclelicense
มีค่า
a
:
curl -L -b "oraclelicense=a" -O
การใช้พรอกซี
curl
รองรับพร็อกซีประเภทต่าง ๆ รวมถึง HTTP, HTTPS และ SOCKS ในการถ่ายโอนข้อมูลผ่านพร็อกซีเซิร์ฟเวอร์ให้ใช้ตัวเลือก
-x
(
--proxy
) ตามด้วย URL พร็อกซี
คำสั่งต่อไปนี้ดาวน์โหลดทรัพยากรที่ระบุโดยใช้พร็อกซีบนพอร์ต
192.168.44.1
8888
:
curl -x 192.168.44.1:8888
หากพร็อกซีเซิร์ฟเวอร์ต้องการการรับรองความถูกต้องให้ใช้ตัวเลือก
-U
(
--proxy-user
) ตามด้วยชื่อผู้ใช้และรหัสผ่านที่คั่นด้วยโคลอน (
user:password
):
curl -U username:password -x 192.168.44.1:8888
ข้อสรุป
curl
เป็นเครื่องมือบรรทัดคำสั่งที่ให้คุณถ่ายโอนข้อมูลจากหรือไปยังโฮสต์ระยะไกล มันมีประโยชน์สำหรับปัญหาการแก้ไขปัญหาการดาวน์โหลดไฟล์และอื่น ๆ
ตัวอย่างที่แสดงในบทช่วยสอนนี้ง่าย แต่แสดงให้เห็นถึงตัวเลือก
curl
ใช้มากที่สุดและมีไว้เพื่อช่วยให้คุณเข้าใจวิธีการทำงานของคำสั่ง
curl
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ
curl
โปรดไปที่หน้าเอกสารของ Curl
คำสั่ง Echo ใน linux พร้อมตัวอย่าง
คำสั่ง echo เป็นหนึ่งในคำสั่งพื้นฐานและใช้บ่อยที่สุดใน Linux อาร์กิวเมนต์ที่ส่งผ่านไปยัง echo จะถูกพิมพ์ไปยังเอาต์พุตมาตรฐาน
คำสั่ง Linux พร้อมตัวอย่าง
คำสั่ง tee อ่านจากอินพุตมาตรฐานและเขียนไปยังทั้งเอาต์พุตมาตรฐานและหนึ่งไฟล์ขึ้นไปในเวลาเดียวกัน Tee ใช้กันมากที่สุดเมื่อใช้ร่วมกับคำสั่งอื่นผ่านการวางท่อ
คำสั่ง Tr ใน linux พร้อมตัวอย่าง
Tr เป็นยูทิลิตี้บรรทัดคำสั่งในระบบ Linux และ Unix ที่แปลลบและบีบอักขระจากอินพุตมาตรฐานและเขียนผลลัพธ์ไปยังเอาต์พุตมาตรฐาน