Our mega cheat sheet of Mac terminal commands provides a great reference for all the important commands you should know.

macOS is an intuitive operating system, so you don’t have to spend lot of time learning the basics; Knowing this, why should you learn and take advantage of the Unix command line available on your Mac? We have four good reasons:
- There are dozens of open source and freely available Unix-based apps. You don’t have to spend money on these.
- When you’re having difficulty searching for files in Spotlight, you can turn to Unix search tools. They’re way more powerful than Spotlight.
- You can manage files, folders, and file archives in an automated manner. Setting up a cron job will handle this automatically.
- It gives you more power and control over your system.
With so many Mac commands, it’s often difficult to remember and use them all. We’re here to help with a detailed cheat sheet of Mac Terminal commands you can use to unlock enhanced productivity on your system.
The Mac Terminal Commands Cheat Sheet
| List Directory Contents | |
|---|---|
| ls | Display the name of files and subdirectories in the directory |
| ls -C | Force multi-column output of the listing |
| ls -a | List all entries including those with .(period) and ..(double period) |
| ls -1 | Output the list of files in one entry per line format |
| ls -F | Display a / (slash) immediately after each path that is a directory, * (asterisk) after executable programs or scripts, and @ after a symbolic link |
| ls -S | Sort files or entries by size |
| ls -l | List in a long format. Includes file mode, owner and group name, date and time file was modified, pathname, and more |
| ls -lt | List the files sorted by time modified (most recent first) |
| ls -lh | Long listing with human readable file sizes in KB, MB, or GB |
| ls -lo | List the file names with size, owner, and flags |
| ls -la | List detailed directory contents, including hidden files |
| File Size and Disk Space | |
| du | List usage for each subdirectory and its contents |
| du -sh [folder] | Human readable output of all files in a directory |
| du -s | Display an entry for each specified file |
| du -sk* | sort -nr | List files and folders, totaling the size including the subfolders. Replace sk* with sm* to list directories in MB |
| df -h | Calculate your system’s free disk space |
| df -H | Calculate free disk space in powers of 1,000 (as opposed to 1,024) |
| File and Directory Management | |
| mkdir |
Create new folder named |
| mkdir -p |
Create nested folders |
| mkdir |
Create several folders at once |
| mkdir “ |
Create a folder with a space in the filename |
| rmdir |
Delete a folder (only works on empty folders) |
| rm -R |
Delete a folder and its contents |
| touch |
Create a new file without any extension |
| cp |
Copy a file to the folder |
| cp |
Copy a file to the current folder |
| cp |
Copy a file to the folder and rename the copied file |
| cp -R |
Copy a folder to a new folder with spaces in the filename |
| cp -i |
Prompts you before copying a file with a warning overwrite message |
| cp |
Copy multiple files to a folder |
| rm |
Delete a file (This deletes the file permanently; use with caution.) |
| rm -i |
Delete a file only when you give confirmation |
| rm -f |
Force removal without confirmation |
| rm |
Delete multiple files without any confirmation |
| mv |
Move/rename |
| mv |
Move a file to the folder, possibly by overwriting an existing file |
| mv -i |
Optional -i flag to warn you before overwriting the file |
| mv *.png ~/ |
Move all PNG files from current folder to a different folder |
| Command History | |
| Ctrl + R | Search through previously used commands |
| history n | Shows the previous commands you’ve typed. Add a number to limit to the last n items |
| ![value] | Execute the last command typed that starts with a value |
| !! | Execute the last command typed |
| Permissions | |
| ls -ld | Display the default permission for a home directory |
| ls -ld/ |
Display the read, write, and access permission of a particular folder |
| chmod 755 |
Change the permission of a file to 755 |
| chmod -R 600 |
Change the permission of a folder (and its contents) to 600 |
| chown |
Change the ownership of a file to user and group. Add -R to include folder contents |
| Processes | |
| ps -ax | Output currently running processes. Here, a shows processes from all users and x shows processes that are not connected with the Terminal |
| ps -aux | Shows all the processes with %cpu, %mem, page in, PID, and command |
| top | Display live information about currently running processes |
| top -ocpu -s 5 | Display processes sorted by CPU usage, updating every 5 seconds |
| top -o rsize | Sort top by memory usage |
| kill PID | Quit process with ID |
| ps -ax | grep |
Find a process by name or PID |
| Network | |
| ping |
Ping host and display status |
| whois |
Output whois info for a domain |
| curl -O <url/to/file> | Download file via HTTP, HTTPS, or FTP |
| ssh |
Establish SSH connection to |
| scp |
Copy |
| Homebrew | |
| brew doctor | Check brew for potential problems |
| brew install |
Install a formula |
| brew uninstall |
Uninstall a formula |
| brew list | List all the installed formulas |
| brew search | Display available formulas for brewing |
| brew upgrade | Upgrade all outdated and unpinned brews |
| brew update | Fetch latest version of homebrew and formula |
| brew cleanup | Remove older version of installed formula |
| brew tap homebrew/cask | Tap the cask repository from GitHub |
| brew cask list | List all installed casks |
| brew cask install |
Install the given cask |
| brew cask uninstall |
Uninstall the given cask |
| Search | |
| find |
Find all files named |
| grep “ |
Output all occurrences of |
| grep -rl “ |
Search for all files containing |
| Output | |
| cat |
Output the content of |
| less |
Output the contents of |
| head |
Output the first 10 lines of |
| Appends the output of |
|
| Direct the output of |
|
| Direct the output of |
The end!