Bash Commands in Linux With Examples

July 31, 2023

Welcome to our guide on "Bash Commands in Linux." In this article, I'll introduce you to some important tools you can use in the Linux terminal. We'll explore variables in bash, and some basic operations used along with bash like copying files, displaying text, moving and deleting files, listing directories, and searching for specific words. These commands will boost your productivity. So, welcome aboard as we embark on an exciting journey into the world of Bash commands in Linux! Let's get started!

Bash is a shell in Linux. It is default shell in most of the Linux based distros. Until now, even Mac used it as default shell. Using it you can execute any command.

It is a POSIX compliant shell so whatever commands I teach you here most of them will be applicable in other POSIX compliant shells like dash, zsh, etc.

📝 Note: These commands have been tasted on Linux. But they should work with any Unix based system such as Mac and Windows Subsystem for Linux.

Variables in bash commands in Linux

To learn about what are variables, how to define them, put a value inside a variable and get a value out of variable, look at this article.

Here, I am going to describe these in short.

Variables are defined in the following way:

[ajay@legion ~]$ variable=value

Examples for Integer:

[ajay@legion ~]$ x=3

Examples for String:

[ajay@legion ~]$ y="ajay_yadav"

It is good to always use quotes around your values, otherwise, you might get errors caused by "splitting", or "substitution". They are not errors per se. These splitting and substitution have a special application. I will talk about them in later articles.. Example:

[ajay@legion ~]$ y="ajay yadav"

Output of a variable in bash shell in Linux

To get the value of a variable, prepend $ just before it. For example, to get the value of x, use $x.

[ajay@legion ~]$ x=3
[ajay@legion ~]$ echo "$x"
3

Another useful bash feature is brash expansion. Have a look about that in this article.

Some important tools used with bash command in Linux

Commands like pwd, cd, mv, cp, touch, rm, echo, ls, grep etc. are very useful basic commands in Linux. They are not part of bash per se. But they are used very often. So, please learn them as you learn bash. I am going to give you short description of each.

😄 Note: Most of these commands like mv, cp, rm works in the same way. You will see as I describe all of them below.

copy command in Linux

Here are the few copy command cp I use while working with bash commands in Linux. To learn about the cp command in detail, look at this article.

To copy file1's content into file2 execute:

[ajay@legion ~]$ cp file1 file2

If file2 exists, its contents are replaced. If you use directory name at the place of file2, file1 will be copied to that directory.

For verbose output, use -v:

[ajay@legion ~]$ cp -v ~/Downloads/10th.pdf .
'/home/ajay/Downloads/10th.pdf' -> './10th.pdf'

For cp in interactive mode, use -i:

[ajay@legion ~]$ cp -v ~/Downloads/10th.pdf .
'/home/ajay/Downloads/10th.pdf' -> './10th.pdf'

[ajay@legion ~]$ cp -i ~/Downloads/10th.pdf .
cp: overwrite './10th.pdf'? y
[ajay@legion ~]$ cp -vi ~/Downloads/10th.pdf .
'/home/ajay/Downloads/10th.pdf' -> './10th.pdf'

[ajay@legion ~]$ cp -vi ~/Downloads/10th.pdf .
cp: overwrite './10th.pdf'? y
'/home/ajay/Downloads/10th.pdf' -> './10th.pdf'

To copy one directory into another, use -r or --recursive:

[ajay@legion ~]$ cp -r /tmp/from/ /tmp/to/

echo command in Linux

To learn about the echo in detail, look at this article on echo.

The echo command in Linux is used to display text or output messages to the terminal. It is a simple and versatile command that comes in handy while writing bash scripts.

To display a message, just use echo followed by the text you want to show:

$ echo "Hello, World!"
Hello, World!

The echo command can also be used to print the values of variables:

$ name="Alice"
$ echo "Hello, $name!"
Hello, Alice!

Moreover, you can redirect the output of echo to a file using the > operator:

$ echo "This will be saved in a file." > output.txt

The text "This will be saved in a file." will be written to a file named output.txt.

echo is often used in bash scripts to provide information to users, display status messages, or generate program output. It is a fundamental command that simplifies displaying text and variables in the terminal.

pwd command in Linux

Another useful command in Linux is pwd, which stands for "Print Working Directory." When you run the pwd command, it displays the full path of your current working directory:

