Connect with us


mail Command in Linux/Unix with 10+ Examples [2020]

Last Updated on

Let’s Learn mail Command in Linux/Unix with Practical Examples :

The mail command in linux/unix is a powerful tool once system administrators get to know their way around it. You can use the shell to monitor processes, automate backups, and parse data.

Some command line utilities can be used for convenience when manipulating applications from the somewhat unfriendly screen. When the need to send an email via the command line option, there are numerous ways to go about it.

In this article, you will learn how to send and read emails using the popular commands and learn how to send mail using a shell script. It is also vital that you learn how to send Linux mail attachments. The root user should is the only authorized user who can install these mail packages.

The Common Mail Package Installations:

Command On Debian/Ubuntu On CentOS/RedHat
mailutils $ sudo apt-get install mailutils # yum install mailx
mutt $ sudo apt-get install mutt # yum install mutt
mpack $ sudo apt-get install mpack # yum install mpack
telnet $ sudo apt-get install xinetd telnetd # yum install telnet-server telnet
curl $ sudo apt-get install curl # yum install curl
sendmail $ sudo apt-get install sendmail # yum install sendmail
swaks $ sudo apt-get install swaks # yum install swaks

Some of the command line options taken by most mail commands are:

  • -s denotes the mail’s subject
  • -a for denoting attachment
  • -c for the copy email address (CC)
  • -b for the blind copy email address (BCC)

1. Using mail command in Linux

The Linux mail command in Linux/Unix is quite popular and is commonly used to send emails from the command line. Mail is installed as part of mailutils and mailx packages on Debian and Redhat systems respectively. The two commands process messages on the command line.
To install mail command in Debian and Ubuntu Systems, run

For RedHat & CentOS systems run

If the command is successfully installed, test the application by using the following format and press enter:

Replace with your email address.

After pressing ‘Enter’, you’ll be prompted for a Carbon Copy (Cc:) address.

If you wish not to include a copied address, proceed and hit ‘Enter’
Next, type the message or the body of the Email and hit ‘Enter’

Finally, Press Ctrl + D simultaneously to send the Email.

Alternatively, you can use the echo command to pipe the message you want to send to the mail command in Linux/Unix as shown below.

To send an email to many recipients run

Let’s assume you have the message that you want to send in a text file. How do you send it ?
To accomplish this, run the command below

You can create a text file as shown

Then add content to the file

Finally, send the message content

To send an attachment use the command below

The -a flag defines the file attachment.

2. Using the mailx Command in unix/linux

Mailx is the newer version of Linux mail command and was formerly referred to as nail in other implementations. Mailx has been around since 1986 and was incorporated into POSIX in the year 1992.

Mailx is part of the Debian’s mail compound package used for various scenarios. Users, system administrators, and developers can use this mail utility. The implementation of mailx also takes the same form as the mail command line syntax.

To install mailx in Debian / Ubuntu Systems run

To install mailx in RedHat & CentOS run

You may use the echo command to direct the output to the mail command without being prompted for CC and the message body as shown here:

3. Using the MUTT Command

Mutt is a lightweight Linux command line email client. Unlike the Linux mail command that can do basic stuff, mutt can send file attachments. Mutt also reads emails from POP/IMAP servers and connecting local users via the terminal.
To install mutt in Debian / Ubuntu Systems run

To install mutt in Redhat / CentOS Systems run

Here is how to use it. When using the mutt command, you can send an empty message with the < /dev/null right after the email address.

The mutt command supports the Linux mail attachment by using the –a option in this format.

The above example sends an attachment containing sql logs to the specified email address.
Mutt command recognizes file type and therefore will not send HTML file as plain text. For instance:

4. Using mpack Command

The mpack command is used to encode the file into MIME messages and sends them to one or several recipients, or it can even be used to post to different newsgroups.

To install mpack in Debian / Ubuntu Systems run

To install mpack in Redhat / CentOS Systems run

