Computer >> Hướng Dẫn Máy Tính >  >> Hệ Thống >> Linux

Cách dùng cURL để truyền dữ liệu dòng lệnh và nhiều hơn nữa

Nếu bạn thường làm theo hướng dẫn cài đặt ứng dụng Linux qua terminal, chắc hẳn đã gặp lệnh curl. cURL là công cụ dòng lệnh truyền dữ liệu qua URL. Cách dùng đơn giản nhất là tải file qua command line, nhưng cURL mạnh mẽ hơn nhiều so với vẻ ngoài.

cURL là gì?

Daniel Sternberg viết cURL năm 1996 để lấy dữ liệu tài chính từ web server và phát sóng lên kênh IRC. Ngày nay, cURL trở thành công cụ mạnh để lấy dữ liệu mà không cần trình duyệt. Nếu bạn sống trong terminal, đây là công cụ không thể thiếu.

Trên hầu hết các distro Linux, cURL đã cài sẵn. Nếu chưa, nó có trong hầu hết kho phần mềm. Windows không có lệnh "curl-like" tích hợp, macOS có sẵn cURL nhưng ít flag hơn phiên bản Linux.

Cài đặt

Linux

  • Debian/Ubuntu: sudo apt install curl
  • Arch-based: sudo pacman -S curl
  • Fedora/CentOS/RHEL: sudo dnf install curl

macOS

Đã cài sẵn, không cần làm gì thêm.

Windows

  1. Tải cURL từ trang chính thức (chọn 64-bit hoặc 32-bit).
  2. Tạo thư mục "cURL" ở ổ C:\ hoặc C:\Program Files\.
  3. Giải nén file zip, copy curl.exe từ thư mục bin vào thư mục cURL vừa tạo.
  4. Thêm vào biến PATH: Start → gõ "environment" → Environment Variables → chọn Path → Edit → New → thêm đường dẫn (ví dụ: C:\Program Files\cURL) → OK.

Mọi flag trên Linux đều hoạt động trên Windows. Lưu ý: Command Prompt khác với Windows Terminal (có cURL riêng trong PowerShell).

Bắt đầu sử dụng cURL

Gõ curl maketecheasier.com → Enter. Nếu không có output, do server không phản hồi yêu cầu ngẫu nhiên. Thử với HTTPS:

curl https://www.maketecheasier.com

Sẽ nhận được một lượng lớn dữ liệu HTML. Để lưu ra file:

curl https://www.maketecheasier.com > ~/Downloads/mte.html

Hoặc dùng flag -o:

curl -o ~/Downloads/mte.html https://www.maketecheasier.com

Theo dõi Redirect (-L)

Nhiều site tự redirect HTTP sang HTTPS. Flag -L làm cURL tự theo dõi redirect 301:

curl -L https://google.com

Tiếp tục tải bị gián đoạn (-C)

Khi tải file lớn bị ngắt, dùng -C - để tiếp tục từ nơi dừng:

curl -C - -o ~/Downloads/debian.iso -L https://cdimage.debian.org/.../debian-testing-amd64-DVD-1.iso

Tải nhiều file cùng lúc

cURL có 2 cách tải nhiều file:

Cách 1: File được đánh số (file1, file2...)

curl "https://example.com/file[1-5].zip" -o "#1_#2"

Cách 2: Dùng -O (--remote-name) - giữ tên file gốc:

curl -O "https://example.com/file1.zip" -O "https://example.com/file2.zip"

Với nhiều file đánh số, dùng --remote-name-all:

curl --remote-name-all "https://example.com/file[1-5].zip"

Hoặc file không liên tiếp từ cùng site:

curl --remote-name-all "https://example.com/{file1.zip,anotherfile.zip,thisisfun.zip}"

Tải với xác thực (-u)

Dùng cho FTP server riêng tư:

curl -u username:password -o ~/Downloads/file.zip ftp://example.com/file.zip

Chia và gộp file (--range)

Tải file lớn chia thành nhiều phần:

curl --range 0-99999999 -o arch.part1 -L https://mirrors.chroot.ro/archlinux/iso/.../archlinux-2021.11.01-x86_64.iso

Phần tiếp theo: --range 100000000-199999999, v.v. Kết hợp với && để chạy nối tiếp.

Gộp file lại:

  • Linux/macOS: cat arch.part? > arch.iso
  • Windows: copy /b arch.part* arch.iso

Các tính năng hữu ích khác

  • -#: Thanh tiến trình. Ví dụ: curl -# https://site.com/file.zip > ~/file.zip
  • -a: Ghi thêm vào file thay vì ghi đè. Ví dụ: curl -ao ~/file.x https://url.com/part.x
  • --head: Chỉ lấy header response. Ví dụ: curl --head https://example.com
  • --limit-rate: Giới hạn băng thông. K=KB/s, M=MB/s. Ví dụ: curl --limit-rate 8M https://url.com/file.zip > ~/file.zip
  • -o: Chỉ định file output.
  • --proxy: Dùng proxy. Ví dụ: curl --proxy proxyurl:port https://url.com/file.zip > ~/file.zip

cURL vs Wget

Cả hai ra đời năm 1996 nhưng mục đích khác:

Wget

  • Được thiết kế chuyên biệt để tải dữ liệu từ Internet.
  • Không cần flag -L hay -o, chỉ cần wget [url].
  • Tải đệ quy với flag -r.
  • Phù hợp cho sysadmin hàng ngày.

cURL

  • Nhiều flag và hàm kiểm soát chi tiết.
  • Hỗ trợ mạng cục bộ (LDAP) và máy in mạng (Samba).
  • Tốt với thư viện nén gzip.
  • Dựa trên libcurl - cho phép dev viết script/app tích hợp cURL.

Tóm lại: Wget là "hộp công cụ cho mọi người", cURL dành cho power user và sysadmin cần kiểm soát tinh vi.

Câu hỏi thường gặp

1. Lỗi certificate trên Linux, sửa sao?

Lỗi "peer's certificate issuer has been marked as not trusted" → cài lại gói certificate:

  • Debian/Ubuntu: sudo apt reinstall ca-certificates
  • Fedora/CentOS/RHEL: dnf reinstall ca-certificates
  • Arch: pacman -S ca-certificates (có thể cần pacman -Scc trước)

Nếu vẫn lỗi, có thể do phía server.

2. Chạy cURL kết hợp bash có an toàn không?

Một số dev (như NodeJS) yêu cầu curl [args] | sudo -E bash -. Nếu nguồn tin cậy, thường an toàn. Nguy cơ không cao hơn dùng package manager (AUR cũng có thể bị tấn công).

3. Dùng cURL với Tor được không?

Được! Khởi động Tor Browser/service, dùng flag --proxy:

curl --proxy localhost:9050 https://example.com

Tor standalone dùng port 9050, Tor Browser dùng 9150.

Kết luận

cURL chứng minh sự bền bỉ, vẫn là công cụ quan trọng trong武器库 của người dùng terminal. Mới học command line? Xem các lệnh Linux hữu ích. Muốn tìm kiếm web thay vì tải dữ liệu? Có thể lướt web ngay trên terminal.