Basic Linux Commands You Should Know

Last updated: April 26, 2022

Linux is a family of open-source operating systems, which are built upon the Linux Kernel. It is derived from UNIX and is also known as a UNIX-like operating system. Linux was released in 1991 by Linus Torvalds. You can use it for free, modify and redistribute it.

Linux is secure, fast, and powerful and is used by organizations to store their critical data. Most web hosting services and cloud infrastructure companies use Linux as their back-end. The good thing is you have lots of Linux distributions to choose from such as Ubuntu, Fedora, Debian, Mint, and Pop!_OS.

Although Linux distributions provide a graphical user interface, using the Linux command line interface (CLI) is more effective and efficient. CLI is basically a text-based interface to run commands or programs, manage files and interact with the system. CLI is a synonym for a terminal. Shell program run in the terminal to give command prompt. Popular shell programs are bash, sh, zsh, fish, and csh.

Basic Linux Commands

Let's learn here some of the most commonly used Linux commands that will help to run tasks easily, effectively, and more productive.

Have the terminal opened on your favorite Linux distribution to run the commands. Remember commands in Linux are case-sensitive. To open the terminal you can use press CTRL + ALT + T from the keyboard.

Here is the list of Linux basic commands you should know.

1. ls Command

ls is one of the most frequently used basic command in Linux. The ls command-line utility is used to list files and directories that exist inside a directory.

By default, when used without any options, ls lists only the contents of the current directory in alphabetical order without any additional information.


Type ls /home/bob/Project to see the contents of the directory Project.

You can use options with the ls command for variation in results:

  • ls -a lists hidden files along with other files and directories.
  • ls -al lists files and directories with file permissions, ownership, and size information.
  • ls -ltr list file names in the last modification time in reverse order.

The output of ls -al

-rw-r--r-- 1 bob developers 281 Apr  1  2020 /source/project/

The owner (ie bob) has read and write permissions, other members of the group have read permissions, and the rest of the world has read permissions on the file. The file is owned by the user named bob and belongs to the developers group. The total size of the file is 281 bytes.

2. cd Command

cd stands for change directory, which is used to change the current working directory. The cd command is used to navigate through Linux files and directories. You need to specify either the full path of the target directory or the directory name you want to change to.

If you are in the /home/bob/Documents directory and need to go to the Photos subdirectory, then type:

cd Photos

Use the absolute path to change directory, change to /home/bob/Pictures directory:

cd /home/bob/Pictures

Some shortcuts that you can use for easy navigation:

  • cd .. moves one directory up.
  • cd moves to the home folder.
  • cd - switch to the parent directory

3. mkdir Command

The mkdir stands for make directory. The mkdir command is used to create a new directory in Linux.

When you type mkdir Pop, it will create a directory named Pop in the current directory. Whereas, the following Linux command will create a directory named Source inside the Documents directory:

mkdir Documents/Source

Use -p option to create the entire directory structure. For example to create a directory 2020 and its sub-directory Source in the existing Documents directory, type:

mkdir -p Documents/2020/Source

4. cat Command

The cat stands for concatenate. It is one of the basic command in the Linux operating system. The cat command is used to concatenate files, view the content of a file, create a new file, or redirect output in files.

Type cat command followed by a file name to see the contents of the file.

cat users.txt

The cat command can also be used to perform some advanced operations, such as:

To create a new file named file1.txt, type:

cat > file1.txt

The existing contents of the department.txt file will be overwritten by the contents of users.txt:

cat users.txt > department.txt

To convert the content of file users.txt from lowercase to uppercase and store it in output.txt, use the following command:

cat users.txt | tr a-z A-Z > output.txt

5. df Command

The df stands for disk filesystem. It is used to get a complete summary of used and available disk space of the file system in your Linux computer.

Options can be used with the df command to get variations in the output such as:

  • -a displays all file systems.
  • -h displays output in a human-readable format.
  • -T displays file system type.
  • -m displays output in mebibyte (MiB).
  • -g displays output in gibibyte (GiB).

Check disk usage information of a particular file system, type:

df /dev/sda5
Filesystem 1K-blocks Used        Available Use%  Mounted on

/dev/sda5   40503552    9132528   29283856  24% /

Here, /dev/sda5 has a total size of 40503552, the used size is 9132528, and the available size is 29283856. The file system has used 24% of the total allocated space and it is mounted on /.

6. du Command

Use the du (stands for disk usage) command to gain disk usage information of a particular file or directory on your Linux computer. By default, the du command displays disk usage information in the number of blocks used by a file. Use the -h option with this command to display output in a human-readable format.