Using mpack to send email or attachment via command line is as simple as:

5. Using SSMTP Command

The sSMTP command allows the user to send emails from the SMTP server via the command line. For example, to send a test email to use the following syntax:

Hit CTRL+D to send the email.

6. Using the telnet Command

Telnet is a favourite of the system Administrators who use it to test remote port connectivity. It can also be used to login to the server remotely. Telnet is useful for Linux network troubleshooting email problems.

To install telnet in Debian/ Ubuntu Systems run

To install telnet in RedHat / CentOS Systems run

To listen to a port, you use the following format:

7. Using Sendmail

This command is another popular SMTP server used in many distributions.

To install sendmail in Debian/ Ubuntu Systems run

To install sendmail in RedHat / CentOS Systems run

You can use the following instructions to send email using the command:

The above command sends a file saved as email.txt in the temp folder.

8. Using the CURL Command

This utility is known for file transfers between servers and supports many protocols like the SMTP, POP3, HTTP, and the FTP. It mainly used because of its native PHP implementation meaning it supports the native server-side scripting language.

To install Curl in Debian/ Ubuntu Systems run

To install Curl in RedHat / CentOS Systems run

Sending an email with CURL will force you to set up the SMTP connection and turn on access for less secure apps.

The above command uses the –-url –-user flags to define SMTP connection settings. When using the –-ssl-reqd flag you must ensure that the connection is running on SSL or TLS. The command option requests the connection to be terminated if the server does not support a secure connection, i.e. SSL /TLS.

The –-mail-from flag specifies a single address that the issued email address should be used to send the mail, in this case it is The –-mail-rcpt flag denotes the recipient address, in our case, the mail will be delivered to . You can use this flag multiple times for different addresses.

The command option --upload-file is used to transfer the specific file “mail.txt” to a remote URL. If no file name is issued you must use a trailing / after the last directory to indicate no file name was given.

9. Using the Swaks Command

The swaks command is flexible, scriptable and a simple SMTP test utility. Very useful in handling SMTP features like the TLS and authentications.

To install swaks in Debian/ Ubuntu Systems run

To install swaks in RedHat / CentOS Systems run

A simple implementation of the swaks command is to use the following flags:

  • Server –s
  • The user –au
  • The password –ap
  • The address of the recipient
  • The –tls is necessary if you are connecting to port 587

10. Sending Mail from a Shell Script

With all the email command line basics covered, you should be ready to send your first mail using a shell script. Here is an example of a shell script that can send an email. The output of the command sends the status of your PC to the chosen email.

Save the content above on your Linux server and run it to send the output of the df –h command to your email. A better way of sending emails using a shell script is to let the script write the data to a text file and send it to the specified email. For example:

If you can remember the mutt command, here is how you can use it to send attached systems backups. The script below will send the directory as archived and use the mutt command to send it as an attachment. In this case, “echo” is used to add a blank space to the body of the email.

11. How to Read Mails in Linux

Reading emails from the terminal may not be as enjoyable as sending emails. The mail command in linux/unix will give you version of the mail program installed. All Linux messages are installed in personal mailboxes, for example if your name was Linus, your incoming mails will be stored in the /var/spool/mail/ directory. On the other hand, mails sent to the root user are by default sent to the /var/spool/mail/root folder. Reading mails from this folder utilises the command cat in the following format:

The most commonly used syntax utilizes the mail command in this format:

A simple output from the above command gives:

At the end of the output is a question mark that prompts for your input in the form of a command. Key in the number that you want as listed on the screen above and press enter. When done reading, press on letter Q to load the previous screen. When you are entirely done press letter Z followed by the enter key to bring your back to the list of emails. The mail command reads all emails from the “var/mail/” directory. Always make sure that you are reading from the correct user directory if your server hosts multiple domains.
All these commands should get you started with sending emails from the Linux terminal and understand the basic knowledge of using executable shell scripts. More details on these email commands and their respective flags are found on the “man page.”