[ajay@legion ~]$ pwd
/home/ajay

This is particularly handy when you're navigating through different directories and want to know your current location. For instance, if you move to a subdirectory like Documents, the pwd command will show:

[ajay@legion ~]$ cd Documents
[ajay@legion Documents]$ pwd
/home/ajay/Documents

The pwd command becomes essential when dealing with complex file structures, or whenever you need to reference your current location in the bash scripts. It provides a clear and concise way to keep track of your working directory and facilitates smooth navigation within the Linux environment.

cd command in Linux

Let's explore another fundamental command in the Linux terminal – cd, which stands for "Change Directory."

With the cd command, you can navigate through the file system and switch between different directories effortlessly. To change the working directory to a specific location, simply type cd followed by the desired directory path:

[ajay@legion ~]$ cd Documents

After executing the above command, you will find yourself in the "Documents" directory. To go back to the previous directory, you can use cd with the .. notation, like this:

[ajay@legion Documents]$ cd ..
[ajay@legion ~]$

This takes you back to your home directory. If you ever need to return to the home directory from anywhere else, just type cd with no arguments:

[ajay@legion Downloads]$ cd
[ajay@legion ~]$

Moving and Renaming Files with mv

The mv command in Linux is used to move or rename files and directories. It allows you to change the location or name of a file within the file system. Here's how you can use the mv command:

To move a file or directory from one location to another:

mv source_path destination_path

For example, to move a file named file1.txt from the current directory to the Documents directory:

mv file1.txt Documents/

This will move file1.txt to the Documents directory.

To rename a file or directory:

mv old_name new_name

For instance, if you want to rename file1.txt to new_file.txt:

mv file1.txt new_file.txt

This will rename the file to new_file.txt.

If a file with the same name exists in the destination directory while moving, mv will overwrite it. To avoid accidental overwrites, use the -i (interactive) option:

mv -i source_path destination_path

This will prompt you before overwriting any existing files.

For a more verbose output, you can use the -v (verbose) option:

mv -v source_path destination_path

This will display each action taken by mv, providing you with more details.

Keep in mind that if the destination path is a directory, the source will be moved into that directory. However, if the destination path is a non-existing directory, mv will rename the source file to the new name.

Using the mv command, you can easily organize and manage your files and directories in the bash script.

touch command in Linux

Another useful tool is touch used with bash commands in Linux. If you're interested in a detailed explanation of the touch command, you can refer to this informative article.

The touch command in Linux is a versatile utility used primarily to create new, empty files or update the timestamp of existing files. It is particularly useful when you need to create a new file quickly or modify the last access and modification times of a file.

To create a new empty file, simply type touch followed by the desired file name:

[ajay@legion ~]$ touch new_file.txt

This command will generate a new file named new_file.txt in your current working directory. If the file already exists, the touch command will update its modification timestamp to the current time without altering the file's content.

Moreover, touch allows you to set specific timestamps for files using the -t option. The following example shows how to set a custom timestamp for a file:

[ajay@legion ~]$ touch -t 202207221030 custom_timestamp.txt

In this case, the custom_timestamp.txt file will have a timestamp of July 22, 2022, at 10:30 AM.

rm command in Linux

The rm command, which stands for "remove," is a powerful and potentially dangerous tool used to delete files and directories in the Linux terminal. It allows you to permanently remove files from the file system, and it's essential to exercise caution while using this command, as deleted files cannot be easily recovered.

To delete a single file, use the rm command followed by the file name:

[ajay@legion ~]$ rm unwanted_file.txt

Once executed, the file unwanted_file.txt will be deleted, and it cannot be retrieved from the system's trash or recycle bin.

To remove multiple files simultaneously, you can specify them as arguments with space separation:

[ajay@legion ~]$ rm file1.txt file2.txt file3.txt

The rm command also supports the use of wildcard characters, such as *, to remove files based on specific patterns:

[ajay@legion ~]$ rm *.txt

In this example, all files with the .txt extension in the current directory will be deleted.

If you want to remove directories, you can use the -r or --recursive option with rm:

[ajay@legion ~]$ rm -r unwanted_directory/

The -r option ensures that all files and subdirectories within the specified directory are recursively removed.