Specify the file name or directory name to display its disk usage.

du -h /var/log/apache/access.log
du -h /var/log

7. cp Command

The cp command is used to copy files and directories from the source directory to another location. By default, it copies only the given file or directory, but you can use the -r option to copy a directory along with its subdirectories.

The following command copy the file users.txt from the current working directory to the Documents/records directory.

cp users.txt Documents/records/

To create a copy of the file file2.txt with the name file2_backup.txt in your current working directory.

cp file2.txt file2_backup.txt

8. mv Command

Use the mv (stands for move) command to move files or directories from the source to the destination directory. It can be used to rename a file/directory.

The following mv command moves the users.txt file to the Documents/records directory.

mv users.txt Documents/records

To rename the employees.txt file to users.txt:

mv employees.txt users.txt

9. rm Command

Use the rm (stands for remove) command to remove the given file, multiple files, or a group/type of files. By default, the rm command does not require user confirmation to delete a file, but you can enable user confirmation using the -i option.

Options can be used with the rm command for the following needs:

  • -i deletes files in interactive mode.
  • -f forcefully removes the write-protected file.
  • -r recursively deletes files, directories, and subdirectories in the specified parent directory.
  • -d deletes the specified empty directory.

Removes the file named documents.txt from the current directory:

rm documents.txt

To remove directories and their contents recursively, type:

rm -r Documents

To remove the directory without being prompted, type:

rm -rf dir1

The rm-rf command should be used with caution.

10. Man & help Command

Use the man command to display the user manual of the Linux command. Almost all the Linux commands have man pages, which is a kind of documentation that is displayed on the terminal. The Linux commands manual page explains what a particular command does, syntax, and accepted arguments.

Type man followed by the command name to display the command user manual page.

man mkdir

Similarly, you can also use the –-help option to display the help pages of a particular command.

mkdir --help

11. chmod command

The chmod command is used to change the mode (permission) of a file. The basic permissions a file can have are r(read), w(write), and x(execute).

