Lệnh curl là một công cụ mạnh mẽ và linh hoạt được sử dụng để truyền dữ liệu đến hoặc đi từ máy chủ bằng nhiều giao thức khác nhau, chẳng hạn như HTTP, HTTPS, FTP, v.v. Lệnh này là viết tắt của "Client URL" và thường được sử dụng cho các yêu cầu web, cho phép người dùng tải xuống tệp, gửi dữ liệu qua các yêu cầu POST và thậm chí tương tác với API RESTful trực tiếp từ dòng lệnh. Lệnh curl có thể xử lý nhiều tác vụ khác nhau, từ tải xuống tệp đơn giản đến biểu mẫu nhiều phần phức tạp và thường được sử dụng trong các tập lệnh để tự động hóa do tính linh hoạt và khả năng cung cấp đầu ra chi tiết, khiến nó trở thành một tiện ích thiết yếu trong môi trường Linux.
Trong hướng dẫn này, chúng ta sẽ thảo luận vềcurllệnh này cho phép bạn tải xuống nội dung từ Web, trong số những chức năng khác.Xin lưu ý rằng các ví dụ được thảo luận trong bài viết này được thử nghiệm trên Ubuntu 24.04.
Và đây là nội dung trang hướng dẫn nói về lệnh này:
Sau đây là một số ví dụ theo dạng Hỏi & Đáp sẽ giúp bạn hiểu rõ hơn về cách hoạt động của curl.
Ví dụ:
Lưu ý rằng bạn cũng có thể sử dụng tùy chọn -o tại đây.
Quay lại ví dụ của chúng ta, trong khi dữ liệu được tải xuống trong tệp 'test.torrent' trên hệ thống của tôi, đầu ra sau được tạo ra trên dòng lệnh:
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22500%22%20height=%2238%22%3E%3C/svg%3E
Đây là những gì trang hướng dẫn nói về đồng hồ đo tiến trình này được hiển thị trong đầu ra:
Vì vậy, trong trường hợp này, một tệp có tên 'ubuntu-18.04-desktop-amd64.iso.torrent' đã được tạo ra trong đầu ra trên hệ thống của tôi.
Ví dụ:
Đây là lệnh trên đang hoạt động:
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22500%22%20height=%2288%22%3E%3C/svg%3E
Vì vậy, bạn có thể thấy tiến trình tải xuống cho cả hai URL được hiển thị trong đầu ra.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22500%22%20height=%22146%22%3E%3C/svg%3E
Nếu bạn muốn curl theo dõi chuyển hướng, hãy sử dụng tùy chọn dòng lệnh -L thay vào đó.
Ví dụ:
Ảnh chụp màn hình sau đây cho thấy lệnh curl tiếp tục tải xuống sau khi bị gián đoạn.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22500%22%20height=%22103%22%3E%3C/svg%3E
Trong hướng dẫn này, chúng ta sẽ thảo luận vềcurllệnh này cho phép bạn tải xuống nội dung từ Web, trong số những chức năng khác.Xin lưu ý rằng các ví dụ được thảo luận trong bài viết này được thử nghiệm trên Ubuntu 24.04.
Lệnh curl của Linux
Lệnh curl cho phép bạn tải xuống và tải lên dữ liệu thông qua dòng lệnh Linux. Sau đây là cú pháp của lệnh này:
Mã:
curl [options] [URL...]
Mã:
curl is a tool to transfer data from or to a server, using one of the
supported protocols (DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP,
IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS,
TELNET and TFTP). The command is designed to work without user inter?
action.
curl offers a busload of useful tricks like proxy support, user authen?
tication, FTP upload, HTTP post, SSL connections, cookies, file trans?
fer resume, Metalink, and more. As you will see below, the number of
features will make your head spin!
curl is powered by libcurl for all transfer-related features. See
libcurl(3) for details.
Câu hỏi 1. Lệnh curl hoạt động như thế nào?
Cách sử dụng cơ bản khá đơn giản - chỉ cần truyền URL làm đầu vào cho lệnh curl và chuyển hướng đầu ra đến một tệp.Ví dụ:
Mã:
curl http://releases.ubuntu.com/24.04/ubuntu-24.04-desktop-amd64.iso.torrent > test.torrent
Mã:
-o, --output
Write output to instead of stdout.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22500%22%20height=%2238%22%3E%3C/svg%3E
Đây là những gì trang hướng dẫn nói về đồng hồ đo tiến trình này được hiển thị trong đầu ra:
Mã:
curl normally displays a progress meter during operations, indicating
the amount of transferred data, transfer speeds and estimated time
left, etc.
curl displays this data to the terminal by default, so if you invoke
curl to do an operation and it is about to write data to the terminal,
it disables the progress meter as otherwise it would mess up the output
mixing progress meter and response data.
If you want a progress meter for HTTP POST or PUT requests, you need to
redirect the response output to a file, using shell redirect (>), -o
[file] or similar.
It is not the same case for FTP upload as that operation does not spit
out any response data to the terminal.
If you prefer a progress "bar" instead of the regular meter, -# is your
friend.
Câu hỏi 2. Làm thế nào để curl sử dụng cùng tên tệp tải xuống?
Trong ví dụ trước, bạn thấy đấy, chúng ta phải chỉ định rõ ràng tên tệp đã tải xuống. Tuy nhiên, bạn có thể buộc curl sử dụng tên của tệp đang được tải xuống làm tên tệp cục bộ. Bạn có thể thực hiện việc này bằng cách sử dụng tùy chọn dòng lệnh -O.
Mã:
curl -O http://releases.ubuntu.com/18.04/ubuntu-18.04-desktop-amd64.iso.torrent
Câu hỏi 3. Làm thế nào để tải xuống nhiều tệp bằng curl?
Điều này cũng không phức tạp - chỉ cần truyền URL theo cách sau:
Mã:
curl -O [URL1] -O [URL2] -O [URL3] ...
Mã:
curl -O http://releases.ubuntu.com/18.04/ubuntu-18.04-desktop-amd64.iso.torrent -O http://releases.ubuntu.com/18.04/ubuntu-18.04-live-server-amd64.iso.torrent
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22500%22%20height=%2288%22%3E%3C/svg%3E
Vì vậy, bạn có thể thấy tiến trình tải xuống cho cả hai URL được hiển thị trong đầu ra.
Câu hỏi 4. Làm thế nào để giải quyết vấn đề 'đã di chuyển'?
Đôi khi, khi bạn truyền URL cho lệnh curl, bạn sẽ nhận được lỗi như "Đã di chuyển" hoặc "Đã di chuyển vĩnh viễn". Điều này thường xảy ra khi URL đầu vào chuyển hướng đến một URL khác. Ví dụ, bạn mở một trang web, chẳng hạn như oneplus.com, và nó chuyển hướng đến một URL cho quốc gia của bạn (như oneplus.in), vì vậy bạn nhận được lỗi như sau:data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22500%22%20height=%22146%22%3E%3C/svg%3E
Nếu bạn muốn curl theo dõi chuyển hướng, hãy sử dụng tùy chọn dòng lệnh -L thay vào đó.
Mã:
curl -L http://www.oneplus.com
Câu hỏi 5. Làm thế nào để tiếp tục tải xuống từ điểm bị gián đoạn?
Đôi khi, quá trình tải xuống bị gián đoạn ở giữa. Vì vậy, để tiết kiệm thời gian và dữ liệu, khi bạn thử lại, bạn có thể muốn bắt đầu từ điểm bị gián đoạn. Curl cho phép bạn thực hiện việc này bằng tùy chọn dòng lệnh -C.Ví dụ:
Mã:
curl -C - -O http://releases.ubuntu.com/18.04/ubuntu-18.04-desktop-amd64.iso
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22500%22%20height=%22103%22%3E%3C/svg%3E