Skip to content

Module 0.2: What is a Terminal?

Complexity: [QUICK] - Absolute beginner

Time to Complete: 20-25 minutes

Prerequisites: None. Seriously, none. If you can read this sentence, you’re ready.


After this module, you will be able to:

  • Open a terminal on your operating system and recognize the prompt
  • Run basic commands (echo, date, whoami) and read their output
  • Explain why engineers prefer the terminal over GUIs for server work
  • Recover from common beginner mistakes (missing quotes, stuck prompts) using Ctrl+C

Every single tool in modern software engineering — Kubernetes, Docker, cloud platforms, automation scripts — starts with one thing: the terminal.

You might have heard people call it “the command line” or “the CLI” or “the shell.” It sounds intimidating. It looks like something from a 1990s hacker movie. But here’s the truth: it’s just another way to talk to your computer, and you’re going to learn it right now.

By the end of this module, you’ll have typed your first commands. That’s all it takes to start.


Let’s start with what you already know.

Right now, you’re looking at your computer screen. You see icons, windows, buttons, menus. You click things with your mouse. You drag files into folders. You tap on apps to open them.

This is called a GUI — a Graphical User Interface.

  • Graphical: It uses pictures and visuals.
  • User: That’s you.
  • Interface: The way you interact with the computer.

A GUI is how most people use computers every day. When you open a web browser by clicking its icon, that’s a GUI. When you drag a photo into a folder, that’s a GUI. When you press the “Send” button on an email, that’s a GUI.

GUIs are great for everyday tasks. They’re visual, intuitive, and you don’t need to memorize anything — you just point and click.

So why would anyone want something different?


A terminal (also called a command line or CLI) is a text-based way to talk to your computer.

Instead of clicking icons, you type instructions. Instead of dragging files, you write a command. Instead of navigating menus, you tell the computer exactly what to do.

Here’s what a terminal looks like:

$

That’s it. A blinking cursor waiting for your instruction. No icons. No buttons. Just you and the computer having a text conversation.

When we say “CLI,” we mean Command Line Interface:

  • Command: An instruction you type.
  • Line: You type it on a line of text.
  • Interface: The way you interact with the computer.

Imagine you’re at a restaurant.

GUI = Ordering from a menu with pictures

You look at the glossy menu. You see a photo of a burger. You point at it. The waiter brings it. Easy! But you get exactly what’s in the picture — no modifications, no special requests (well, maybe a few).

Terminal = Talking directly to the chef

You walk into the kitchen and say: “I want a burger with extra pickles, no onions, toasted bun, cooked medium-rare, with the special sauce on the side.” The chef nods and makes exactly what you asked for.

It takes more knowledge to talk to the chef — you need to know what’s possible, what words to use. But you get far more control and you can describe exactly what you want.

That’s the terminal. More power, more precision, and once you learn the language, it’s often faster than pointing and clicking.

We’ll carry this restaurant kitchen analogy throughout these modules. The terminal is your kitchen. Commands are your recipes. You’re learning to be the chef.


You might be thinking: “If GUIs are easier, why would anyone use a terminal?”

Great question. Here are four reasons:

Renaming 500 files with a GUI means clicking each one, right-clicking, selecting “Rename,” typing the new name… 500 times.

With the terminal? One line:

Terminal window
for f in *.txt; do mv "$f" "backup_$f"; done

That renames all 500 files in under a second. One command instead of 500 clicks.

You can save terminal commands in a file (called a script — think of it as a written recipe) and run them again and again. Every morning at 6 AM, automatically back up your files. Every time you save code, automatically check it for errors. GUIs can’t do that easily.

Most servers (the powerful computers that run websites and apps) don’t have screens, mice, or GUIs at all. They sit in data centers, and the only way to talk to them is through a terminal over the internet. If you want to work with servers — and in Kubernetes, you will — the terminal is your only option.

When you click through a GUI, there’s no record of what you did. But when you type commands, you have a history. You can share those commands with a teammate. You can write them down. You can repeat them perfectly every time.

Stop and think: Imagine you need to set up 10 identical servers for a new application. With a GUI, you’d click through the same setup screens 10 times, hoping you don’t miss a checkbox on server #7. With a terminal, you write the setup commands once, save them in a script, and run that script on all 10 servers. Which approach is more likely to give you 10 identical servers?

