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 /orrm -rf ~.
Links
ln target linkname # hard link (same inode, same filesystem) ln -s target linkname # symbolic (soft) link ln -sf target linkname # force: replace existing symlink readlink -f linkname # resolve symlink to real path ls -la # shows -> target for symlinks
| Type | Cross-FS | Broken if target deleted | Shows in ls |
|---|---|---|---|
| Hard link | No | No | looks like regular file |
| Symlink | Yes | Yes | link -> target |
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