Quick Answer
The terminal (also called the command line or shell) is a text-based way to control your computer. Instead of clicking buttons, you type commands. Developers use it because it is faster, more precise, and many developer tools only work through it.
A dark industrial terminal with a mechanical keyboard and deep red glowing screen: a command interface built for precision, not decoration.
The terminal is a direct line to the machine. No icons, no menus, no abstraction. You type an instruction. The computer executes it. That is the entire contract.

It looks scary. It is not.

The terminal is just a different way of talking to your computer, text instead of clicks. Everything you do by clicking icons and menus can also be done in the terminal. And many things you need to do as a builder can only be done in the terminal.

When you open a terminal, you see something like:

lindamohamed@macbook ~ %

This is the prompt. The ~ symbol means you are in your home directory. The % (or $ on some systems) signals that the shell is waiting for input. Type a command and press Enter.

Terminal, shell, command line, what’s what

These terms overlap and people use them interchangeably. The technical distinctions:

  • Terminal, the window application (Terminal.app, iTerm2, Windows Terminal)
  • Shell, the program running inside it that interprets commands. On macOS the default is zsh. On Linux, usually bash. Fish is popular for its auto-suggestions.
  • Command line / CLI, the general concept of text-based interaction, or a specific tool’s text interface (“the Git CLI”)

When someone says “open your terminal”, they mean: open the application and get to a shell prompt.

Why developers use the terminal

Speed. mkdir my-project && cd my-project creates a folder and enters it in under a second. The equivalent click path takes much longer.

Power. You can chain commands, search through thousands of files, rename hundreds of files at once, or run scripts that automate repetitive tasks, none of which is practical with a graphical interface.

Tools. Git, Node.js, Python, Docker, package managers, virtually every developer tool is primarily or exclusively terminal-based.

Remote access. You cannot click a server sitting in a data centre in another country. You connect to it via SSH (Secure Shell), a terminal connection over the internet. Most server management happens this way.

Reproducibility. A series of terminal commands can be saved as a script and run exactly the same way on any machine. This is how automation and deployment pipelines work.

Common commands you will see

You will encounter these constantly. You do not need to memorise them now.

CommandWhat it does
lsList files in the current directory
ls -laList all files including hidden ones, with details
cd projectsMove into the “projects” folder
cd ..Go up one level to the parent folder
pwdPrint the full path of the current directory
mkdir my-appCreate a new folder
rm file.txtDelete a file (permanent, no trash)
rm -rf folder/Delete a folder and everything in it (be careful)
cp file.txt backup.txtCopy a file
mv file.txt new-name.txtMove or rename a file
cat file.txtPrint a file’s contents to the screen
grep "error" logs.txtSearch for “error” inside a file

And developer-specific commands:

CommandWhat it does
git statusCheck what has changed in a Git repository
git add .Stage all changes for a commit
npm installInstall JavaScript packages listed in package.json
npm run devStart the development server
python app.pyRun a Python file
docker psList running containers

Paths: where things are

The terminal works with file paths. Understanding paths removes a lot of confusion.

Absolute path: starts from the root, like /Users/linda/projects/my-app. Unambiguous, works from anywhere.

Relative path: relative to your current location. If you are in /Users/linda, then projects/my-app points to the same place. .. means “up one level”. ./ means “current directory”.

When you see cd /var/log in an instruction, that is an absolute path. When you see cd ../src, that is relative.

Setting up your terminal

Mac: Terminal is built in. Go to Applications → Utilities → Terminal. Most developers install iTerm2 for better features. macOS uses zsh by default; consider Oh My Zsh for a better experience.

Windows: Install Windows Terminal (free, from Microsoft Store). Then install WSL 2 (Windows Subsystem for Linux) to get a real Ubuntu terminal. This is the standard developer setup on Windows.

Linux: Any terminal emulator works, GNOME Terminal, Konsole, Alacritty.

Cloud editors like GitHub Codespaces , Replit , and StackBlitz have terminals built in. You can develop entirely in the browser without installing anything locally.

AI tools and the terminal

When you use Claude Code, Cursor, or similar AI coding tools, they run commands in the terminal on your behalf. Understanding what those commands are, at a high level, means you can:

  • Catch mistakes before they cause damage (rm -rf on the wrong folder)
  • Ask smarter follow-up questions (“what does that flag do?”)
  • Run commands yourself when the AI gets it wrong

When an AI assistant says “run npm run dev in your terminal”, you now know: it is asking you to open the text interface, navigate to your project folder, and type that command to start the development server.

Further reading

What’s next

Next: What is Version Control? , how developers track every change they make to their code.