The Cost of the Missed Checkbox In 2014, a major cloud provider experienced a massive outage because an engineer was manually configuring a fleet of servers using a GUI control panel. On server 42 of 50, they accidentally missed a single checkbox for a critical networking setting. That single human error caused a cascading failure resulting in four hours of downtime and affecting millions of customers. If they had used a terminal script to apply the configuration, the exact same settings would have been applied flawlessly to all 50 servers.

GUI vs Terminal — Honest Trade-offs We praise the terminal a lot here, but GUIs genuinely win in several areas. If you are looking at visual monitoring dashboards (like Grafana) to spot a sudden spike in traffic, editing complex architecture diagrams, or exploring a brand-new application for the very first time, a GUI is vastly superior. The rule of thumb: use GUIs for consuming visual information and initial exploration; use the terminal for text manipulation, automation, and precise execution.


  1. The first computers had no screens at all. Early programmers used punch cards — literal pieces of cardboard with holes in them — to give instructions to computers. The terminal is the modern descendant of those text-based interactions. GUIs didn’t appear until the 1970s and didn’t go mainstream until the 1980s with the Apple Macintosh.

  2. The word “terminal” comes from the physical device. In the 1960s-70s, a “terminal” was an actual machine — a keyboard and a screen (or printer) connected to a mainframe computer. Today’s terminal is a software program that simulates that old device. It’s called a “terminal emulator” because it emulates (imitates) the original hardware.

  3. Most of the internet runs on terminal commands. The servers powering Google, Netflix, Amazon, and nearly every website you visit are managed through terminals. System administrators (sysadmins) and engineers type commands to keep these services running 24/7.


Let’s do this! Here’s how to open a terminal on your computer:

  1. Press Cmd + Space to open Spotlight Search.
  2. Type Terminal.
  3. Press Enter.

You’ll see a window appear with text that looks something like:

Last login: Mon Mar 23 10:15:00 on ttys000
yourname@your-mac ~ %

On macOS, your prompt ends with % (if using zsh, the default) or $ (if using bash). Both are fine.

Windows has a few options:

Option A: PowerShell

  1. Press the Windows key.
  2. Type PowerShell.
  3. Press Enter.

Option B: Windows Terminal (recommended, free from Microsoft Store)

  1. Install “Windows Terminal” from the Microsoft Store.
  2. Open it from the Start menu.

Option C: WSL (Windows Subsystem for Linux — the best option for this curriculum)

  1. Open PowerShell as Administrator.
  2. Type: wsl --install
  3. Restart your computer.
  4. Open “Ubuntu” from the Start menu.

For the KubeDojo curriculum, WSL is recommended on Windows because Kubernetes tools work best in a Linux environment. Don’t worry about this now — just use whatever terminal you can open today.

  1. Press Ctrl + Alt + T.

That’s usually it! If that doesn’t work, look for “Terminal” in your applications menu.


When you open your terminal, you’ll see something like this:

yourname@yourcomputer ~ $

This is called the prompt. It’s the terminal saying: “I’m ready. What do you want me to do?”

Let’s break it down:

PartMeaningAnalogy
yournameYour username on this computerYour name tag in the kitchen
@”at”
yourcomputerThe name of your computerThe name of the restaurant
~Your current location (home directory)Which room of the kitchen you’re in
$ or %”I’m ready for your command”The chef saying “Order up — what do you need?”

The $ (or % on macOS) is the most important part. It means: the terminal is waiting for you to type something.

In this curriculum, when you see $ at the start of a line, it means “type what comes after it.” You don’t type the $ itself — it’s just showing you the prompt.

For example, when you see:

Terminal window
$ echo "Hello"

You type: echo "Hello" and then press Enter. You don’t type the $.


Ready? Let’s type your very first terminal command.

Pause and predict: What do you think echo "Hello, World!" will do? The command is called echo — like an echo in a canyon. Take a guess before running it.

In your terminal, type this and press Enter:

Terminal window
$ echo "Hello, World!"

You should see:

Hello, World!

Congratulations! You just ran a command!

Let’s understand what happened:

  • echo is a command. It tells the computer: “Repeat back whatever I give you.” Think of it like an echo in a canyon — you shout something, and it comes back to you.
  • "Hello, World!" is the argument — the thing you’re giving to the command. It’s what you want echoed back.

