Linux and CLI Vocabulary: 35 Essential Terms for the Terminal

Learn 35 essential Linux and command-line terms: shell, stdin/stdout, pipe, process, permissions, file system hierarchy, environment variables, cron, and more.

Linux is the operating system that runs most web servers, cloud infrastructure, and developer tools. Even if you are not a Linux administrator, understanding the command line is essential for deploying applications, debugging issues, and working with containers. This guide covers the 35 most important Linux and CLI terms.


The Shell

Shell

The shell is the program that interprets your commands and communicates with the operating system kernel. Common shells: bash (Bourne Again Shell), zsh (Z shell), fish, sh (POSIX shell).

“Which shell are you using? I’m on zsh with oh-my-zsh.”

Terminal / Terminal Emulator

The terminal (or terminal emulator) is the application that provides a text-based interface to the shell. Examples: iTerm2 (macOS), Windows Terminal, GNOME Terminal (Linux), Alacritty.

Technical note: The terminal is the window; the shell is the program inside it.

Command Line Interface (CLI)

A CLI is a text-based interface where you interact with a program by typing commands. The alternative is a GUI (Graphical User Interface). Most developer tools have both.

Prompt

The prompt is the text the shell displays to indicate it is ready for input. Typically shows your username, hostname, and current directory: user@hostname:~/projects$

Command

A command is an instruction you give to the shell. Anatomy: command [options] [arguments]

Example: ls -la /home/userls is the command, -la are flags/options, /home/user is the argument.


Input / Output

stdin, stdout, stderr

The three standard I/O streams every Unix process has:

  • stdin (standard input, file descriptor 0) — where a program reads input from (keyboard by default)
  • stdout (standard output, file descriptor 1) — where a program writes normal output
  • stderr (standard error, file descriptor 2) — where a program writes error messages

Pipe (|)

A pipe connects the stdout of one command to the stdin of another. Lets you chain commands together.

cat access.log | grep "ERROR" | wc -l

“Count the number of ERROR lines in the access log.”

Redirect (>, >>, <)

Redirection sends input/output to/from files:

  • > — overwrite: echo "hello" > file.txt
  • >> — append: echo "world" >> file.txt
  • < — redirect input: wc -l < file.txt
  • 2> — redirect stderr: command 2> errors.log

Exit Code

The exit code (or return code) is a number a program returns when it finishes. 0 = success. Any non-zero value = failure. Check with echo $?.

ls nonexistent_file
echo $?  # outputs 2 (file not found)

Processes

Process

A process is a running instance of a program. Every process has a PID (Process ID).

PID (Process ID)

A unique number assigned to each running process. Use ps, top, or htop to see PIDs.

kill / signal

kill sends a signal to a process. Common signals:

  • SIGTERM (15) — politely ask the process to stop
  • SIGKILL (9) — forcefully terminate (cannot be caught or ignored)
kill 1234        # SIGTERM to PID 1234
kill -9 1234     # SIGKILL to PID 1234

Daemon

A daemon is a background process that runs continuously, typically performing a service role. Examples: nginx (web server daemon), sshd (SSH daemon), cron (job scheduler daemon). Pronounced “DEE-mun.”

Foreground / Background

  • Foreground process — runs with the terminal attached (you can see its output; Ctrl+C interrupts it)
  • Background process — runs detached: command &

Use fg to bring a background job to the foreground, bg to continue a stopped job in the background, and jobs to list background jobs.


File System

File System Hierarchy

Linux uses a single root directory /. Key directories:

  • /etc — configuration files
  • /var — variable data (logs, caches, spool)
  • /home — user home directories
  • /tmp — temporary files (cleared on reboot)
  • /usr — user programs and data
  • /bin, /sbin — essential system binaries
  • /proc — virtual filesystem with process info

Path

Absolute path starts from root: /home/user/projects/app
Relative path starts from current directory: ../config or ./start.sh

Permissions (chmod, chown)

Linux file permissions have three levels: owner, group, others. Each can have read (r), write (w), execute (x) permissions.

-rwxr-xr-- means:

  • owner: read, write, execute
  • group: read, execute
  • others: read only

chmod changes permissions: chmod 755 script.sh or chmod +x script.sh
chown changes ownership: chown www-data:www-data /var/www

A symlink is a pointer to another file or directory. Similar to a shortcut. Created with ln -s target link_name.


Environment

Environment Variable

Environment variables are key-value pairs available to all processes running in a shell session. Set with export VAR=value. Commonly used for configuration: DATABASE_URL, PORT, NODE_ENV, SECRET_KEY.

“The app reads the database URL from the DATABASE_URL environment variable.”

PATH

The PATH variable is a colon-separated list of directories the shell searches when you type a command. When you type node, the shell searches each PATH directory for an executable named node.

.env file

A .env file stores environment variables for local development. Libraries like dotenv load it into the process environment. Never commit .env to version control — it often contains secrets.


Job Scheduling

cron / crontab

cron is the Unix job scheduler daemon. A crontab (cron table) is a file defining scheduled tasks. The five fields: minute, hour, day-of-month, month, day-of-week.

# Run backup at 2:30 AM every day
30 2 * * * /scripts/backup.sh

cron expression

A cron expression is the five-field syntax used to define when a job runs. Many cloud services (AWS CloudWatch Events, GitHub Actions, Kubernetes CronJobs) use cron syntax.


Networking from CLI

ssh (Secure Shell)

SSH is a protocol and CLI tool for securely connecting to a remote server. ssh user@hostname opens an encrypted terminal session.

scp / rsync

  • scp — securely copy files between local and remote: scp file.txt user@server:/path/
  • rsync — efficient file syncing (only transfers differences): rsync -avz ./dist/ user@server:/var/www/

curl / wget

  • curl — transfer data from URLs; widely used to test APIs: curl -X POST https://api.example.com/data
  • wget — download files from URLs: wget https://example.com/file.zip

Quick Reference

TermOne-liner
ShellProgram that interprets commands (bash, zsh)
Pipe (|)Pass stdout of one command to stdin of the next
Exit code0 = success, non-zero = error
DaemonBackground process running as a service
PIDUnique number identifying a running process
chmodChange file permissions
chownChange file ownership
Environment variableKey-value configuration available to all processes
PATHDirectories searched when you type a command
cronUnix job scheduler; crontab defines schedules
sshEncrypted remote terminal connection
stdin/stdout/stderrStandard input, output, and error streams