The Terminal & Shell: Your Gateway to Linux
Learn the difference between terminal, shell, and console. Understand the prompt, run your first real commands, and master command structure.
The terminal is where you'll spend most of your Linux time. Before diving into commands, it's worth understanding the three terms people often confuse — terminal, shell, and console — and exactly what happens when you type a command.
Terminal vs Shell vs Console
These three words get used interchangeably but they mean different things:
Key Definitions
| Term | What it is | Examples |
|---|---|---|
| Terminal | The GUI window you type in | GNOME Terminal, iTerm2, Windows Terminal |
| Shell | The program that interprets your commands | bash, zsh, fish, sh |
| Console | The physical or system-level terminal | tty1-tty6 on Linux |
| CLI | Command-Line Interface — the text-based interaction model | — |
Understanding the Prompt
When you open a terminal, you see a prompt — the shell's way of saying "I'm ready, what do you want to do?" The prompt tells you who you are, where you are, and what shell you're in:
# Typical prompt structure:
username@hostname:current_directory$
# Examples:
sagar@laptop:~$ # User sagar, home directory (~), regular user
sagar@laptop:/etc$ # User sagar, in /etc directory
root@server:/var/log# # Root user — note # instead of $
# $ means regular user (safe)
# # means root/superuser (be careful!)$ vs # in the Prompt
The $ symbol means you're a regular user. The # symbol means you're root (the superuser with unlimited system access). Commands run as root can damage your system — always double-check before running anything as root.
Your First Commands
These are the foundational commands you'll type every day. Run each one and understand its output before moving on:
# ─── Who am I? Where am I? ───────────────────────────────────
whoami # Prints your username: sagar
hostname # Prints your computer name: laptop
hostname -I # Prints your IP address(es)
# ─── echo — Print text or variables ──────────────────────────
echo "Hello, Linux!" # Hello, Linux!
echo $USER # Prints your username (same as whoami)
echo $HOME # Prints your home directory: /home/sagar
echo "Today is $(date)" # Embeds command output in a string
# ─── date — Date and time ─────────────────────────────────────
date # Tue Mar 3 20:45:30 IST 2026
date +%Y-%m-%d # 2026-03-03
date +%H:%M:%S # 20:45:30
date +"%A, %B %d, %Y" # Tuesday, March 03, 2026
# ─── System info ─────────────────────────────────────────────
uname -a # All system info in one line
uname -r # Kernel version only: 5.15.0-91-generic
uname -m # Architecture: x86_64
# ─── How long has this machine been running? ──────────────────
uptime
# 20:45:30 up 15 days, 3:42, 2 users, load average: 0.15, 0.10, 0.05
# ↑ time running ↑ users ↑ 1, 5, 15 min average CPU load
# ─── Clear the screen ────────────────────────────────────────
clear # Or press Ctrl+LCommand Structure
Every Linux command follows the same pattern:
command [options] [arguments]
- command — the program to run (e.g.
ls,cp,grep) - options/flags — modify how the command behaves (start with
-or--) - arguments — what the command acts on (files, directories, text)
Options come in two styles:
- Short — single dash + single letter:
-l,-a,-h - Long — double dash + full word:
--long,--all,--help
Short options can be combined: ls -la is the same as ls -l -a
# command only
ls
# command + single option
ls -l
# command + combined short options (same as ls -l -a)
ls -la
# command + long option
ls --all
# command + option + argument
ls -l /home
# option with a value
head -n 5 file.txt # -n takes a value (show 5 lines)
grep --color=auto "error" log.txt # --color takes a value
# Multiple arguments
cp file1.txt file2.txt /backup/ # copy 2 files to /backup/Command History
The shell saves everything you type to a history file (usually ~/.bash_history or ~/.zsh_history). You can navigate and reuse past commands instead of retyping them:
history # Show all past commands with numbers
history 10 # Show last 10 commands
!42 # Re-run command #42 from history
!! # Re-run the very last command
!git # Re-run last command that started with "git"
# Pro tip: press ↑ arrow to walk through history
# Or press Ctrl+R to search history interactivelyWhat does a `#` at the end of the shell prompt (instead of `$`) tell you?
Which command shows `ls -l -a` and `ls -la` behave the same?
Practice command structures:
- Print your username, hostname, and home directory in one shot using three separate
echocommands - Run
datewith a custom format to output: Today is Tuesday, March 03, 2026 - Run
uptimeand identify: (a) how long the system has been up, (b) how many users are logged in, (c) what the 5-minute load average is