People use the words “terminal”, “shell”, “command line”, and “console” interchangeably. They are not the same thing. Understanding the distinction makes you a clearer communicator and a better troubleshooter.
Terminal vs Shell vs Console
| Term |
What It Is |
Example |
| Console |
Physical hardware — keyboard + screen attached to a server |
The actual server in a data centre |
| Terminal |
Originally a physical device; now a program that emulates one |
GNOME Terminal, iTerm2, Windows Terminal |
| Terminal Emulator |
A GUI application that emulates a terminal |
gnome-terminal, iTerm2, Alacritty |
| Shell |
The program running inside the terminal that processes your commands |
bash, zsh, fish |
Think of it this way:
- The terminal emulator is the window you see
- The shell is the program running inside that window
- The console is the physical interface (mostly historical now — you access servers remotely via SSH)
┌─────────────────────────────────┐
│ Terminal Emulator (iTerm2) │ ← the graphical window
│ ┌───────────────────────────┐ │
│ │ Shell (bash / zsh) │ │ ← the command processor inside
│ │ alice@server:~$ ▌ │ │
│ └───────────────────────────┘ │
└─────────────────────────────────┘
Common Terminal Emulators
| Emulator |
Platform |
Key Feature |
| GNOME Terminal |
Linux (GNOME desktop) |
Default on Ubuntu — simple, solid |
| Konsole |
Linux (KDE desktop) |
Feature-rich, tabs, profiles |
| iTerm2 |
macOS |
Split panes, search, profiles, hotkey window |
| Windows Terminal |
Windows |
Multiple tabs, WSL2 integration, GPU rendering |
| Alacritty |
Cross-platform |
GPU-accelerated, fastest terminal emulator |
| Kitty |
Cross-platform |
GPU-accelerated, ligature support, tiling |
| Warp |
macOS / Linux |
AI-integrated, block-based output, modern UX |
For this tutorial, any terminal emulator works. What matters is the shell running inside it.
Essential Keyboard Shortcuts
These shortcuts work in virtually any terminal running Bash or zsh. Learning them makes you dramatically faster.
Process Control
| Shortcut |
Action |
Ctrl+C |
Kill the currently running command (sends SIGINT) |
Ctrl+Z |
Suspend (pause) the current command — resume with fg |
Ctrl+D |
Send EOF (end of input) — also exits the shell if line is empty |
Ctrl+\ |
Quit the process (sends SIGQUIT — stronger than Ctrl+C) |
# Example: Ctrl+C stops a running process
$ ping google.com
PING google.com (142.250.80.46): 56 data bytes
64 bytes from 142.250.80.46: icmp_seq=0 ttl=115 time=12.3 ms
^C ← Ctrl+C pressed here
--- google.com ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
Line Editing (Readline Shortcuts)
| Shortcut |
Action |
Ctrl+A |
Move cursor to beginning of line |
Ctrl+E |
Move cursor to end of line |
Ctrl+K |
Cut text from cursor to end of line |
Ctrl+U |
Cut text from cursor to beginning of line |
Ctrl+Y |
Paste (yank) last cut text |
Ctrl+W |
Delete word to the left of cursor |
Alt+F |
Move cursor forward one word |
Alt+B |
Move cursor backward one word |
Ctrl+L |
Clear the screen (same as clear command) |
History Navigation
| Shortcut |
Action |
↑ / ↓ |
Navigate through command history |
Ctrl+R |
Reverse incremental search through history |
Ctrl+G |
Cancel the current history search |
# Ctrl+R demo — type part of a previous command
(reverse-i-search)`docker': docker run -it ubuntu bash
# Press Enter to run, or Ctrl+R again to find the next match
Tab Completion
| Action |
Result |
Tab (single press) |
Complete if unique |
Tab Tab (double press) |
Show all possible completions |
Type partial + Tab Tab |
Show matching completions |
$ cd /usr/lo<Tab>
$ cd /usr/local/
$ ls /etc/sy<Tab><Tab>
sysctl.conf sysctl.d/ systemd/
tmux — Terminal Multiplexer Basics
tmux lets you split your terminal into multiple panes, run multiple sessions, and keep sessions alive even if your SSH connection drops. It is essential for remote server work.
# Install tmux
sudo apt install tmux -y
# Start a new tmux session
tmux
# Start a named session
tmux new -s mysession
Essential tmux Key Bindings
All tmux commands start with the prefix key: Ctrl+B (press together, release, then press the next key)
| Keys |
Action |
Ctrl+B % |
Split pane vertically (left/right) |
Ctrl+B " |
Split pane horizontally (top/bottom) |
Ctrl+B →/←/↑/↓ |
Move between panes |
Ctrl+B c |
Create new window |
Ctrl+B n |
Next window |
Ctrl+B p |
Previous window |
Ctrl+B d |
Detach from session (session keeps running) |
Ctrl+B [ |
Enter scroll mode (use arrows, q to exit) |
# Re-attach to a detached session
tmux attach -t mysession
# List all sessions
tmux ls
Key Takeaways
- Terminal emulator = the window; shell = the program inside
Ctrl+C kills a process, Ctrl+Z suspends it
Ctrl+A/Ctrl+E move cursor to line start/end — use these constantly
Ctrl+R is the fastest way to find and re-run a previous command
Tab completion saves you from typing long paths and command names
- tmux keeps your remote work alive through SSH disconnects