In our restaurant analogy: echo is like saying to the chef, “Repeat my order back to me.” And "Hello, World!" is the order.

Let’s try a few more. Type each one and press Enter:

What’s today’s date?

Terminal window
$ date

You should see something like:

Mon Mar 23 14:30:00 UTC 2026

The date command asks your computer: “What time and date is it right now?”

Who am I logged in as?

Terminal window
$ whoami

You should see your username:

yourname

The whoami command asks: “What user am I?” This might seem silly on your personal computer, but when you’re logged into remote servers, it’s actually really useful to double-check who you’re logged in as.

What computer am I on?

Terminal window
$ hostname

You should see your computer’s name:

your-mac.local

Every command follows a pattern:

command [options] [arguments]
PartWhat It IsRestaurant Analogy
CommandThe action to perform”Make me a burger”
OptionsHow to do it (usually start with -)“Well done, extra cheese”
ArgumentsWhat to do it with/to”With the Angus beef patty”

For example:

Terminal window
$ echo "Hello"
  • Command: echo (the action: repeat something)
  • Argument: "Hello" (what to repeat)

Here’s one with an option:

Terminal window
$ date -u
  • Command: date (the action: show the date)
  • Option: -u (show it in UTC time, not your local time)

Don’t worry about memorizing this structure. It’ll become natural as you practice. Just like you didn’t memorize grammar rules before you started talking — you picked them up by using the language.


Everyone makes these when starting out. That’s completely normal.

MistakeWhat HappensFix
Typing the $ symbol$: command not found or unexpected behaviorDon’t type the $ — it represents the prompt, not part of the command
Forgetting to press EnterNothing happens, the command just sits therePress Enter to run the command
Typos in command namesechoo: command not foundCheck your spelling. The terminal is strict — echoo is not echo
Wrong capitalizationEcho: command not foundMost commands are lowercase. echo works, Echo doesn’t
Forgetting closing quoteThe terminal waits for more input with >Type the closing " and press Enter, or press Ctrl+C to cancel
Panicking when something looks wrongStress!Press Ctrl+C to cancel almost anything. It’s your emergency stop button

Ctrl+C is your best friend. If anything goes wrong, if the terminal seems stuck, if you accidentally started something you didn’t mean to — press Ctrl+C. It cancels the current operation. Think of it as the fire extinguisher in the kitchen. Always within reach.

When you move from learning to working on real servers, the stakes get higher. Here are mistakes that happen in the real world:

Production MistakeReal ConsequenceHow to Prevent It
Running a command on the wrong server because you didn’t read the promptDeleted the production database instead of the staging database (This actually happened at GitLab in 2017, causing massive data loss).Always double-check the username@hostname in your prompt before pressing Enter on a destructive command.
Copying and pasting multiple lines of commands from the internet directly into the terminalThe terminal might execute hidden malicious commands or run incomplete commands immediately.Paste into a plain text editor first, review exactly what the commands do, and then copy them into your terminal.
Running a script without testing it firstA small typo in an automated script takes down 50 servers simultaneously instead of just one.Test scripts on a single, non-production server (a staging environment) before running them everywhere.

Test your understanding! Try to answer before revealing the solution.

Question 1: You accidentally started a command that is printing endless lines of text to your screen, and you cannot type anything new. What is your immediate next step, and why?

Show Answer

You should immediately press Ctrl+C. This is the universal “stop what you’re doing” signal in the terminal. When you press this shortcut, it sends an interrupt signal to the running process, telling it to terminate immediately. This is essential because it gives you a reliable escape hatch if a command hangs, takes too long, or starts doing something you didn’t intend. Knowing you can always stop a process gives you the confidence to explore and learn safely.

Question 2: You are trying to echo a paragraph of text, but after you press Enter, the terminal just shows a > symbol on a new line instead of your normal prompt. What has likely occurred, and how do you resolve the situation?

Show Answer

