Curl là gì? Tổng hợp các lệnh Curl Linux Command
Trong quá trình sử dụng hệ điều hành Linux, chắc chắn bạn sẽ nghe qua về các lệnh curl. Vậy Curl là gì? Các lệnh Curl có trong Linux Comand ra sao? SVNHosting sẽ giải đáp giúp bạn!
Curl là gì?
cURL là tên của một dự án được rút gọn từ Client for URLs. Ở thời điểm ban đầu, chữ URL được viết hoa lên nhằm nhấn mạnh rằng cURL có liên quan đến URL. Đây là một công cụ dòng lệnh (command line tool) cùng thư viện (libcurl) dùng để kiểm tra các kết nối từ URL và cho phép truyền dữ liệu thông qua nhiều giao thức khác nhau.
Libcurl là gì?
Libcurl là một thư viện đáng tin cậy và linh hoạt, Libcurl cung cấp cho bạn một giao diện dễ dàng và hỗ trợ rất nhiều giao thức internet phổ biến.
Bạn có thể sử dụng libcurl trong ứng dụng của mình, có thể là mã nguồn mở, cũng có thể là mã nguồn đóng và đặc biệt là hoàn toàn miễn phí.
Libcurl là một thư viện mạnh mẽ và được sử dụng nhiều nhất trên hành tinh này để truyền tệp đi trên đa nền tảng và sử dụng ngôn ngữ C.
URL là gì?
Uniform Resource Locator – URL, còn được gọi là địa chỉ web có nhiệm vụ dẫn đường đến tài nguyên đó trên mạng máy tính. URL là một địa chỉ duy nhất của trang web, và hầu hết các trình duyệt sẽ hiển thị URL trên thanh địa chỉ (Adress Bar).
Các giao thức mà curl hỗ trợ
Curl hỗ trợ rất nhiều giao thức (protocol), các giao thức phổ biến và quan trọng nhất là:
- HTTP và HTTPS
- FTP và FTPS
- SMTP và SMTPS
- IMAP và IMAPS
- POP3 và POP3S
- SMB và SMBS
- SFTP
- SCP
- TELNET
- GOPHER
- LDAP và LDAPS
Ngoài những giao thức được liệt kê ở trên, Curl cũng hỗ trợ một số giao thức ít phổ biến khác.
Những sự nhầm lẫn về curl
Curl không phải là bản sao của wget, rất rất nhiều người nhầm lẫn giữa curl và wget. Trong quá trình xây dựng, nhà phát triển khẳng định rằng họ không có ý định thay thế wget hay cạnh tranh với wget trên thị trường.
Mục đích của curl là sử dụng để truyền file đi trong 1 lần. Curl không phải là một chương trình sao chép trang web.
Curl không phải là một phần mềm sao chép FTP
Curl không phải là một công cụ PHP dù rằng curl hoạt động rất tốt khi sử dụng với PHP.
Curl không phải là một chương trình riêng lẻ cho bất kì một hệ điều hành nào. Curl tồn tại, biên dịch, triển khai và chạy trên rất nhiều hệ điều hành từ Window, OS X, Linux,…
Các lệnh curl trong linux
Trước khi làm việc với curl ta nên kiểm tra qua phiên bản của curl trước.
Curl –version
Sau khi kiểm tra bạn sẽ biết được phiên bản curl có trên máy và các giao thức mà curl có thể hỗ trợ được.
Cú pháp câu lệnh curl trong Linux
Cấu trúc của curl command rất dễ tiếp cận:
Curl [tuỳ chọn] [URL]
Cách dùng đơn giản nhất mà ta có thể thực hiện là xem nội dung hiển thị của trang.
Curl testdomain.com
Kết quả xuất hiện sẽ là mã nguồn của trang web. Nếu không xác định các giao thức trước khi chạy, curl sẽ tự động dịch thành văn bản HTTP.
Xem hướng dẫn về curl
Curl –Help
Sau đó màn hình của bạn sẽ hiện ra hàng loạt các câu lệnh có thể sử dụng và giải thích ý nghĩa của lệnh đó luôn.
Sử dụng Curl commands để tải 1 file từ xa
-O sẽ lưu giống hệt tên file từ xa đó
-o sẽ giúp bạn lưu tên file theo ý muốn và thay đổi lại cả đường dẫn lưu file.
Ví dụ:
curl -O http://testdomain.com/testfile.tar.gz
Lệnh trên sẽ lưu file thành testfile.tar.gz.
curl -o newtestfile.tar.gz http://testdomain.com/testfile.tar.gz
Lệnh trên sẽ lưu file thành newtestfile.tar.gz.
Lệnh tiếp tục tải file
Ví dụ bạn đang tải file và và vì một lý do nào đó, quá trình bị ngắt quãng. Bạn có thể dùng lệnh dưới đây để tải file lại:
curl -C – -O http://testdomain.com/testfile.tar.gz
Lệnh tải nhiều file cùng lúc
Bạn có thể tải nhiều file cùng lúc bằng lệnh sau:
curl -O http://testdomain.com/testfile.tar.gz -O http://mydomain.com/myfile.tar.gz
Tải nhiều file cùng lúc với nhiều URL khác nhau
Nếu muốn tải nhiều file từ nhiều URL khác nhau trong một lần, bạn tạo một file text và liệt kê tất cả các URL vào. Curl command có thể kết hợp với xargs (xargs là một lệnh trên Unix) để tải nhiều URLs khác nhau.
Sau khi liệt kê hết bạn có file allUrls.txt chứa những URL cần tải về, và bạn dùng lệnh này để tải toàn bộ chúng về:
xargs –n 1 curl -O < allUrls.txt
Curl cho HTTP
Bạn cũng có thể dùng Curl như là một máy chủ Proxy. Nếu bạn có server đang mở trên port 8090 tại sampleproxy.com, lệnh tải file về như sau:
curl -x sampleproxy.com:8090 -U username:password -O http:// testdomain.com/testfile.tar.gz
Nếu proxy không cần phải chứng thực, bạn có thể bỏ qua -U username:password.
Curl cho HTTP Header
Một HTTP request thông thường sẽ luôn có header. HTTP header gửi những thông tin công thêm này vào web server từ a bên cạnh yêu cầu thực. Công cụ lập trình trên trình duyệt có thể kiểm tra được thông tin header, nhưng bạn cũng có thể xác thực bằng lệnh curl.
Ví dụ cách lấy thông tin header từ một trang web bằng curl: curl -I www.testdomain.com
Bạn có thể gửi yêu cầu (request) GET và POST.
GET: curl http://mydomain.com
POST: curl –data “text=Hello” https://myDomain.com/firstPage.jsp
Đoạn text=Hello là tham số của POST. Hành động này cũng tương tự như sử dụng HTML form.
Bạn có thể xác định nhiều phương pháp HTTP trong một lệnh curl duy nhất, bằng tùy chọn -next:
curl –data “text=Hello” https://myDomain.com/firstPage.jsp –next https://myDomain.com/displayResult.jsp
Bao gồm POST đi theo yêu cầu GET.
Mỗi một yêu cầu HTTP sẽ có một user agent được gửi như một phần của yêu cầu. User Agent định dạng thông tin trình duyệt của máy trạm. Mặc định, yêu cầu curl chứa curl và phiên bản của làm thông tin của user agent.
Ví dụ như output là:
“GET / HTTP/1.1” 200 “_” ”curl/7/29/0”
Thay đổi mặc định user agent:
curl -I http://mydomain.com –-user-agent “My new Browser”
Kết quả sau khi thay đổi:
“GET / HTTP/1.1” 200 “_” ”My new Browser”
Curl cho Cookies
Curl cũng có thể dùng để kiểm tra cookies nào được tải trên URL. Vì vậy, nếu bạn truy cập https://www.samplewebsite.com, sau đó output một file, lưu cookies và truy cập chúng sử dụng cat hay VM editor.
Bên dưới là mẫu lệnh này:
curl –cookie-jar Mycookies.txt https://www.samplewebsite.com /index.html -O
Tương tự, nếu bạn có cookies trong file, bạn có thể gửi lên website. Ví dụ lệnh để gửi cookies là:
curl –cookie Mycookies.txt https://www. samplewebsite.com
Curl cho FTP
Curl không phải là một bản sao chép FTP nhưng giờ đã hỗ trợ cho FTP!
Lệnh curl tải file từ máy chủ FTP
curl -u username:password -O ftp://sampleftpserver/testfile.tar.gz
Trong lệnh ở trên, ftp://sampleftpserver là FTP server chấp nhật kết nối. Username và password có thể bỏ qua nếu như server hỗ trợ anonymous FTP (FTP ẩn danh). Gõ lệnh và xem tiến trình xảy ra.
Lệnh curl tải file lên
curl -u username:password -T testfile.tar.gz ftp://sampleftpserver
Chúng ta có thể bỏ qua username và password nếu được cho phép để kết nối ẩn danh.
Giới hạn output của Curl
Khi sử dụng curl, bạn không biết được output lớn đến đâu. Để hạn chế sử dụng băng thông lớn, hãy giới hạn curl output lại để tránh bị nghẽn mạng.
Lệnh bên dưới sẽ giới hạn băng thông xuống 100K:
curl –limit-rate 100K http://testdomain.com/samplefile.tar.gz -O
Chúc bạn sử dụng Curl hiệu quả nhé!
Những câu hỏi thường gặp
Ai là người phát triển curl?
Curl và libcurl không phải là một phần mềm được làm từ một cá nhân duy nhất. Daniel Stenberg là trưởng dự án và là người đảm nhận phát triển chính, tuy nhiên những người đóng góp cho sự phát triển của dự án cũng rất quan trọng. Bất cứ ai cũng có thể đóng góp cho sjw phát triển của dự án.
Curl có phân biệt chữ hoa chữ thường trong câu lệnh hay không?
Curl có phân biệt chữ hoa và chữ thường trong câu lệnh, vì thế mà cùng một chữ O nhưng bạn thay đổi thành o cũng có thể thay đổi ý nghĩa câu lệnh.
Tôi có thể viết đảo lộn câu lệnh curl hay không?
Bạn có thể đảo lộn câu lệnh curl, do curl không phân biệt thứ tự xuất hiện bên trong câu lệnh. Nên nếu bạn viết:
curl -C – -O http://testdomain.com/testfile.tar.gz
Đảo lại thành
curl http://testdomain.com/testfile.tar.gz -C – -O
Câu lệnh vẫn hoàn toàn trả về một giá trị như nhau.
curl.com có phải là trang chủ của những nhà phát triển curl hay không?
Theo phân trần của nhà phát triển, curl.com không phải là của họ mà là của một đơn vị khác. Họ không sở hữu tên curl cho mục đích thương mại và họ làm ra sản phẩm hoàn toàn miễn phí. Nếu bạn cảm thấy muốn đóng góp, bạn có thể quyên góp ủng hộ tài chính để họ tiếp tục phát triển.
Còn trang chủ của họ là tại địa chỉ: https://curl.haxx.se
Trang mã nguồn mở được github tài trợ tại: https://github.com/curl/curl
Mọi thắc mắc cần giải đáp hay mong muốn cần tư vấn, vui lòng để lại thông tin bên dưới. Chuyên viên tư vấn của SVN HOSTING COMPARISON sẽ giúp bạn chọn được giải pháp tốt nhất cho quá trình phát triển công ty bạn.
SVN HOSTING COMPARISON
- Địa chỉ: 241 Cộng Hòa, Phường 13, Tân Bình, Hồ Chí Minh.
- Email: svnhostingcomparison@gmail.com
- Hotline: 0973.666.777
- Website: http://svnhostingcomparison.com