Linux Cheatsheet

Files and Directories

Use this Linux reference while you build software engineering projects, review code for technical interview prep, or polish examples for a software engineer resume.

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