Community story
Linux: Learn the System Behind the Screen
A few terminal commands can teach you more about computers than hours of clicking.
Linux: Learn the System Behind the Screen
Most people use a computer without thinking very much about the operating system underneath it. We open applications, move files between folders, connect to Wi-Fi, install programs, and shut the computer down. Modern graphical interfaces make these tasks so easy that we rarely need to think about what the computer is actually doing.
For a software developer, however, understanding what happens behind the screen is extremely valuable.
One of the best ways to develop that understanding is to spend some time with Linux.
Linux is not simply an operating system for programmers. It is an opportunity to understand how computers organize files, run programs, manage users, communicate across networks, and allocate resources.
You do not need to become a Linux system administrator. Even learning a small collection of commands can make you a much more confident computer user and developer.
Start With the Filesystem
When you open a folder in Windows or macOS, you are navigating a filesystem through a graphical interface.
Linux lets you navigate that same idea directly from a terminal.
Start with:
pwd
pwd means print working directory.
It tells you exactly where you currently are.
Then:
ls
shows the contents of the current directory.
To move into another directory:
cd Documents
To move back one level:
cd ..
These commands are simple, but they teach an important idea: everything has a location.
When an application says:
File not found
you begin to understand that the problem may simply be an incorrect path.
Instead of thinking, "The computer cannot find my file," you start asking a more useful question:
What path is the program actually looking at?
That change in thinking is valuable.
Creating and Moving Files
You can create a directory with:
mkdir projects
Copy a file:
cp report.txt report-backup.txt
Move or rename a file:
mv old-report.txt final-report.txt
And remove a file:
rm unwanted.txt
Be careful with rm. Linux generally assumes that if you entered a command, you meant it.
That can initially feel unforgiving, but it encourages a useful habit: understand a command before executing it.
Reading Files Without Opening an Editor
Developers frequently need to inspect configuration files, logs, and output files.
You can display a small file using:
cat application.log
For larger files:
less application.log
less allows you to move through the file without loading it into a graphical editor.
You can also display only the last few lines:
tail application.log
This becomes extremely useful when investigating application errors.
For example:
tail -f application.log
continuously displays new lines as they are added.
Imagine running a web application and watching its log in another terminal. When an error occurs, you can immediately see what the application reported.
That is much more useful than simply knowing that "the website stopped working."
Searching Is One of Linux's Greatest Strengths
Suppose a log file has 50,000 lines and you need to find errors.
You could open the file and search manually.
Or:
grep "ERROR" application.log
You can even make searches case-insensitive:
grep -i "error" application.log
Linux becomes especially powerful when commands are connected together.
For example:
ps aux | grep python
The first command lists running processes.
The pipe:
|
sends that output to the next command.
grep python filters the result.
You have taken two simple tools and combined them into something more useful.
This is one of the fundamental ideas behind Unix and Linux: small tools can work together.
Understand Processes
Every running application is a process.
Linux allows you to inspect them.
Try:
ps
or:
top
top shows activity such as CPU and memory usage.
This introduces a much more useful approach to troubleshooting.
Imagine an application becomes extremely slow.
Instead of immediately restarting the computer, ask:
- Is the CPU at 100 percent?
- Is memory almost full?
- Is one process consuming most resources?
- Is the application actually running?
- Is something else competing for resources?
These are better questions because they move troubleshooting from guessing toward observation.
Permissions Matter
Another important Linux concept is file permissions.
Run:
ls -l
You may see something like:
-rw-r--r--
At first, this looks strange.
But those characters describe who can:
- read the file,
- write to the file,
- execute the file.
Linux systems usually distinguish between:
- the owner,
- the group,
- everyone else.
Why does this matter?
Because many software problems are permission problems.
An application may successfully read a file but fail when trying to modify it.
A web server may be running correctly but not have permission to access an uploaded file.
A deployment script may exist but not have permission to execute.
Understanding permissions helps you recognize these problems much faster.
Linux Helps You Understand Servers
One of the strongest reasons developers should learn Linux is that a large number of web servers and cloud systems run Linux.
Your personal laptop may run Windows.
Your production application may run on Linux.
That means eventually you may need to:
- connect to a remote server,
- inspect files,
- check logs,
- restart an application,
- investigate CPU usage,
- check disk space,
- modify configuration,
- verify network connectivity.
A graphical interface may not even be installed.
The terminal becomes your interface.
Learn SSH
SSH allows you to connect securely to another computer.
Conceptually:
ssh username@server-address
Once connected, your terminal is controlling the remote Linux machine.
That is an important moment for many beginning developers.
Suddenly, the command line stops feeling like an academic exercise.
It becomes how real systems are managed.
Check Disk and Memory
Two useful commands are:
df -h
and:
free -h
df -h shows filesystem storage usage.
free -h shows memory usage.
Suppose your application suddenly fails to write files.
You discover:
Disk usage: 100%
Now you have a meaningful explanation.
Without understanding the system, you might spend hours debugging application code that was perfectly correct.
Learn Networking Basics
Linux also gives you tools to understand networking.
You can test whether another host responds:
ping example.com
You can inspect network configuration.
You can test remote services.
You can examine listening ports.
These tools begin connecting concepts that otherwise seem separate:
Application
↓
Operating system
↓
Network interface
↓
Router
↓
Internet
↓
Remote server
When something fails, the problem could exist at any one of those levels.
A good developer learns how to identify which layer is actually failing.
Do Not Try to Memorize Everything
A common beginner mistake is trying to memorize dozens or hundreds of Linux commands.
That is unnecessary.
Start with a small group:
pwd
ls
cd
mkdir
cp
mv
rm
cat
less
grep
tail
ps
top
df
free
chmod
Use them.
When you need something else, look it up.
Professional developers look up command syntax too.
The goal is not memorization.
The goal is understanding what kinds of tools are available.
Linux Changes How You Think
The greatest benefit of Linux is not learning commands.
It is learning to investigate.
When something goes wrong, instead of saying:
It doesn't work.
you start asking:
Is the program running?
Where is the configuration file?
What does the log say?
Does the user have permission?
Is the disk full?
Is the server reachable?
Which process is consuming memory?
Those questions make you a stronger developer on almost any platform.
A Good Weekend Experiment
If you have never used Linux seriously, dedicate a weekend to it.
Install Ubuntu in a virtual machine or on an older computer.
Open the terminal.
Create directories.
Move files.
Install software.
Run a small Python program.
Check your processes.
Look at memory usage.
Start a simple local web server.
Break something and figure out why.
You will probably spend some time searching the internet for commands.
That is completely normal.
What matters is that the operating system slowly stops looking like a mysterious black box.
And once that happens, many other areas of software development begin making more sense.
Debaraj Katuwal
Reader conversation
Thoughts worth sharing