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/user — ls 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.txt2>— 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 stopSIGKILL(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
Symbolic Link (symlink)
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_URLenvironment 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
| Term | One-liner |
|---|---|
| Shell | Program that interprets commands (bash, zsh) |
Pipe (|) | Pass stdout of one command to stdin of the next |
| Exit code | 0 = success, non-zero = error |
| Daemon | Background process running as a service |
| PID | Unique number identifying a running process |
| chmod | Change file permissions |
| chown | Change file ownership |
| Environment variable | Key-value configuration available to all processes |
| PATH | Directories searched when you type a command |
| cron | Unix job scheduler; crontab defines schedules |
| ssh | Encrypted remote terminal connection |
| stdin/stdout/stderr | Standard input, output, and error streams |