Skip to main content

🖥️ Lesson 2.1: Meet the Terminal

The terminal is your command center. Let's get comfortable with it.

🎯 Learning Objectives

  • Understand what a shell and terminal emulator are
  • Open a terminal in Ubuntu (desktop and WSL)
  • Read and understand the command prompt
  • Run basic commands and understand their anatomy
  • Use command history and tab completion to work faster

Estimated Time: 30 minutes

📑 In This Lesson

What Is a Terminal?

A terminal (or terminal emulator) is a program that gives you a text-based interface to your computer. Instead of clicking icons and menus, you type commands and the computer responds with text.

This might sound old-fashioned, but the terminal is one of the most powerful tools in computing. With a single command, you can do things that would take dozens of clicks in a graphical interface — rename hundreds of files, search through gigabytes of logs, manage remote servers, or automate repetitive tasks.

💡 Why Learn the Terminal?

  • Speed — many tasks are faster to type than to click
  • Power — some things can only be done from the command line
  • Automation — you can save commands as scripts and replay them
  • Remote access — servers rarely have graphical interfaces
  • Universal — terminal skills transfer across all Linux distributions

Shell vs. Terminal

These terms are often used interchangeably, but they're actually two different things:

Term What It Is Example
Terminal The window that displays text GNOME Terminal, Konsole, Windows Terminal
Shell The program that interprets your commands Bash, Zsh, Fish

Think of the terminal as a TV screen and the shell as the show that's playing on it. The terminal displays the output; the shell does the actual work.