Using numeric mode you can set read (value is 4), write (value is 2 and execute (value is 1) permissions for owner, group and all others.

For example to give file1.txt owner and group read and write permissions and only read permission to all others, type:

chmod 664 file1.txt

You may use -R option to recursively set permissions for all files and directories in a given directory.

To make the file executable, type:

chmod +x

12. chown command

The chown command is used to change file and directory ownership in Linux.

To change both owner and group of file, type:

chown ownername:groupname filename

You may use -R option to recursively set ownership for all files and directories in a given directory.

13. pwd Command

pwd stands for present working directory. The pwd command prints the absolute path of the current directory on your Linux terminal. The present working directory is the directory in which you are currently working.


In the example /home/linuxopsys is the current directory.

14. uname Command

Use the uname (stands for UNIX name) command to display fundamental information about your Linux computer. By default, this command prints only the type of the operating system, such as Linux. You can use different options with this command to print other information about your computer such as OS, kernel version, machine name, network, and so on.

  • -a display all information about your computer.
  • -s display Linux kernel name.
  • -m displays machine information.
  • -i display hardware platform information.

The output of uname -a command on my machine:

Linux linux 5.13.0-37-generic #42~20.04.1-Ubuntu SMP Tue Mar 15 15:44:28 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

All system information including OS type, name, user name, kernel release, and hardware platform is displayed.

15. who Command

Use the who command to list currently logged-in users on your Linux computer. This command also supports few options to display specific information, such as:

  • -a displays all available information about logged-in users.
  • -b displays boot time.
  • -H displays header names.

The output of who command looks like this:

root     pts/0        2022-04-28 01:30 (
bob      pts/1        2022-04-28 02:40 (
linuxopsys pts/2        2022-04-28 02:05 (

It shows 3 users with their logged in date and time.

16. uptime Command

Use the uptime command to display the current system time, the duration for which the system has been up, the number of logged-in users, and average load time for 1, 5, and 15-minute intervals. This Linux command retrieves information from the /proc/uptime file.

The output of uptime command from my system:

17:11:28 up 6 days,  3:23,  1 user,  load average: 0.00, 0.01, 0.00

17. hostname Command

Use hostname command to display the Domain Name System (DNS) name and set the hostname or Network Information System (NIS) of your system.

Display host name and domain name, type:


Some distributions allow you to set hostname for your machine, type:

sudo hostname NEW_HOSTNAME

You can replace NEW_HOSTNAME with your actual machine name.

18. top, htop Command

Use the top or htop commands to monitor the server’s processes or vital system resources in real-time. Both these commands are used for the same purpose, but their output is different. The default output displays information about top CPU-consuming processes along with RAM usage.


The command also displays system up time, load average, number of logged in users, memory, total tasks, and running tasks.

Htop is an improved version of the top command. It display colorful text and allows for output scrolling. Htop doesnt comes preinstalled on most Linux distros.

19. touch Command

Use the touch command to create an empty file on your Linux computer, or to modify the timestamp of a file. The primary function of this command is to update file timestamps, but it is most commonly used to create a file. The touch command can update access and modification timestamps of the specified file, and create the file if it does not already exist.

To create a new empty file named install.doc, type:

touch install.doc

In this example, the modification time of the file updates.txt is updated to the current time.

touch -m updates.txt

20. zip and unzip Command

Use the zip command-line utility to create an archive of files, and the unzip command for uncompressing a zip archive. The zip command can also be used to modify a zip archive.

To create a zip archive named from the specified files:

zip output.txt install.doc newfiles.txt updates.txt

To extract the contents of the archive to the current directory: 


21. tar Command

Use the tar command to create a compressed or uncompressed archive of specified files. You can also use this command to modify, maintain, or extract tar archives. Tar archives can combine multiple files or directories into a single file.

The tar command provides multiple options to create a tarball:

  • -c creates an archive.
  • -x extracts the archive.
  • -f assigns filename to the archive.
  • -t displays files in an archive.

To create an uncompressed archive file named users.tar of the specified files.

tar cf users.tar updates.txt newfiles.txt

22. ln Command

Use the ln command for creating hard and soft links to existing files or directories. By default, this command creates hard links. Specify the -s option to create symbolic or soft links.

To create a symbolic link from the updates.txt file to the newitems.txt file:

ln -s updates.txt newitems.txt

Here we can see the symlink that we created in the previous example:

ls -l newitems.txt
lrwxrwxrwx 1 linuxopsys linuxopsys 11 Apr 14 13:53 newitems.txt -> updates.txt

23. sudo Command

Use the sudo command to execute commands as root or another Linux user, as specified in your security policy. This command allows you to execute commands that otherwise require a root password.

Specify the command that requires root permissions after the sudo command. To run the useradd command as sudo to create a new user named bob:

$ sudo useradd bob

24. apt Command

Use the apt (stands for advanced package tool) command to install, update, or delete packages on Ubuntu and Debian Linux distributions.

Some of the most commonly used apt commands are apt update, apt upgrade, apt install, apt remove, apt list, and apt search.

To update the package index by pulling the latest updates from the APT repository:

sudo apt update

To install the latest updates to all Linux packages:

sudo apt upgrade

Let's use apt command to install a package. To install the htop application, type:

sudo apt install htop

25. dnf Command

DNF is a software package manager and is the successor to YUM (Yellow-Dog Updater Modified). Use the dnf (stand for dandified yum) command to install, update, or delete packages on Red Hat-based Linux distributions.

To install the latest updates to all Red Hat Linux packages:

sudo dnf upgrade

To remove the package epel-release:

sudo dnf remove epel-release

26. useradd Command

Use the useradd command to add new users to your Linux system. This command enables you to add a new user with specific group preferences, user ID (UID), and login shell. When you run this command without any option, it creates a user using the default account settings specified in the /etc/default/useradd file.

To create a new user named steve that has GID 1000, and UID 1021, and will expire on 31st May 2022:

sudo useradd -g 1000 -u 1021 -e 2022-05-31 steve

27. groupadd Command

Use the groupadd command to add a new group to your Linux system. This command enables you to add a new group with specific group preferences and override default /etc/login.def default values. When you create a new user group using this command, it adds a new entry in the /etc/group file.

To create a new group named docs that has GID 1018:

sudo groupadd -g 1018 docs

28. usermod Command

Use the usermod command to change the properties of existing users in Linux. Using this command, you can modify the password, primary group, login directory, expiry date, and other user attributes. You can also add a user to an existing group using this command.

To add the user steve to sudo group, type:

sudo usermod -aG sudo steve

29. ps Command

Use the ps command to check the status of the active processes on your Linux system, and display information about these processes. Administrators can use this information to kill the processes or to set process priorities.

To show all running processes in the default output format:


To display all running processes in full format: 

ps -af

30. kill Command

Use the kill command to manually terminate a given process. It is located in /bin/kill and it sends signals to another process that terminates the specified process.

To display all available signals:

kill -l

To kill the PID 257:

kill 257

31. ping Command

Use the ping, also known as the Packet Internet Groper, command to check network connectivity between two computers. You can use this command to troubleshoot connectivity, name resolution, and reachability. It accepts an IP address or an URL as an input.

To check network connectivity to IP address and send 5 data packets:

ping -c 5

32. vi and nano Command

Use the vi and nano commands to create a new file, read a file, or edit an existing file. Vi is the default text editor for several Linux distributions and it is very simple to use. Nano is a terminal-based text editor that is ideal for making some changes to any files or creating basic plain text files.

To open the existing file or to create a new file:

vi updates.txt


nano filename.txt

33. history Command

Use the history command to view the history of all the previously executed terminal commands that you run. The maximum number of entries that BASH should store can be defined in your .bashrc file. Linux commands that you execute are considered events and every event is associated with an event number. You can recall, remove, or change commands using their event numbers.

To list the last 5 commands, including itself:

history 5

To remove the history of event number 1525:

history -d 1525

Note: history command behavior may change depending on the shell you are being used.

34. passwd Command

Use the passwd command to change the user account password. A normal user can change only their own password, but the root user or user with sudo privileges can change the password of any user account. This command can also be used to delete or expire an account password.

To change the password for the user bob:

sudo passwd bob

35. which Command

Use the which command to locate the executable file of the specified command. This command searches for the executable file location in the $PATH environment variable. The which command returns any of the following status:

To display executable file locations for useradd command, type:

which useradd

36. less Command

Use the less command to view the contents of a file one screen at a time, starting at the beginning. This command provides the capability of both backward and forward navigation. The less command has quick file access because it does not access the entire file if the file is large.

To display the contents of the updates.txt file one screen at a time.

less updates.txt

37. tail Command

Use the tail command to view the contents of a file, starting at the bottom. By default, it displays the last 10 lines of the file, but you can change this default behavior. The tail command can also be used to monitor the file. When you add new lines to the file, then the display is updated.

To display the last 10 lines of the file updates.txt:

tail updates.txt

To display the last 15 lines of the file access.log:

tail -n 15 access.log

38. head Command

Use the head command to display the contents of a file, starting at the beginning. By default, it displays the first 10 lines of the file, but you can change this default behavior.

To display the first 10 lines of the file updates.txt:

head updates.txt

39. grep Command

Use the grep, also known as global regular expression print, the command to search for a word or string of characters in a file or directory. The search pattern is termed regular expression. When the grep command finds a matching string in the file, then this command prints the line that contains the string.

To search for the string 'welcome' in the file log.txt:

grep welcome log.txt

40. diff Command

Use the diff command to do a line-by-line comparison of two files and display their differences. You can also use this command to compare the contents of Linux directories.

To show differences between two files named and, type

diff /dir1/ /dir2/

To show differences between Documents and Docs directories.

diff Documents/ Docs

41. find Command

Use the find command to search and locate the files and directories that match the specified conditions. This command enables you to search using file or folder name, creation date, modification date, permissions, and owner.

To search the file named in the /home/linuxopsys/projects directory, type:

find /home/linuxopsys/projects -type f -name

To search for files with given permissions in the current directory:

find . -perm 664

42. echo Command

Use the echo command to display the specified text or string on the terminal. This command is most commonly used in batch files and scripting languages to display standard text output. You can also use this command to display the values of an environment variable.

To print the string “This is a sample string” on the terminal:

echo "This is a sample string"
This is a sample string

To print the value of the PATH environment variable:

echo $PATH



43. shutdown, reboot Command

Use the shutdown command to gracefully and securely shut down your Linux computer.

Use the reboot command to restart your Linux computer. You can also use the shutdown -r command to restart your computer using the shutdown command.  

To restart your system after 5 minutes:

shutdown -r +5

To immediately restart your computer:


44. Alias

The Alias command allows you to define temporary aliases for current sessions. It allows you to execute one or more commands.

Create a new alias named 'lsall', type:

alais lsall="ls -a"

Lists all aliases for the current session:


Note: Alias behavior may change depending on the shell you are being used. It is traditionally used in bash shell.

45. exit

The exit command ends a shell session and closes the terminal you are using


46. wget command

The wget command is used to retrieve or download content from the internet.

To download WordPress using wget, type:


The latest.tar.gz file will be downloaded to the current directory.

47. clear command

The clear command is used in Linux to clear the terminal screen. This is similar to cls command in other operating systems.



For a beginner to get started is to learn a few basic commands. If you are unsure about any commands always refer to its man pages.

Thanks for reading, please share your favorite Linux commands in the comment section.



Please add comments below to provide the author your ideas, appreciation and feedback.

Leave a Reply

Leave a Comment