Linux Master Course
📚 Table of Contents – Linux Master Course
🔹 Chapter 1: Introduction to Linux
● What is Linux and why it matters in tech careers
● Linux vs Windows: Key differences
● Overview of Linux distributions (Ubuntu, CentOS, etc.)
● Setting up WSL (Windows Subsystem for Linux)
🔹 Chapter 2: Basic Linux Commands
● pwd, ls, cd, mkdir, rm, touch
● Navigating directories and managing files
● Understanding hidden files and file naming conventions
🔹 Chapter 3: System and User Information
● whoami, uname -a, id, hostname
● Viewing logged-in users: who, w, users
🔹 Chapter 4: Process Management
● ps, ps -aux – Viewing running processes
● top – Real-time system monitoring
● kill – Stopping processes
● nohup – Running tasks in background after logout
🔹 Chapter 5: Disk and File System Management
● df – Disk space usage
● du – Directory size usage
● zip & unzip – File compression
● tar – Archiving and extracting .[Link] files
🔹 Chapter 6: File Permissions and Linking
● chmod, chown, ls -l
● Changing permissions and ownership
● ln vs ln -s – Hard links vs soft (symbolic) links
🔹 Chapter 7: File Content Processing
● cat, head, tail, sort, wc
● grep – Searching inside files
● awk – Pattern scanning and report generation
● find – Advanced file search
🔹 Chapter 8: Remote Access & File Transfer
● ssh – Secure login to remote machines
● scp – Secure file transfer
● Using PuTTY for SSH (GUI)
● Using WinSCP for GUI-based file transfer
🔹 Chapter 9: Package Management & Networking
● apt-get – Installing and removing software
● wget – Downloading files from the internet
● Installing packages and dependencies
🔹 Chapter 10: Shell Scripting (Beginner to Intermediate)
● Writing and running .sh files
● Variables, conditionals, and loops
● Reading user input and using arguments
● Debugging and best scripting practices
🔹 Chapter 11: Cron Jobs and Automation
● Installing and enabling cron
● Using crontab -e to schedule tasks
● Cron job syntax and examples
● Logging and debugging cron jobs
🔹 Chapter 12: Productivity & Power Usage
● Pipes |, redirections >, >>, <
● Command chaining: &&, ;, |
● Managing .bashrc, aliases, and shortcuts
🔹 Chapter 13: Conclusion
● Recap of everything you’ve learned
● Practice tasks and project ideas
● Career use cases: DevOps, Data Engineering, etc.
● Next steps to become a Linux power user
🌌 What is Linux?
● Linux is a free, open-source operating system (OS) based on Unix principles.
● It controls the interaction between software and hardware in systems.
● Linux is widely used in servers, embedded systems, smartphones (Android), cloud
computing, DevOps, and supercomputers.
🔍 Linux vs Unix
Feature Linux Unix
Origin Linus Torvalds (1991) AT&T Bell Labs (1970s)
License Open Source (GNU GPL) Proprietary/Closed Source
Cost Free Commercial
Architecture Runs on x86, ARM, etc. Usually on RISC architectures
Developmen Community driven Vendor driven
t
Examples Ubuntu, Fedora, CentOS Solaris, AIX, HP-UX
📦 Popular Linux Distributions (Distros)
● Ubuntu – User-friendly, perfect for beginners
● Debian – Stable, great for servers
● Fedora – Cutting-edge, sponsored by Red Hat
● CentOS / Rocky / AlmaLinux – Enterprise-level
● Arch Linux – Minimalist, highly customizable
● Kali Linux – Cybersecurity/penetration testing
💡 Why Do We Need Linux?
● 💰 Free & Open Source – No license fees
● 🔒 Security – Strong permissions, less vulnerable
● 🔄 Stable – Used for long-running servers
● 🧩 Customizable – Tailor everything to your needs
● 🧠 Efficient – Works well on old hardware too
● 💻 Powerful CLI – Developers love it
● 🌐 Widespread – Powers most servers and cloud infra
🪖 Linux vs Windows
Feature Linux Windows
Cost Free Paid
License Open Source Closed Source
Interface CLI + GUI GUI Focused
Security More secure More prone to malware
Usage Cloud, DevOps, Office, Gaming, GUI apps
Servers
🦠 Does Linux Have Viruses?
● Yes, but very rare.
● Linux is secure by design (permission-based access).
● Most Linux users don't run antivirus.
● Still, servers and critical systems use security hardening tools.
🧩 Is Linux Really an OS?
● Linux itself = Kernel only
● A full OS = Linux Kernel + GNU Utilities + Bash + Package Manager
● Linux Distros (Ubuntu, Fedora, etc.) are complete operating systems built around the
Linux kernel
🧠 What is a Kernel?
● The core engine of the OS
● Manages:
○ CPU scheduling
○ Memory allocation
○ I/O operations
○ Device management
● Linux uses a monolithic kernel (everything bundled together)
Real-world analogy:
Kernel = Manager that talks to both Employees (hardware) and Customers
(software)
🧪 Basic Linux Commands (Chapter 2 Begins)
📁 mkdir – Make Directory
mkdir projects
✅ Creates a folder called "projects"
mkdir -p logs/2023/errors
✅ Creates nested folders in one command
📂 cd – Change Directory
cd projects
✅ Move into the 'projects' folder
cd ..
✅ Move up one level (parent folder)
cd ~
✅ Go to your home directory
cd -
✅ Switch to the previous directory
📄 ls – List Files
ls
✅ List all non-hidden files/folders in current directory
ls -l
✅ Long listing: shows permissions, owner, size, date
ls -lh
✅ Adds human-readable file sizes (KB, MB)
ls -a
✅ Shows hidden files (starting with .)
ls -lt
✅ Sort files by modification time (newest first)
ls -lstr
✅ Sort files by size, smallest first (combined flags)
🗑️ rm – Remove Files or Folders
rm [Link]
✅ Deletes the file named '[Link]'
rm -r temp/
✅ Recursively deletes the folder 'temp' and its contents
rm -rf temp/
✅ Same as above, but forces deletion without asking
🔗 ln – Hard Link
ln [Link] [Link]
● Both point to the same inode (same data)
● No additional disk space used for file content
● Changes to one affect the other
● File survives even if [Link] is deleted
🧶 ln -s – Soft Link (Symlink)
ln -s [Link] [Link]
● Points to file path, not inode
● Breaks if original is deleted
● Can link to folders and cross filesystems
💽 df – Disk Free
df -h
✅ Shows free space in human-readable format (MB, GB)
Useful for checking partition usage, especially in servers
📊 du – Disk Usage
du -sh foldername
✅ Shows how much space a specific folder uses
du -h --max-depth=1
✅ Shows usage of all folders one level deep
Helpful for finding large folders eating disk space
📦 zip / unzip
zip -r [Link] folder/
✅ Recursively compresses a folder into a zip file
unzip [Link]
✅ Extracts the contents of the zip file
📚 tar – Archive Multiple Files
tar -czvf [Link] folder/
✅ Compress a folder into a .[Link] archive
tar -xzvf [Link]
✅ Extract files from the archive
Flags:
● -c: Create archive
● -x: Extract archive
● -z: Use gzip compression
● -v: Verbose (show files)
● -f: File name
🔍 grep – Search Inside Files
Sample file: [Link]
[INFO] Starting server
[DEBUG] Connection established
[ERROR] Disk full
[WARNING] Low memory
[ERROR] Timeout occurred
grep ERROR [Link]
✅ Shows all lines containing the word ERROR
grep -i error [Link]
✅ Case-insensitive search for error, Error, ERROR
grep -v ERROR [Link]
✅ Invert match – shows all lines except those with ERROR
grep -n ERROR [Link]
✅ Show line numbers of matches
grep -r 'ERROR' /var/log
✅ Recursively search for ERROR inside all files in /var/log
🧭 find – Locate Files/Directories
find . -name "*.log"
✅ Find all .log files in current folder and subfolders
find /home -type f -size +10M
✅ Find files over 10MB in /home
find . -mtime -1
✅ Files modified in the last 1 day
find . -empty
✅ Find all empty files and directories
find . -name "*.tmp" -delete
✅ Find and delete all .tmp files
find . -name "*.log" -exec rm {} \;
✅ Find and remove .log files using -exec
📐 awk – Text Column Processor
Sample file: [Link]
John 25 Developer
Asha 30 Designer
Ravi 28 Tester
awk '{print}' [Link]
✅ Print full lines (like cat)
awk '{print $1}' [Link]
✅ Print first column (names)
awk '{print $1, $3}' [Link]
✅ Print name and job title
awk '$2 > 27 {print $1, $2}' [Link]
✅ Filter and print people older than 27
awk '{printf "Name: %s | Age: %s | Role: %s\n", $1, $2, $3}' [Link]
✅ Format output with labels
Used for reports, quick data filtering, log analysis, etc.
📑 head – Show First N Lines of a File
head [Link]
✅ Shows the first 10 lines of [Link] by default
head -n 5 [Link]
✅ Shows the first 5 lines only
Useful for previewing logs, configs, and large files quickly
📄 tail – Show Last N Lines of a File
tail [Link]
✅ Shows the last 10 lines of [Link]
tail -n 15 [Link]
✅ Show last 15 lines
tail -f [Link]
✅ Live view of a file as it updates – great for monitoring logs!
🔢 wc – Word/Line Count
wc [Link]
✅ Shows lines, words, and bytes
wc -l [Link]
✅ Count only lines
wc -w [Link]
✅ Count only words
Used to count how many records/logs/lines are in a file
🧮 sort – Sort File Content
sort [Link]
✅ Sorts lines alphabetically (A–Z)
sort -r [Link]
✅ Reverse sort (Z–A)
sort -n [Link]
✅ Numeric sort (e.g., for scores or values)
sort -nr [Link] | head -n 5
✅ Top 5 highest values – useful for ranking
📦 apt-get – APT Package Manager (Debian/Ubuntu)
🔹 Purpose:
apt-get is used to install, update, upgrade, and remove packages on Debian-based
systems like Ubuntu.
🧪 Common apt-get Commands:
Command Description
sudo apt-get update Updates the list of available packages (does not
install)
sudo apt-get upgrade Installs latest versions of currently installed packages
sudo apt-get install Installs a specific package
<package>
sudo apt-get remove Removes a package (but keeps config files)
<package>
sudo apt-get purge Removes package and its config files
<package>
sudo apt-get autoremove Cleans up unused dependencies
sudo apt-get clean Clears downloaded .deb files (saves space)
🧾 Example Usage:
sudo apt-get update
sudo apt-get install git
sudo apt-get remove apache2
✅ Tip: Always run sudo apt-get update before installing anything new.
🌐 wget – Downloading from the Web
🔹 Purpose:
wget is a command-line utility to download files from web servers, supporting HTTP,
HTTPS, and FTP.
🧪 Common wget Commands:
Command Description
wget <URL> Downloads a file from the given URL
wget -c <URL> Continues an incomplete download
wget -O [Link] Saves the file with a custom name
<URL>
wget -r <URL> Recursively download files from a directory or site
wget --limit-rate=100k Limit download speed
<URL>
wget -b <URL> Run download in background
🧾 Example Usage:
wget [Link]
wget -O [Link] [Link]
wget -c [Link]
🔐 Linux File Permissions
🧱 1. Permission Types
Each file or directory in Linux has three types of permissions:
Permissio Symbol Value Meaning
n
Read r 4 View contents
Write w 2 Modify contents
Execute x 1 Run as program or enter
directory
🔢 2. Permission Categories
Each file has permissions for three categories of users:
Category Meaning
User The owner of the file
Group Users who are part of the file's
group
Others All other users (except root)
📊 3. Numeric (Octal) Representation
Each permission is represented by adding values:
Permission Value Symbol
s
--- 0 No access
--x 1 Execute only
-w- 2 Write only
-wx 3 Write + Execute
r-- 4 Read only
r-x 5 Read + Execute
rw- 6 Read + Write
rwx 7 Full (read, write, execute)
🧾 4. Example: chmod Usage
Command Description
chmod +x [Link] Add execute permission to all
chmod 777 Full access to everyone
[Link]
chmod 644 Owner can read/write, others can read only
[Link]
chmod 755 Common for executables: owner full, rest rx
[Link]
chmod 444 Read-only for all
[Link]
🔍 5. File Type Prefixes (1st character of ls -l)
Symbol Meaning
- Regular file
d Directory
l Symbolic link
c Character
device
b Block device
🧠 6. Example Permission Strings (ls -l)
Permission Meaning
String
drwxr-xr-x Directory: owner=all, group/others=rx
-rw-rw-r-- File: owner/group=rw, others=r
-rw-r--r-- File: owner=rw, group/others=r
👑 7. Special Notes on root
● root = superuser.
● Ignores regular permission restrictions.
● Can read/write/execute/delete any file, regardless of rwx.
nohup
Purpose: Run a command in the background that doesn’t terminate even after you log out.
Syntax:
nohup command-name &
Example:
nohup python [Link] &
● Output is written to [Link] by default.
ps
Purpose: Show currently running processes.
Syntax:
ps
Example:
ps aux | grep python
● Lists all processes with detailed info.
top
Purpose: Live monitoring of system processes and resource usage.
Usage:
top
● Press q to quit.
● Use Shift + P (sort by CPU) or Shift + M (sort by memory).
ps -aux
Purpose: List all running processes from all users.
Syntax:
ps -aux
● a: All users
● u: User info
● x: Include non-terminal processes
kill
Purpose: Stop a process using its PID.
Syntax:
kill PID
Example:
kill 12345
● Use kill -9 PID for forceful termination.
scp
Purpose: Securely copy files between systems over SSH.
Syntax:
scp [Link] user@remote_ip:/path/to/destination/
Example:
scp [Link] ubuntu@[Link]:/home/ubuntu/
ssh
Purpose: Secure remote login to another system.
Syntax:
ssh user@remote_ip
Example:
ssh ubuntu@[Link]
uname -a
Purpose: Display system information.
Example:
uname -a
● Shows kernel version, system architecture, etc.
whoami
Purpose: Show currently logged-in user.
Example:
whoami
pwd
Purpose: Print the current working directory.
Example:
pwd
🖥️ Using PuTTY
🔹 Download & Install:
1. Go to [Link]
2. Download the Windows installer.
3. Install it by clicking Next → Next → Finish.
🔹 Usage:
● Open PuTTY
● Enter your IP in "Host Name"
● Select SSH, Port 22
● Click “Open”
● Enter username and password
📂 Using WinSCP
🔹 Download & Install:
1. Go to [Link]
2. Download the installer.
3. Install with default options.
🔹 Usage:
● Open WinSCP
● Hostname: Your server IP
● Username: e.g., ubuntu
● Password or private key
● Click “Login”
● Use GUI to drag-drop files between local ↔ server
⏰ Cron Jobs in Linux (Start to End)
Step 1: Install cron (if not installed)
sudo apt update
sudo apt install cron
Step 2: Enable and Start Cron
sudo systemctl enable cron
sudo systemctl start cron
Step 3: Edit Crontab
crontab -e
Step 4: Add a Job
Format:
* * * * * /path/to/command
Example: Run script every day at 2 AM
0 2 * * * /home/user/[Link]
Step 5: List Cron Jobs
crontab -l
Step 6: Remove Cron Job
crontab -e
# Then delete the specific line
🐧 Shell Scripting: Passing Arguments
(Beginner Notes)
📌 What is a Shell Script?
A shell script is a file containing a series of Linux/Unix commands. It is used to automate tasks.
🪜 Step 1: Create a Shell Script File
Open your terminal and create a file:
nano [Link]
✍️ Step 2: Write the Script
Paste the following code into [Link]:
#!/bin/bash
# Script to greet a user using input arguments
echo "Script Name: $0" # $0 is the name of the script
echo "First Argument: $1" # $1 is the first argument
echo "Second Argument: $2" # $2 is the second argument
# Combine arguments in a sentence
echo "Hello, $1! Your role is $2."
🔖 Press CTRL + O, then Enter to save.
Press CTRL + X to exit nano.
🔒 Step 3: Make the Script Executable
chmod +x [Link]
▶️ Step 4: Run the Script with Arguments
./[Link] Gowtham DataEngineer
✅ Output:
Script Name: ./[Link]
First Argument: Gowtham
Second Argument: DataEngineer
Hello, Gowtham! Your role is DataEngineer.
🔍 What Do These Special Variables Mean?
Variable Description
$0 Name of the script
$1 First argument passed to the
script
$2 Second argument
$# Total number of arguments
$@ All arguments as separate strings
$* All arguments as a single string
🧠 Tips for Using Arguments in Real Projects
● Use arguments to take file names, database names, usernames, etc.
● Always validate if the argument is passed before using:
if [ -z "$1" ]; then
echo "Please provide a name"
exit 1
fi
💡 Bonus: Use in Automation
You can write scripts like:
./[Link] /home/ubuntu/mydata backup_folder
./[Link] [Link] s3bucket
Where /home/ubuntu/mydata and backup_folder are $1 and $2.
🎁 Summary
● nano [Link] → Create script
● chmod +x [Link] → Make executable
● ./[Link] arg1 arg2 → Run with arguments
● $1, $2 → Use arguments inside script
✅ Conclusion
Congratulations! 🎉 You’ve successfully completed the Linux Master Course — a powerful
step toward becoming a confident and capable Linux user.
Throughout this journey, you’ve learned:
● 🔹 Essential Linux commands (ps, top, kill, scp, ssh, etc.)
● 🔹 How to work with files, permissions, and processes
● 🔹 How to automate tasks using cron jobs
● 🔹 How to use tools like PuTTY, WinSCP, and WSL to bridge Windows and Linux
environments
Whether you're a data engineer, developer, system admin, or student, your ability to navigate
and control a Linux environment gives you a strong foundation for any technical role.
But remember — real mastery comes from practice. So don’t stop here:
● Set up your own Linux environment
● Automate your daily tasks
● Explore bash scripting
● And keep challenging yourself with real-world projects
💻🚀
This is not the end — it's the beginning of your Linux journey.
Keep exploring. Keep building. Keep mastering.
📘 About the Author
Gowtham S.B is a passionate Big Data Engineer, educator, and content creator with over 11
years of hands-on experience in the world of data. He is the creator of
[Link], a learning platform that simplifies data engineering for the
Tamil-speaking community through real-world projects, tools, and tutorials.
He is best known for his engaging content on Instagram (@dataengineeringtamil) and
YouTube (Data Engineering Tamil), where he has helped thousands of learners break into the
field. His work has been recognized by IBM’s [Link], naming him one of the Top Data
Engineering Influencers on LinkedIn.
Gowtham is also a mentor, blogger, and speaker, committed to building a strong community of
data professionals in regional languages. His mission is to make Data Engineering simple,
practical, and career-focused.
🔗 Website: [Link]
📸 Instagram: @dataengineeringtamil
▶️ YouTube: [Link]/@dataengineeringvideos
💼 LinkedIn: [Link]/in/sbgowtham
Thank You