The terminal is a program that provides a text-based interface to your computer. Instead of clicking icons and navigating menus, you type requests and get text responses. It predates graphical interfaces by decades and persists because it’s faster for many tasks, enables automation, and provides access to tools with no graphical equivalent. Understanding the terminal and its file system model is a prerequisite for working with tools like Claude Code.
Terminal, Shell, Console, Command Line
The terminology confuses newcomers because terminal, shell, console, and command line are often used interchangeably. The practical distinction: the terminal is the window you type into, while the shell is the program inside that interprets your commands. When someone says “open your terminal” or “use the command line,” they mean the same thing for everyday purposes.
Think of it like a web browser and a search engine. The browser (terminal) is the application you interact with. The search engine (shell) is the thing that processes your input and returns results. You could swap one search engine for another without changing the browser. Similarly, you can run different shells inside the same terminal program.
Common shells include:
- bash — the most widely used, standard on Linux
- zsh — default on macOS since 2019, very similar to bash
- PowerShell — Microsoft’s modern shell for Windows
Basic commands work identically across bash and zsh, and you rarely need to think about which shell you’re using. The distinction matters when you’re writing shell scripts or configuring your environment, but for daily command execution, it’s invisible.
The “You Are Here” Mental Model
The terminal always operates from a specific location in your file system: your working directory. This is the single most important concept for terminal navigation. Every command you run happens relative to where you currently are, unless you specify an absolute path.
Think of it like the “You Are Here” arrow on a mall directory. The arrow doesn’t move unless you walk somewhere. The terminal’s arrow doesn’t move unless you explicitly change directories.
Two commands make this concrete:
pwd (print working directory) shows where you are:
$ pwd/home/username/projectscd (change directory) moves you around:
cd Documents # Enter Documents foldercd ../.. # Go up two levelscd ~/projects/myapp # Jump to absolute path using home shortcutEvery other command — listing files, reading files, creating files — operates relative to this location. When you type ls, you’re asking “what’s in this folder?” When you type cd Documents, you’re walking into the Documents folder.
Path Notation
Paths come in two flavors.
Absolute paths start from the root (/ on Mac/Linux, C:\ on Windows) and work from anywhere: /home/user/projects/app.js. They’re unambiguous — the same absolute path points to the same file regardless of your working directory.
Relative paths are based on your current location: ./src/components/Button.js or ../config/settings.json. They’re shorter and more portable, but they only work when you’re in the right place.
Special path symbols to memorize:
| Symbol | Meaning |
|---|---|
. | Current directory |
.. | Parent directory (one level up) |
~ | Home directory |
/ | Root directory (top of filesystem) |
The .. symbol is particularly useful. If you’re deep in a project — /home/user/projects/app/src/components/ — and you need to get to /home/user/projects/app/, typing cd ../.. is faster than typing the full absolute path. Each .. goes up one level.
The ~ shortcut is equally valuable. No matter where you are in the filesystem, cd ~ takes you home. cd ~/projects takes you to the projects folder inside your home directory. You’ll use this constantly.
The Command Mental Model
Commands are just tiny, focused programs that do one thing well. When you type ls (list files), you’re running a small program that reads the contents of a directory and prints them. When you type cat file.txt, you’re running a program that reads a file and prints its contents.
This “one thing well” philosophy is foundational to Unix-based systems (which includes macOS and Linux). Small, composable tools that each solve one problem — and that you can chain together for complex operations. You don’t need a single program that does everything. You need dozens of small programs that each do their job and hand off results to the next one.
For daily use, you only need about 10 commands. The essential commands cover navigation, file operations, viewing content, and finding things. Master those and you’ll understand what’s happening when tools like Claude Code run commands on your behalf.
Getting Started
- Open your terminal. Terminal.app on Mac, your preferred Linux terminal, or WSL/Git Bash on Windows. See Terminal Cross-Platform Setup for platform-specific instructions.
- Try safe commands. Run
pwd,ls,cd Documents,cd ..,ls -lato get comfortable navigating. These are all read-only — they cannot damage anything. - Navigate your own files. Try to find your Downloads folder, your Desktop, a project directory. Use
pwdto check where you are whenever you feel lost. - Install your tools. Once navigation feels natural, install Claude Code and start working in a project directory.