How to Troubleshoot Mail Problems

Diagnosing email problems covers a broad range of services. Some errors are easy to handle while others may require some sort of analysis. If everything seems to be working okay, the next step is to check the email service logs found in the /var/log/maillog file. To view the last part of an email log, use the tail command line utility (by default tail without any option will give the last ten lines). To set the number of lines to view, use the following format:

The above command displays the last 30 lines of the maillog content. Use the log file to identify any visible error.

Checking mails that are sent through the system can be traced to the /var/spool/postfix directory. Within this directory, there are subdirectories each denoting an active, deferred or bounce state. Here are some of the common commands used when probing email issues:

Continue Reading
Click to comment

Leave a Reply

Your email address will not be published. Required fields are marked *


Linux sed command with usage examples [2020]

Last Updated on

Short for stream editor, the Linux sed command is a useful utility used for manipulation text output. You can use it for substituting text, finding and replacing text, searching text and so much more. The command accord you the ability to edit files without having to open them. In this tutorial, we look at various ways you can use the Linux sed command.

1) Replacing or substituting strings

To elaborate on how the command can be used for text manipulation, we are going to use a sample text file linuxgeek.txt with the content below:

To replace all instances of the word Unix with Linux, run the command:


Linux sed command

The ‘s’ flag stands for substitution. In the command above, the first instance of the word ‘Unix’ is replaced by ‘Linux’. By default, the substitution happens to the first string occurrence only, and not the subsequent occurrences.

2) Replace the nth occurrence of a word in a line

To replace the nth occurrence of a string in a file, you need to use the /nth flag. For example, to replace the 2nd occurrence of a string in a line, issue the command:


In the example above, the second instance of the string ‘Unix’ has been replaced by ‘Linux’ in the 1st and 4th lines.

3. Substitute all instances of a string in a file

If you want to replace all instances of the string to be substituted, in this case, ‘Unix’ use the /g option. The ‘g’ stands for global and instructs sed to replace all the instances of the string.


4) Replace a string on a specific line number

Additionally, you can instruct the Linux sed command to replace the keyword in a particular line. For example to replace the string in the 4th line only, use the command:


Linux sed command

As observed, only the first instance is substituted. To substitute all the occurrences of the string, simple append ‘g’ after the last forward slash as shown:


Linux sed command

5) Substitute a string in a range of lines

You can also opt to replace the search keyword for a range of lines, for example between lines 1 and 3. To accomplish this, issue the command:


From the output above, we can observe that the substitution has only occurred in lines 1-3. The last line remains unchanged.

6) Print lines where substitution has occurred

To print the lines where substitution of the lines has occurred, use the -n flag immediately after the sed command as shown:


7) Delete lines using Linux sed command

Sed command can also be used for deleting lines. This is possible using the ‘d’ flag. To delete the 3rd line, for example, run the command:


To delete the last line only in the file, we are going to run the command:

8) Delete the last line


9) Delete a range of lines

To delete a range of lines. for instance from 2 to 4 in a text file, run the command:


10) Add blank lines or spaces

To add a blank line after every line run the command:

linux sed command

This wraps up our tutorial today. We have showcased some of the commonly used cases of the stream editor sed command.

Continue Reading


cat command in Unix/Linux with 10+ examples [2020]

Last Updated on

Let’s Learn cat command in Unix/Linux with Practical Examples :

The cat command in Unix/Linux is one of the most commonly used Linux commands on a day-to-day basis whether by novices or experienced Linux users. cat is short for concatenating and is mainly used for creating either single or several files at an instance, or viewing the contents of a file. In this article, we dive deeper and explore the cat command in Unix/Linux with example usages.

Cat command in Linux with examples

The most basic syntax for using cat command is as shown below

Let’s now take a closer look at the options that are mostly used with the cat command.

1. To view file content using cat command

