15 Basic Curl Command In Linux With Practical Examples | LinuxTeck (2024)

This article explains how to use curl in Linux with 15 examples. The curl command is one of the most powerful and useful tools that are used by web developers as well as by PHP programmers and System Administrators. Most commonly, it is used to transfer data between remote and local systems. Through this command, we can access or download content from a website without a browser. It is also useful for testing API's, troubleshooting network-related issues, uploading files, and posting data to the website. cURL is an inbuilt command line utility that runs on most Linux/Unix-based systems. Microsoft even announced that the curl will become a standard component of Windows with version (Windows 10 build 17063).

CURL stands for Client URL Request Library. This is a fully open-source package that is completely free to use on all platforms. It supports various Internet Protocols like DICT, FILE, FTP, FTPS, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTSP, SCP, SFTP, SMTP and SMTPS. The majority of IT champions are probably well-versed in the curl command.

This guide will help you learn how to use various options with curl commands. All the below examples were tested on RHEL/CENTOS 7.6

Global Syntax of the curl command:

curl [options] [URL...]

Table of Contents show

1. How to find the version of curl?

# curl -V OR # curl --version

15 Basic Curl Command In Linux With Practical Examples | LinuxTeck (1)Note: If your system has a curl package, it will display the information about curl and the libcurl version with the system architecture and also it will list all the supporting Internet Protocols of libcurl.

2. How to use the basic syntax of cURL into Terminal?

# curl linuxteck.com

15 Basic Curl Command In Linux With Practical Examples | LinuxTeck (2)Note: The curl command will simply fetch the content of the given URL and it will display it onto the Terminal. If we don't provide the specific protocol with curl, then it will be assumed and take the default one. In the above example, you can see it printed on the HTML page of linuxteck.com, where the default protocol of HTTP was taken.

3. How to download a file?

# curl -O https://www.linuxteck.com/idf_wddevents19sep19_sql.sql.gz

# curl -o backup.sql.gz https://www.linuxteck.com/idf_wddevents19sep19_sql.sql.gz

15 Basic Curl Command In Linux With Practical Examples | LinuxTeck (3)Note: Here you can use curl with uppercase and lowercase '-O and -o' options to download a file.
The 'curl -O' option will save the file name the same as in the URL only
The 'curl -o' option can choose a different name to save the output file
In the above example, I have used 'curl -O' to save the file with the same name as in the URL "idf_wddevents19sep19_sql.sql.gz" and using 'curl -o' to save the output file as "backup.sql.gz".

4. How to download multiple files?

# curl -O https://www.linuxteck.com/idf-fullbackup19sep19.tar.gz -O https://www.linuxteck.com/idf_wddevents19sep19_sql.sql.gz

15 Basic Curl Command In Linux With Practical Examples | LinuxTeck (4)Note: Using the above curl command we can download multiple files at a time. In the above example, I have downloaded 2 different files from the same website "idf-backup19sep19.tar.gz and idf_wddevents19sep19_sql.sql.gz" at a time with the advantage of using '-O' option. You can try with different websites.

5. How to continue from an interrupted download?

curl -C - -O https://www.linuxteck.com/idf_wddevents19sep19_sql.sql.gz

Note: Using the above command we can easily resume the file at the point of interruption. For e.g., if we start to download a large size file and in-between when it gets interrupted, then we need to start the process once again from the beginning. To avoid the process again from the beginning, you can use the above command to continue where the download got interrupted.

6. How to limit the download speed rate?

# curl --limit-rate 1m -O https://www.linuxteck.com/idf_wddevents19sep19_sql.sql.gz

Note: The '--limit-rate' option can control the bandwidth, it can be used to limit the data transfer rate to either 100K or 1M or 1G (K-Kilobytes, M-Megabytes, and G-Gigabytes). In the above example, I have used 1M bandwidth to limit the download speed rate.

7. How to display the download status in the progress bar?

# curl -# -O https://www.linuxteck.com/idf_wddevents19sep19_sql.sql.gz

15 Basic Curl Command In Linux With Practical Examples | LinuxTeck (5)Note: The above command will display the data transfer progress rate using a single straight "bar" instead of a curl's standard meter, like, the size of data, transfer rates and times, etc. There is no particular advantage of using this progress bar, just the look is simple and interesting to see the status of the downloading progress rather than the default meter.

8. How to download files from an FTP server?

The Normal FTP:

# curl -u FTP_UserName:FTP_Password -O ftp://linuxteck.com/README.txt

For SFTP :

# curl -u SFTP_UserName:SFTP_Password -O -k sftp://linuxteck.com/README.txt

15 Basic Curl Command In Linux With Practical Examples | LinuxTeck (6)Note: Using the above commands we can download files directly from FTP/SFTP server. To download the file from the FTP server you need to use the 1st command i.e, "The Normal FTP:" stated above and for the SFTP you can use the 2nd command stated above "For SFTP:". The '-k' flag used in SFTP explicitly allows curl to perform "insecure" SSL connections and transfers. You can also download files using with anonymous login.

In the above example, I have downloaded the sample file named "README.txt" from both FTP and SFTP Servers. If you only want to list down all the files in your Terminal, then you can use the above commands without the '-O' option.

9. How to upload files to FTP server?

The Normal FTP:

# curl -u FTP_UserName:FTP_Password -T linuxteck.sql.gz ftp://linuxteck.com

For SFTP :

# curl -u SFTP_UserName:SFTP_Password -T -k sftp://linuxteck.com/README.txt

