Linux Cheatsheet

Files and Directories

Use this Linux reference while you build software engineering projects, review code, or refresh the syntax you reach for most.

Creating Files and Directories

touch file.txt              # create empty file / update timestamp
touch -t 202401011200 f     # set specific timestamp
mkdir mydir                 # create directory
mkdir -p a/b/c              # create parents as needed
mkdir -m 755 mydir          # set permissions on creation

Copying

cp src.txt dst.txt          # copy file
cp -r src/ dst/             # copy directory recursively
cp -a src/ dst/             # archive: preserve perms, timestamps, symlinks
cp -u src dst               # copy only if src is newer
cp -v src dst               # verbose
cp -i src dst               # prompt before overwrite
cp file1 file2 dir/         # copy multiple files to directory

Moving and Renaming

mv old.txt new.txt          # rename file
mv file.txt /tmp/           # move file
mv -i src dst               # prompt before overwrite
mv -n src dst               # never overwrite existing
mv -v src dst               # verbose
# rename multiple files (no built-in mv glob rename)
for f in *.txt; do mv "$f" "${f%.txt}.md"; done

Deleting

rm file.txt                 # delete file
rm -r dir/                  # delete directory recursively
rm -f file                  # force (no error if missing, no prompt)
rm -rf dir/                 # force + recursive (destructive — double-check!)
rm -i file                  # prompt for each file
rmdir emptydir              # remove empty directory only

Never run rm -rf / or rm -rf ~.

File Metadata

stat file.txt           # full metadata (inode, times, perms, blocks)
file report.bin         # detect file type by magic bytes
wc file.txt             # line / word / byte count
wc -l file.txt          # line count only
du -sh dir/             # disk usage of directory (human-readable)
du -sh *                # usage of all items in cwd
ls -lh file.txt         # size from ls

Comparing Files

diff file1 file2            # line-by-line diff
diff -u file1 file2         # unified format (patch-friendly)
diff -r dir1/ dir2/         # recursive directory diff
cmp file1 file2             # byte-by-byte comparison
comm file1 file2            # lines unique to / shared by two sorted files

Special Files

mkfifo mypipe           # named pipe (FIFO)
mknod /dev/mydev c 1 5  # create device node (char, major 1, minor 5)
truncate -s 0 file      # empty a file without deleting
truncate -s 1G disk.img # create sparse file of exact size