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 /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