How To Learn Linux Operating System

How To Learn Linux Operating System

Reading time1 min
#Linux#Technology#Computing#CommandLine#Bash#LinuxTutorial

Mastering the Linux Command Line: Building Real System Knowledge Beyond the GUI

Most users first touch Linux through a graphical shell. But anyone tasked with real troubleshooting, infrastructure automation, or secure server management inevitably finds the graphical interface obscures as much as it reveals. The command line interface (CLI) cuts directly to the system’s mechanisms—critical if you want actual control.


Reality: Control Lives at the Prompt

The CLI is where Linux’s modular architecture is exposed. Every file, process, and configuration object is accessible from the prompt—rarely true for a GUI abstraction. The practical consequence: if an application refuses to start, disk space suddenly vanishes, or systemd reports a strange state, the solution resides at /usr/bin/bash, not in desktop widgets.

Immediate feedback and historic logs are accessible at the CLI. Running a command yields output you can chain, grep, or store. Compare a session:

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        30G   15G   14G  52% /

to the GUI “disk usage” panels—one tells you exactly what’s used and where; the other hides device labels, mountpoints, and inode capacity.


Get Oriented: Baseline Navigation

No matter the distribution—Rocky Linux 9, Ubuntu 22.04 LTS, Arch—you always have Bash, or minimally a POSIX shell. Start simple, but take note of differences if you use Zsh or Fish.

Try this set:

  • pwd — Shows your absolute path.
  • ls -lAh — Detailed listings, shows dotfiles, human-readable sizes.
  • cd /var/log — Jump to log storage; application troubleshooting starts here.
  • cat /etc/os-release — Identify exact OS version when reporting issues upstream.

Side note: In production, tab-completion (bash-completion package) is essential for safety—misnaming a path in a rm -rf can be catastrophic.


Permissions: Not Optional, Not Trivial

Linux applies per-user, per-group, and global file permissions at the kernel level. At some point, a misconfigured script "just won't run" because of this. Example:

touch /usr/local/bin/sync-db.sh
chmod 755 /usr/local/bin/sync-db.sh
ls -l /usr/local/bin/sync-db.sh

Result:

-rwxr-xr-x 1 root root 0 Jun 11 11:23 /usr/local/bin/sync-db.sh
  • Owner (root): rwx — read, write, execute.
  • Group/Other: r-x — no write.

Critically, running user context matter—running as root is risky (see CVE-2019-14287 for sudo bypass risks).

Gotcha: Permissions propagate recursively if you invoke chmod -R, sometimes breaking expected access control. Audit with find /path -perm -o+w.


Core Tools for Operations

Efficient command-line use isn’t about memorizing every command, but recognizing patterns for process, file, and system management.

Process Inspection:

ps aux | grep sshd
pgrep -fa python
htop    # if installed; interactive, shows per-core utilization
kill -9 <PID>

Note: kill -9 (SIGKILL) leaves no cleanup opportunity for the target process. Use kill -15 (SIGTERM) when possible.

File Location and Search:

find /var/log -mtime -1 -type f -name "*.gz"
grep -i "OOM" /var/log/syslog | tail -n 10

Package Management Example (Debian/Ubuntu, apt):

sudo apt-get update
sudo apt-get install --no-install-recommends tmux
sudo apt-get purge nano
dpkg -l | grep linux-image

Caution: In-place OS upgrades via package manager can break custom services. Always validate /etc/apt/sources.list and back up /etc.


Automate: Bash Scripting as Force-Multiplier

Basic script, versioned, beats ad hoc commands. See a naive backup routine:

#!/usr/bin/env bash

set -euo pipefail
SRC="$HOME/Documents"
BACKUP="$HOME/backup-$(date +%Y%m%d%H%M%S)"
mkdir -p "$BACKUP"
rsync -a --delete "$SRC/" "$BACKUP/"
echo "Backed up $SRC to $BACKUP"
  • set -euo pipefail: fails the script on unset variables, failed commands, bad pipes.
  • rsync over cp manages file deltas and preserves permissions.

Tip: Don’t store credentials in shell scripts. Use read -s or env variables, or better, tools like gnupg.


Documentation: When and How to Read

Every command has a historical man page, e.g.:

man 7 signal   # not just commands—view standards and conventions
man -k network # search all topics

And for modern utilities:

curl --help
journalctl --help

Known issue: Some third-party tools (especially under /opt or user local installs) lack man pages; must refer to online docs or README.md.


Non-Obvious Tip: Environment Isolation

If experimenting with potentially damaging commands or unfamiliar software, use a lightweight container (docker run --rm -it ubuntu:22.04 /bin/bash) or a VM snapshot, not your production workstation.


Summary

Understanding the Linux CLI is less about rote learning and more about detecting system intent—why a service failed, where a file went, who owns a problematic process. Start with daily usage, escalate to scripting, and anchor knowledge with man pages. Ignore superficial desktop customizations; mastery resides in the terminal and in knowing how files, permissions, and processes actually interrelate.

There is no perfect method—some admins script everything; others rely on muscle memory and log reading. In every case, only the CLI exposes root causes and offers full operational leverage.

Question to consider: What’s the most recent unexpected error you hit at the prompt, and how did you investigate it?