← Back to Blog
Technology

Linux Commands Every Engineering Student Should Master

2026-09-02•Harivallabha Sai S
Linux Commands Every Engineering Student Should Master

Move beyond standard file navigation. Learn the fundamental Linux CLI commands for debugging, process management, log viewing, and remote server handling every CSE/IT student needs.

Whether you are setting up a local web server, deploying a backend application to an AWS EC2 instance, or debugging code in your college computer lab, you will inevitably interact with a Linux terminal. Most B.Tech curricula introduce Linux in early operating system labs, but classroom exercises often stop at basic directory navigation like `cd` and `mkdir`.

In real-world software development, hackathons, and technical interviews, terminal speed and familiarity matter. Here is a practical guide to the essential Linux commands and command-line patterns every engineering student should know.

---

1. Inspecting Files and Disk Space

When working on project repositories or remote servers, knowing what files exist and how much space they consume is your first line of defense.

`ls -lah`

The standard `ls` command shows file names, but adding flags gives vital details:

  • `-l`: Long listing format (shows permissions, owner, size, and modification date).
  • `-a`: Shows hidden files (including `.env`, `.gitignore`, and configuration folders).
  • `-h`: Human-readable file sizes (e.g., `4K`, `25M`, `2G` instead of byte counts).
ls -lah

`du -sh *`

When an application crashes due to full disk space, `du` (Disk Usage) helps you spot bloated folders like `node_modules` or build artifacts instantly:

  • `-s`: Summary for the specified directories.
  • `-h`: Human-readable sizes.
du -sh *

`find . -name "*.py"`

When you forget where a specific configuration file or script was saved, `find` searches directory trees recursively based on criteria like file name, size, or modification time.

# Find all Python files in the current directory and subdirectories
find . -name "*.py"

# Find files modified in the last 24 hours
find . -type f -mtime -1

---

2. Reading Logs and Searching Text Efficiently

Opening a multi-gigabyte log file in VS Code or Gedit will freeze your machine. Terminal text inspection is faster and more reliable.

`cat` vs. `less`

Use `cat` only for short files. For longer files, use `less`, which opens an interactive viewer where you can scroll using arrow keys, search using `/`, and exit using `q`.

less server.log

`head` and `tail`

  • `head -n 20 file.txt`: View the first 20 lines of a file.
  • `tail -n 20 file.txt`: View the last 20 lines.

**The Real-Time Log Tracker (`tail -f`):** The `-f` (follow) flag keeps the file open and streams new lines to your terminal as they are written. This is crucial for debugging running backend servers.

tail -f logs/error.log

`grep`

`grep` (Global Regular Expression Print) searches text files for matching string patterns.

# Search recursively (-r) with line numbers (-n) and case-insensitivity (-i)
grep -rni "database connection failed" ./src

---

3. Process Control and Troubleshooting

When your local server port is stuck or a process hangs, these commands help you inspect and clear system state.

`lsof -i :<port>`

Have you ever seen the error `Error: listen EADDRINUSE :::3000`? This means a process is already running on port 3000. `lsof` (List Open Files) reveals which process is holding the port:

lsof -i :3000

Output:

COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
node    14205 student    23u  IPv6 123456      0t0  TCP *:3000 (LISTEN)

`kill` and `kill -9`

Once you know the Process ID (PID) from `lsof` or `ps`, you can terminate it:

# Terminate gracefully
kill 14205

# Force kill if the process is unresponsive
kill -9 14205

`ps aux` and `htop`

To view running system processes:

  • `ps aux | grep python`: Lists running processes filtered for Python scripts.
  • `htop`: An interactive process viewer that visualizes CPU core utilization, memory consumption, and running tasks.

---

4. File Permissions and Security

Linux enforces strict permission models based on **User**, **Group**, and **Others**.

Understanding `chmod`

File permissions consist of Read (`4`), Write (`2`), and Execute (`1`).

When setting up SSH keys or running shell scripts, you will frequently adjust executable rights:

# Make a deployment script executable
chmod +x deploy.sh

# Secure a private SSH key so only your user can read it
chmod 600 ~/.ssh/id_ed25519

> **Warning:** Avoid running `chmod 777` to fix permission errors. It grants full read, write, and execute permissions to everyone on the system, creating severe security vulnerabilities in production environments.

---

5. Networking and Remote Access

Modern software development involves remote virtual machines, cloud APIs, and distributed microservices.

`ssh` (Secure Shell)

To log into a remote cloud instance or lab server securely:

ssh -i key.pem ubuntu@203.0.113.15

`scp` (Secure Copy Protocol)

To copy files between a local computer and a remote server over SSH:

# Upload a local file to remote server
scp -i key.pem main.py ubuntu@203.0.113.15:/var/www/app/

# Download a remote file to local computer
scp ubuntu@203.0.113.15:/var/log/nginx/error.log ./local_logs/

`curl`

Instead of opening Postman just to check if an API endpoint responds, use `curl` directly in your terminal:

# Fetch response body
curl https://api.github.com/users/octocat

# Inspect response headers only (-I)
curl -I https://google.com

# Send a POST request with JSON payload
curl -X POST https://api.example.com/login \
  -H "Content-Type: application/json" \
  -d '{"username":"admin","password":"secret"}'

---

6. Power Tool: Combining Commands with Pipes (`|`)

The true efficiency of Linux lies in the Unix philosophy: **do one thing well and chain tools together using pipes (`|`)**.

A pipe passes the standard output of one command as the input to another command.

Practical Combinations:

  1. **Find specific network connections:**
   netstat -tuln | grep 8080
  1. **Count lines of code in a project:**
   find . -name "*.js" | xargs wc -l
  1. **Find the top 5 memory-heavy processes:**
   ps aux --sort=-%mem | head -n 6

---

How to Build CLI Muscle Memory

Command-line fluency cannot be learned by memorization alone. Here are concrete ways to practice:

  1. **Use WSL2 on Windows:** If you run Windows on your laptop, install Windows Subsystem for Linux (WSL2) with Ubuntu. It integrates directly into VS Code terminals.
  2. **Avoid File Explorers for a Week:** Try navigating directories, creating folders, moving files, and checking log files using only your terminal for seven days.
  3. **Set Up SSH Keys for GitHub:** Move away from HTTPS password prompts by configuring SSH authentication on your machine using `ssh-keygen`.

Mastering Linux utilities makes you faster at debugging, independent during hackathons, and confident when deploying production-grade systems.