To minimize the risk of accidental deletions, you can use the -i or --interactive option, which prompts you for confirmation before removing each file:

[ajay@legion ~]$ rm -i sensitive_file.txt
rm: remove regular file 'sensitive_file.txt'? y

Always double-check the files and directories you are about to delete, especially when using the -r or -i options.

ls command in Linux

The ls command is one of the most basic and frequently used with bash commands in Linux. It stands for "list" and is used to display the contents of a directory. By default, when you run the ls command without any arguments, it lists the files and directories in your current working directory:

[ajay@legion ~]$ ls
Desktop    Documents    Downloads    Music    Pictures    Videos

The output displays the names of the files and subdirectories present in the current directory.

To list the contents of a specific directory, simply provide the directory path as an argument to the ls command:

[ajay@legion ~]$ ls /path/to/directory
file1.txt   file2.txt   subdirectory1   subdirectory2

The ls command also offers several useful options to customize the listing output. For example, you can use the -l option to obtain detailed information about the files and directories, such as permissions, owner, size, and modification date:

[ajay@legion ~]$ ls -l
-rw-r--r-- 1 ajay users  4096 Jul 28 10:15 file1.txt
-rw-r--r-- 1 ajay users  2048 Jul 28 10:20 file2.txt
drwxr-xr-x 2 ajay users  4096 Jul 28 10:30 subdirectory1
drwxr-xr-x 3 ajay users  4096 Jul 28 10:35 subdirectory2

For a more human-readable file size representation, use the -h (human-readable) option:

[ajay@legion ~]$ ls -lh
-rw-r--r-- 1 ajay users 4.0K Jul 28 10:15 file1.txt
-rw-r--r-- 1 ajay users 2.0K Jul 28 10:20 file2.txt
drwxr-xr-x 2 ajay users 4.0K Jul 28 10:30 subdirectory1
drwxr-xr-x 3 ajay users 4.0K Jul 28 10:35 subdirectory2

You can also use the -a (all) option to display hidden files (those starting with a dot):

[ajay@legion ~]$ ls -a
.        ..        .config   .bashrc   file1.txt    file2.txt

grep command in Linux

let's explore the grep command in Linux. For a more comprehensive understanding of the grep command, you can refer to this informative article.

The grep command is a powerful text search tool used in Linux to find patterns or specific strings within files or streams of text. It stands for "Global Regular Expression Print," and it's one of the most versatile commands for text processing and filtering.

The basic usage of grep is as follows:

[ajay@legion ~]$ grep pattern file.txt

In this example, pattern represents the text you want to search for, and file.txt is the file you want to search within. The grep command will then display all lines in file.txt that contain the specified pattern.

For example, let's say we have a file named sample.txt with the following content:

Hello, this is a sample text file.
This file contains some sample data.
Please search for the word "sample".
This is fourth line

To find all occurrences of the word "sample" in sample.txt, you would run:

[ajay@legion ~]$ grep "sample" sample.txt
Hello, this is a sample text file.
This file contains some sample data.
Please search for the word "sample".

By default, grep is case-sensitive. However, you can use the -i option to perform a case-insensitive search:

[ajay@legion ~]$ grep -i "hello" sample.txt
Hello, this is a sample text file.

grep is highly flexible and supports regular expressions, allowing you to perform complex pattern matching. For example, using regular expressions, you can search for lines starting with a specific word:

[ajay@legion ~]$ grep "^Hello" sample.txt
Hello, this is a sample text file.

To count the number of occurrences of a pattern, use the -c option:

[ajay@legion ~]$ grep -c "sample" sample.txt
3

In this case, grep returns the number "3," indicating that the word "sample" appears thrice in the sample.txt file.

The grep command is an invaluable tool for searching and extracting information from text files efficiently. It is widely used in scripting, log analysis, and various data processing tasks, making it a must-know command for Linux users.

Another most widely used command in bash is printf - learn about it here.

Conclusion

That's all about folks. Most of these tools are used frequently with bash commands in Linux. So learn more and more about them. If you have any suggestions/queries, read the man page at man bash, man ls, man cp and other relavant commands related to bash. Or, you put them in the command section below. If you are not satisfied with the features provided by the bash, you can look at another POSIX compliant shell but much powerful than the bash - zsh.