graph LR A["👤 You type
a command"] --> B["Terminal
(window)"] B --> C["Shell
(Bash)"] C --> D["Linux Kernel"] D --> E["Hardware"] D --> C C --> B B --> F["👀 You see
the output"] style A fill:#3b82f6,stroke:#1e40af,color:#fff style C fill:#6366f1,stroke:#4338ca,color:#fff style D fill:#22c55e,stroke:#166534,color:#fff style F fill:#3b82f6,stroke:#1e40af,color:#fff

💡 Bash Is the Default

Ubuntu uses Bash (Bourne Again SHell) as its default shell. When we say "the terminal" throughout this course, we mean a terminal running Bash. You can check your shell anytime with: echo $SHELL

🐧 Other Distros

Most Linux distributions use Bash by default. Notable exceptions: Zsh is the default on macOS (since Catalina) and some Arch-based distros. Fish is popular in Fedora circles. The core concepts are the same — only some syntax details differ. If you're on a Mac, your terminal runs Zsh, but almost everything in this course works identically.

Opening the Terminal

On Ubuntu Desktop (VirtualBox / Dual Boot)

  • Keyboard shortcut: Ctrl + Alt + T (fastest way)
  • Activities menu: Click "Activities" (top-left), type "Terminal", click the icon
  • Right-click desktop: Some Ubuntu versions let you right-click the desktop and choose "Open Terminal Here"

On WSL (Windows)

  • Open the Start menu and search for "Ubuntu"
  • Or open Windows Terminal and select the Ubuntu tab
  • Or type wsl in PowerShell or Command Prompt

On macOS

  • Spotlight: Press ⌘ Cmd + Space, type "Terminal", press Enter
  • Finder: Go to Applications → Utilities → Terminal
  • Or use a third-party terminal like iTerm2 (popular with developers)

✅ Pro Tip: Pin It

You'll be using the terminal constantly. Pin it to your taskbar (Windows), favorites dock (Ubuntu), or Dock (macOS) so it's always one click away.

The Command Prompt

When you open the terminal, you'll see something like this:

ray@ubuntu:~$

This is the prompt — it's the shell telling you it's ready for a command. Let's break it down:

Part Meaning
ray Your username
@ "at"
ubuntu Your computer's hostname
: Separator
~ Your current directory (~ means your home folder)
$ You're a regular user (a # means root/admin)

⚠️ The # Prompt

If your prompt ends with # instead of $, you're logged in as root (the superuser). Be very careful — root can modify or delete anything on the system. We'll cover this in Module 3. For now, always work as a regular user ($).

Anatomy of a Command

Every Linux command follows the same basic structure:

command [options] [arguments]
Part What It Is Example
Command The program to run ls
Options Modify behavior (start with - or --) -l, --all
Arguments What the command acts on /home, myfile.txt

Here's a concrete example:

ls -la /home

This means: "List (ls) in long format (-l) including hidden files (-a) the contents of the /home directory."

💡 Short vs. Long Options

Most commands support two styles of options:

  • Short: single dash + one letter → -l, -a, -h
  • Long: double dash + word → --long, --all, --human-readable

Short options can be combined: -la is the same as -l -a.

Your First Commands

Let's try some basic commands. Type each one and press Enter:

Who Am I?

# Your username
whoami

# More detailed: username, groups, user ID
id

Where Am I?

# Print Working Directory — shows your current location
pwd

What's Here?

# List files in the current directory
ls

# Long format with details (permissions, size, date)
ls -l

# Include hidden files (those starting with a dot)
ls -la

# Human-readable file sizes
ls -lh

What's the Date?

# Current date and time
date

# Calendar for the current month
cal

What System Am I On?

# System info
uname -a

# Ubuntu version
lsb_release -a

# How long has the system been running?
uptime

Print Text

# Print a message
echo "Hello from the terminal!"

# Print the value of a variable
echo $HOME
echo $USER

Clear the Screen

# Clear all that output
clear

Or press Ctrl + L for a quick clear.

History and Tab Completion

Two features that will save you enormous amounts of typing:

Command History

Bash remembers every command you type. Use the arrow keys to navigate:

Key Action
Previous command
Next command
history Show all recent commands (numbered)
!42 Re-run command number 42 from history
!! Re-run the very last command
Ctrl + R Search history by typing a keyword

✅ The sudo !! Trick

Forgot to type sudo? Instead of retyping the entire command, just run sudo !! — it re-runs your last command with sudo prepended.

Tab Completion

Press Tab and Bash will try to complete what you're typing:

# Type "ls /ho" then press Tab — it completes to:
ls /home/

# Type "ls /home/r" then press Tab — it completes to:
ls /home/ray/

# Double-press Tab to see all possible completions
ls /home/ray/D    # Tab Tab → shows Desktop, Documents, Downloads

💡 Tab Completion Works Everywhere

Tab completion works for commands, file paths, directory names, and even some options. It's the single most useful habit to develop — if you're not pressing Tab constantly, you're working too hard.

Keyboard Shortcuts

These shortcuts work in Bash and will dramatically speed you up:

Shortcut Action
Ctrl + C Cancel the current command
Ctrl + L Clear the screen
Ctrl + A Move cursor to the beginning of the line
Ctrl + E Move cursor to the end of the line
Ctrl + U Delete from cursor to the beginning of the line
Ctrl + K Delete from cursor to the end of the line
Ctrl + W Delete the previous word
Ctrl + D Exit the terminal (same as typing exit)
Ctrl + R Reverse-search command history

⚠️ Ctrl+C vs. Ctrl+V

In the terminal, Ctrl + C does not copy text — it cancels the running command. Copy/paste shortcuts differ by platform:

  • Ubuntu/Linux terminal: Ctrl + Shift + C to copy, Ctrl + Shift + V to paste
  • WSL / Windows Terminal: Regular Ctrl + C/V works for copy/paste when no command is running
  • macOS Terminal: ⌘ Cmd + C to copy, ⌘ Cmd + V to paste (these never conflict with Ctrl+C because Mac uses the ⌘ key)

Exercises

🏋️ Exercise 1: Explore the Prompt

Run these commands and write down what each part of the output means:

whoami
hostname
pwd
echo $SHELL
💡 Solution
  • whoami → your username (e.g., ray)
  • hostname → your computer's name
  • pwd → your current directory (e.g., /home/ray)
  • echo $SHELL → your shell program (e.g., /bin/bash)

🏋️ Exercise 2: Command Anatomy

For each command below, identify the command, options, and arguments:

ls -lh /tmp
echo "Hello World"
date --utc
cal -3
💡 Solution
Full CommandCommandOptionsArguments
ls -lh /tmpls-lh/tmp
echo "Hello World"echonone"Hello World"
date --utcdate--utcnone
cal -3cal-3none

🏋️ Exercise 3: History and Tab

Practice these time-savers:

  1. Run ls -la /home
  2. Press to recall it, then press Enter to run it again
  3. Type his and press Tab — it should complete to history
  4. Run history and find the number of your ls command
  5. Re-run it with !<number>
  6. Press Ctrl + R, type ls, and see it find your command
💡 Tip

Press Ctrl + R again to cycle through older matches. Press Enter to run the found command, or Esc to edit it first.

🏋️ Exercise 4: Keyboard Shortcuts

Type this command but don't press Enter:

echo "I am learning Linux and it is going great"

Now practice:

  1. Ctrl + A — cursor jumps to the start
  2. Ctrl + E — cursor jumps to the end
  3. Ctrl + U — clears everything before the cursor
  4. Retype the command, then press Ctrl + C to cancel

Knowledge Check

❓ Question 1

What is the difference between a shell and a terminal?

❓ Question 2

In the prompt ray@ubuntu:~$, what does the ~ represent?

❓ Question 3

In the command ls -la /home, what is /home?

Summary

🎉 Key Takeaways

  • The terminal is the window; the shell (Bash) interprets your commands
  • Open the terminal with Ctrl + Alt + T on Ubuntu, launch Ubuntu from the Start menu in WSL, or press ⌘ Cmd + Space and type "Terminal" on macOS
  • The prompt tells you your username, hostname, current directory, and privilege level
  • Commands follow the pattern: command [options] [arguments]
  • Use ↑/↓ arrows for history, Tab for completion, Ctrl+R to search
  • Ctrl+C cancels a command; Ctrl+L clears the screen

🚀 What's Next?

Now that you know how to use the terminal, it's time to explore the Linux filesystem. In the next lesson, you'll learn how directories are organized and how to move around them.