Note: Using the above commands we can upload files directly to FTP/SFTP server. To upload the file to the FTP server you need to use the 1st command i.e, "The Normal FTP:" stated above and for the SFTP you can use the 2nd command stated above "For SFTP:". The '-T' flag represents the upload file and the '-k' flag used in SFTP explicitly allows curl to perform "insecure" SSL connections and transfers. Here you can use an anonymous login to upload the files. In the above example, I have uploaded the "linuxteck.sql.gz" file directly to both the FTP and SFTP Server.

Check out the detailed guide here on how to upload files via FTP and SFTP

10. How to delete files directly from FTP Server?

# curl ftp://linuxteck.com -X 'DELE linuxteck.sql.gz' -u FTP_UserName:FTP_Password

15 Basic Curl Command In Linux With Practical Examples | LinuxTeck (7)Note: Using the above command we can delete files directly from the FTP Server, but make sure and be clear before executing this command. In this example, I have deleted the "linuxteck.sql.gz" file using the above command.

11. How to send an email using SMTP Protocol?

# curl --url "smtps://smtp.example.com:465" --ssl-reqd --mail-from "youremail@example.com" --mail-rcpt "yourfriend@example.com" --upload-file /root/linuxteck.com/emailcontent.txt --user "smpt@example.com:Password" --insecure

15 Basic Curl Command In Linux With Practical Examples | LinuxTeck (8)

Note: Using the above curl command we can send emails directly to the recipient email using SMTP protocol in Terminal. For testing, you need to replace all the "example.com" domains with your respective domain names. Please find the short explanation of the above command :

a. smtps: Use the SMTP address and the respective port of your domain.

b. -- mail-from: From Address (person who is sending email).

c. --mail-rcpt: To Address ( Recipient Address).

d. -- upload-file: A text file to compose your email (In the above example I used the file name is "emailcontent.txt").

e. -- user: This is your SMTP user@domain: password

f. -- insecure: This is nothing but skipping the unknown SSL certificates

12. How to follow HTTP Redirect?

# curl -L google.com

Note: Using the 'curl -L' option will help you to get a response to the redirected website. For instance, the abc.com site was redirected to xyz.com and if someone hits 'curl abc.com' in the Terminal, then it will popup an error like "301 Moved" OR "301 Moved Permanently" OR "The document has moved".
To get rid of this error, we can add the '-L' flag, then it will redirect you to xyz.com and get a response. For testing, you can use google.com or any redirecting site with or without the '-L' option to understand.

13. How to download a file which is modified before/after a particular time?

After:

curl -z 2-Jul-19 https://www.linuxteck.com/abc.html

Before:

curl -z -2-Jul-19 https://www.linuxteck.com/abc.html

Note: Using the '-z' option, we can download files from websites that are modified either before or after a specific time mentioned with the above command. In the above examples, I have added two commands (After & Before). For instance, if the file abc.html was modified after 2-Jul-19, then you can use the 1st command stated above downloading the file and if it was modified before 2-Jul-19, then you can use the 2nd the command stated above.
The minus (-) sign in front of the data field is to find and download the file if it was modified just before the time mentioned. That's it.

14. How to get a definition of the word using the DICT protocol?

# curl dict://dict.org/d:computer

15 Basic Curl Command In Linux With Practical Examples | LinuxTeck (9)

Note: The output is pretty lengthy, hence I pasted only the first few lines. Please do the test on your end and see the results/output. The DICT protocol is used to get the definition of words. In curl command, we need to add the " dict protocol + the dictionary URL + word for the definition. In the above examples, I used 'dict.org' as the Directory URL and 'd: computer' is the word for the meaning. It listed the meaning of the word "Computer".

There are plenty of dictionaries available on the Internet, use the following command to list down all in Terminal.

# curl dict://dict.org/show:db

15 Basic Curl Command In Linux With Practical Examples | LinuxTeck (10)

15. How to transfer the data using Proxy?

# curl -x proxy.example.com:3128 -O https://www.linuxteck.com/abc.html

Note: Using the'-x' option with the IP address OR FQDN with the port of the proxy server you can download/transfer content from a website. In the above example, you can see that the file "abc.html" has been downloaded using the proxyserver:3128 with port no of 3128.

I hope this article will help you to learn 'curl' commands with examples. Drop me your feedback/comments. If you like this article, kindly share it ?, so that it may help others as well.

Thank you!

Support My Work

Thank you for your support and for being a part of my journey, I would be very grateful if you could consider buying me a coffee. The contributions you make will help me to continue to produce quality content and enhance my readers' experience.

Thank you for your endless support!
15 Basic Curl Command In Linux With Practical Examples | LinuxTeck (2024)

References

Top Articles
Latest Posts
Recommended Articles
Article information

Author: Sen. Emmett Berge

Last Updated:

Views: 5493

Rating: 5 / 5 (60 voted)

Reviews: 83% of readers found this page helpful

Author information

Name: Sen. Emmett Berge

Birthday: 1993-06-17

Address: 787 Elvis Divide, Port Brice, OH 24507-6802

Phone: +9779049645255

Job: Senior Healthcare Specialist

Hobby: Cycling, Model building, Kitesurfing, Origami, Lapidary, Dance, Basketball

Introduction: My name is Sen. Emmett Berge, I am a funny, vast, charming, courageous, enthusiastic, jolly, famous person who loves writing and wants to share my knowledge and understanding with you.