To have a peek at a file without any options, simply use the syntax

For instance, to check the contents of a file /etc/hosts/code> run the command:

Sample output

cat command in Unix/Linux

2. View Mutiple files in a single command

To view multiple files at a go with cat command, use the syntax:

For example

Sample output

cat command in Linux

3. Display line numbers using the -n option

To make your display neater, and more presentable, you may want to number the lines of your output. To achieve this, use the -n option as shown below

For instance

Sample output

cat command in Unix/Linux

4. Create a file using the cat command

To create a file using cat command use the syntax

Next, type the contents of the file and finally hit CTRL +D to save the file

cat command in Linux create a new file

5. Copy contents of one file onto another

With cat command, you can easily copy file contents of one file into another using the standard redirection operator > as shown below.

If the file being copied to does not exist, it will be created automatically.

cat command in Linux


Extra caution should be taken while using the standard redirection operator because it overwrites the contents of an existing file.

6. Redirect several files into one file

Similarly, you can redirect content from multiple files into one file using the syntax:

Sample output

7. Appending text to a file

if you want to append text and not overwrite the existing content, use the double greater sign symbol (>>). The content of one file will be added or appended at the end of the next text file.

8. Redirect standard input using redirection operator

you can use the redirection operator less than (<) to read contents from a file. The syntax for this is:

Sample output

9. Display the ‘$’ sign at the end of every line

If you wish to display the $ at the end of every line, use the -e option as shown below:

Sample output

From the output above, you can see that there a dollar sign ($) at the end of every file.

10. Display all files of a certain type

To display the content of all files of a certain file type, for example, text files use the wildcard symbol as seen in the command below

Sample output

As you can see from the output above, the command displays all content from all the text files with a .txt file extension.

Take away

In this article, we demonstrated the usage of cat command alongside some helpful examples and tips. The cat command is usually helpful in creating and viewing text files as well as appending content at the end of a file. We do hope that this tutorial was helpful. Fee free to try out some of the commands.

Continue Reading


Whereis command in Linux with 10+ Examples [2020]

Last Updated on

Let’s Learn whereis command in Linux with Simple Examples :

While working away on the command-line, one might need to find out the location of a command or binary file. The find command can be used for this task, but it is painfully slow and ends up taking much of your time and may also provide undesired results. The whereis command in Linux is ideal for quickly finding the location of a binary or source file in a system.

Whereis command in Linux is preferred due to its speed and accuracy in finding out the location of a command or binary files. More importantly, running the whereis command doesn’t require you to have root privileges. Let’s dive in and take a look at the whereis command usage with examples.

Whereis command usage in Linux

The basic syntax of the whereis command is:

1) Find the location of a command

To find out the location and man pages of a Linux command for instance,mkdir run the command

Sample output

whereis command in linux

2) Search for specific files/manuals

If you wish narrow down your search specifically to the binary file, use the -b option as shown in the command below.

Sample output

whereis command usage

To search for man pages only use the -m option as shown.

Sample output

3) View paths that whereis uses for searching

To take a quick peek at the directories that whereis command traverses while searching for command , files and man pages, use the -l option.

Sample output

whereis command in linux

4) Limit the search depth for whereis command

Usually, whereis command searches for commands and files in well-defined, hard-coded paths. However, you can limit the search depth using the -B option. For instance, to limit whereis to search binary files up to /bin, use the -B option as shown:

the -f option terminates the directory list whilst signaling the beginning of file names.

To limit the search directory for man pages, use the -M option as shown

Sample output

5) Check whereis version

if you wish to check the version of whereis command, use the -V option or –version flag as shown.


Sample output

whereis command usage

6) Display whereis help options

To view the help page section that gives more insight on the options that can be used by whereis command, use the -h option or –help flag.


Sample output

And with that, we come to the end of our tutorial. We welcome you to try out the commands and get back to us with your findings.

Continue Reading


Copyright © 2019