Skip to content

Levels 1–4: Beginner

Commands you will type every single day.

Command What it does Why it matters
ls List directory contents See what’s in a folder
ls -l Long listing with permissions, owner, size Inspect file details
ls -a Show hidden files (dotfiles) Config files are hidden by default
pwd Print Working Directory Know exactly where you are
cd dir Change into a directory Navigate the filesystem
cd ~ or cd Go to home directory Quick return to your personal space
mkdir name Create a directory Build your workspace
rmdir name Remove an empty directory Clean up empty dirs

Key concept: The Linux filesystem is a tree rooted at /. Your home directory is /home/username (or /Users/username on macOS). ~ is a shell shortcut for it.


Create, read, copy, move, delete: and archive.

Command What it does Why it matters
cat file Print file contents Read small files instantly
head -n N file Show first N lines Preview large files
tail -n N file Show last N lines Check recent log entries
touch file Create empty file / update timestamp Create files without opening an editor
cp src dst Copy a file Backup before editing
mv src dst Move or rename Rename is just a move to the same directory
rm file Delete a file (permanent, no undo) Clean up: no recycle bin
rm -r dir Delete directory and all contents Remove non-empty directories
tar -czf out.tar.gz dir/ Create compressed archive Bundle files for transfer or backup
tar -tzf file.tar.gz List archive contents Preview without extracting
tar -xzf file.tar.gz Extract archive Unpack in current directory
tar -xzf file.tar.gz -C /target/ Extract to specific directory Control where files land

tar flags:

Flag Meaning
c Create archive
x Extract archive
t List contents
z gzip compression
j bzip2 compression
J xz compression
f Next argument is the filename

Find what you need in files and directories.

Command What it does Why it matters
grep pattern file Search for pattern in file Filter log files, find config values
grep -i pattern file Case-insensitive search When you’re not sure of capitalisation
grep -v pattern file Invert: show lines that do NOT match Exclude noise from output
grep -r pattern . Recursive search Search all files in a directory tree
find . -name '*.txt' Find files by name pattern Locate files when you don’t know where they are
find . -type d Find directories only Browse just the directory structure
wc -l file Count lines How many records in a file?
sort file Sort lines alphabetically Order data for reading or for uniq
uniq file Remove adjacent duplicates Must sort first: uniq only removes consecutive duplicates
cmd1 | cmd2 Pipe: send output of cmd1 to cmd2 Chain tools together: the Unix superpower

Pipe example:

Terminal window
grep ERROR app.log | sort | uniq -c | sort -rn

This finds ERROR lines, sorts them, counts each unique one, then sorts by frequency: showing the most common errors first.


Every file has an owner. Every access is controlled.

-rwxr-xr--
│├┤├─┤├─┤
│││ │ │
│││ │ └── Others: r-- = read only (4)
│││ └───── Group: r-x = read + execute (5)
│└┤──────── Owner: rwx = read + write + execute (7)
└────────── File type: - = file, d = directory, l = symlink
Command What it does
whoami Print current username
id Print UID, GID, and all group memberships
ls -l Show file permissions in long format
chmod 755 file Set permissions numerically (rwxr-xr-x)
chmod +x file Add execute permission for all
chmod 600 file Owner read/write only (private keys)
chown user:group file Change file owner and group

Octal permission values:

Value Permission
4 Read (r)
2 Write (w)
1 Execute (x)
7 rwx (4+2+1)
6 rw- (4+2)
5 r-x (4+1)
4 r– (4)
0 — (none)