If you’re new to Linux, understanding Bash (the Bourne Again SHell) is one of the most important skills you can learn. Bash lets you communicate with your system through text-based commands, helping you manage files, directories, and processes efficiently.
In this guide, we’ll walk through the most useful Bash commands — ls
, cat
, rmdir
, rm
, mkdir
, cp
, w
, nano
, and ps
— along with Input/Output (I/O) operators that let you control how data flows in and out of commands.
1. ls — List Directory Contents
The ls
command lists files and directories in your current working location.
Syntax:
ls [options] [directory]
Examples:
ls
→ Lists files and folders in the current directory.ls -l
→ Displays a detailed list with file permissions, owner, and size.ls -a
→ Shows all files, including hidden ones (those starting with.
).ls /home
→ Lists contents of the/home
directory.
Tip: Combine options, e.g., ls -la
for a detailed list including hidden files.
2. cat — View or Combine File Contents
The cat
command (short for concatenate) lets you read, create, or merge files.
Syntax:
cat [options] [file]
Examples:
cat file.txt
→ Displays the content of a file.cat file1.txt file2.txt > combined.txt
→ Merges two files into one.cat -n file.txt
→ Displays file content with line numbers.
Tip: Use less file.txt
for easier scrolling in long files.
3. mkdir — Create a Directory
Use mkdir
to create new directories.
Syntax:
mkdir [options] [directory_name]
Examples:
mkdir projects
→ Creates a folder namedprojects
.mkdir -p /home/user/docs/new
→ Creates nested directories if they don’t exist.
Tip: The -p
option prevents errors when creating multiple levels at once.
4. rmdir — Remove Empty Directories
This command removes empty directories.
Syntax:
rmdir [directory_name]
Examples:
rmdir test
→ Deletes the empty directorytest
.rmdir -p /home/user/docs/emptydir
→ Removes nested empty directories.
Tip: For non-empty directories, use rm -r
instead.
5. rm — Remove Files or Directories
Use rm
to delete files or directories. Be careful — this command permanently removes data.
Syntax:
rm [options] [file/directory]
Examples:
rm file.txt
→ Deletes a file.rm -i file.txt
→ Asks for confirmation before deleting.rm -r folder
→ Deletes a folder and its contents.rm -rf folder
→ Forcefully removes a directory without confirmation.
Warning: Avoid rm -rf /
— it can delete your entire system.
6. cp — Copy Files or Directories
The cp
command copies files and directories to a new location.
Syntax:
cp [options] source destination
Examples:
cp file.txt backup.txt
→ Copies a file.cp file.txt /home/user/
→ Copies a file to another directory.cp -r folder1/ folder2/
→ Copies folders and subfolders recursively.
Tip: Use -i
to prompt before overwriting existing files.
7. w — Display Logged-In Users
The w
command shows which users are logged in and what they’re doing.
Syntax:
w [options] [user]
Examples:
w
→ Lists all active users and their activities.w username
→ Displays details for a specific user.
Output includes:
- Username
- Terminal
- Login time
- Idle time
- Current process
Tip: Useful for monitoring shared servers or multi-user systems.
8. nano — Edit Text Files in Terminal
nano
is a simple text editor that runs directly inside the terminal.
Syntax:
nano [file_name]
Examples:
nano notes.txt
→ Opens or creates a text file.- Use Ctrl + O to save, Ctrl + X to exit.
Tip: Edit system files with admin rights using sudo nano /etc/hosts
.
9. ps — View Running Processes
The ps
command shows active processes and their details.
Syntax:
ps [options]
Examples:
ps
→ Lists processes for the current terminal session.ps -e
→ Displays all processes on the system.ps -ef
→ Shows full details including user, PID, and CPU usage.ps aux | grep nginx
→ Filters processes related to “nginx”.
Tip: Combine ps
with grep
to quickly find specific tasks.
10. Bash I/O Operators — Redirecting Input and Output
In Bash, I/O operators control where command input comes from and where output goes. They’re powerful tools for automating tasks and managing data flow.
Standard Streams
- stdin (0): Standard input (keyboard)
- stdout (1): Standard output (screen)
- stderr (2): Standard error output (error messages)
Common I/O Operators
1. Output Redirection (>
and >>
)
>
→ Redirects output to a file (overwrites it).>>
→ Appends output to a file.
Examples:
ls > files.txt
ls >> files.txt
echo "Hello Linux" > message.txt
2. Input Redirection (<
)
Redirects input from a file.
cat < file.txt
3. Error Redirection (2>
and 2>>
)
Redirects error messages to a file.
ls nofile 2> errors.txt
ls nofile 2>> errors.txt
4. Combine Output and Errors (&>
)
Sends both standard output and error messages to the same file.
ls /root /home &> output.txt
5. Piping (|
)
Sends the output of one command as input to another.
ls | grep txt
ps aux | grep apache
6. Here Document (<<
)
Feeds multiple lines of input into a command.
cat << EOF
Line 1
Line 2
EOF
Conclusion
Mastering these basic Bash commands and I/O operators is the foundation of working efficiently in Linux. With these tools, you can manage files, monitor processes, and redirect data like a professional system administrator.
Pro Tip: Use man command
(e.g., man ls
) or command --help
(e.g., cp --help
) to explore more advanced features and parameters.