You probably forgot a closing quote (" or '). The terminal displays the > symbol because it thinks your command is still incomplete and is waiting for you to finish providing the text string. To fix this, you can simply type the missing closing quote and press Enter to complete the command, or you can press Ctrl+C to cancel everything and start over with a fresh prompt. This happens frequently when working with text arguments, so recognizing the > symbol saves you from unnecessary panic.

Question 3: You are switching between multiple terminal windows to troubleshoot an issue. In one window, you notice the prompt says alice@db-primary-main /etc/config $. Based on this prompt, what specific information do you know about your current session?

Show Answer

Based on the prompt structure, you are logged in as the user alice and you are currently working on a machine named db-primary-main. Furthermore, the /etc/config portion indicates that your current location (or directory) within that machine is the /etc/config folder. The $ symbol confirms that the terminal is ready for you to type a command as a standard user. Understanding this prompt is critical because it acts as your compass, constantly reminding you of exactly who and where you are before you execute potentially impactful instructions.

Question 4: You need to write a document that records exactly when you performed a server update. Why would date in a terminal script be more reliable than looking at the clock on your wall?

Show Answer

The date command gives you the exact timestamp directly from the computer’s system clock, which inherently includes accurate timezone and precise second-level information. Relying on a wall clock introduces significant human error, such as applying the wrong timezone conversion, rounding up to the nearest minute, or simply forgetting to write the time down immediately. In a terminal script, the timestamp is generated automatically, is machine-readable, and becomes part of an immutable permanent record. In production environments, precise, system-generated timelines are necessary to effectively diagnose incidents and track the exact sequence of events.

Question 5: You need to change a configuration setting on 50 servers. Describe why a terminal approach is safer than a GUI approach, and identify at least two specific risks of the GUI method.

Show Answer

Using the terminal is safer because it allows you to write a single, testable script that applies the exact same change consistently across all 50 servers without human intervention. The GUI approach is highly risky because human fatigue makes it almost inevitable that you will make a mistake when repeating the same manual clicks 50 times. One specific risk of the GUI is accidentally missing a crucial checkbox on one of the servers, causing inconsistent configurations that are incredibly difficult to troubleshoot later. Another risk is the lack of an audit trail; a GUI rarely records every click you make, whereas a terminal script provides a permanent, reviewable document of exactly what was executed.

Question 6: A junior colleague argues that GUIs are universally better because they are more intuitive and visual. Describe three specific engineering scenarios where relying on a terminal is not just preferred, but absolutely necessary for success.

Show Answer

First, when you need to automate repetitive tasks, such as renaming 500 files or setting up daily backups; the terminal allows you to write a script that does this instantly and perfectly every time, which a GUI cannot easily replicate. Second, when you are managing remote servers in data centers or the cloud, these machines typically do not have a graphical interface installed at all to save resources, making terminal access via SSH the only way to communicate with them. Third, when you need to share a complex workflow with a teammate; you can simply copy and paste terminal commands to guarantee they execute the exact same steps, whereas explaining GUI steps requires creating ambiguous screenshots or lengthy written click-paths. In all these scenarios, the terminal provides the automation, access, and precision that modern engineering strictly requires.


Hands-On Exercise: Your First Terminal Session

Section titled “Hands-On Exercise: Your First Terminal Session”

Open a terminal and successfully run four commands.

  1. Open your terminal using the instructions for your operating system (see “Opening Your Terminal” above).

  2. Run your first echo command:

Terminal window
$ echo "Hello, World!"

Expected output: Hello, World!

  1. Check the date:
Terminal window
$ date

Expected output: Today’s date and time.

  1. Find out who you are:
Terminal window
$ whoami

Expected output: Your username.

  1. Make it personal — echo your own name:
Terminal window
$ echo "My name is [YOUR NAME] and I just used the terminal!"

Replace [YOUR NAME] with your actual name.

  1. Try combining it:
Terminal window
$ echo "Today is $(date) and I am $(whoami)"

This is a sneak peek at something powerful: you can put commands inside $(...) and the terminal will run them and insert the result. Don’t worry about fully understanding this yet — just notice that it works!

You’ve completed this exercise when you can:

  • Open a terminal window
  • Run echo "Hello, World!" and see the output
  • Run date and see today’s date
  • Run whoami and see your username
  • Run the combined echo command and see a sentence with today’s date and your username

You just used a tool that senior engineers use every day. You belong here.


You’ve taken the first step — you opened a terminal and ran commands. In the next modules, you’ll learn to navigate the filesystem, work with files, and start building real skills.

Next Module: Module 0.3: First Terminal Commands — Learn how to open the terminal and run your first commands.