The Mac Terminal can seem boring and hard to use, but if you invest time learning the ins and outs, you can perform tasks without clicking around much. If you're just getting started, read on for our Mac Terminal commands cheat sheet for quick reference in the future.
Before you can try the commands below, you should launch the Terminal app first. You can do so from Applications > Utilities or search for it via Spotlight.
FREE DOWNLOAD: This cheat sheet is available as a downloadable PDF from our distribution partner, TradePub. You'll have to complete a short form to access it for the first time. Download the Mac Terminal Commands Cheat Sheet.
The Mac Terminal Commands Cheat Sheet
| COMMAND | ACTION |
|---|---|
| Keyboard Shortcuts | |
| Tab | Auto-complete file and folder names |
| Cmd+ F | Find instances of specific text in the Terminal |
| Ctrl + A | Go to the beginning of the line you're currently typing on |
| Cmd + A | Select everything in the Terminal |
| Cmd + P | Print Terminal inputs and outputs |
| Ctrl + E | Go to the end of the line you're currently typing on |
| Ctrl + U | Clear the line before the cursor |
| Ctrl + K | Clear the line after the cursor |
| Ctrl + W | Delete the word before the cursor |
| Ctrl + T | Swap the last two characters before the cursor |
| Esc + T | Swap the last two words before the cursor |
| Ctrl + L | Clear the screen |
| Ctrl + C | Kill whatever you're running |
| Ctrl + D | Exit the current shell |
| Option + → | Move the cursor one word forward |
| Option + ← | Move the cursor one word backward |
| Ctrl + F | Move the cursor one character forward |
| Ctrl + B | Move the cursor one character backward |
| Ctrl + Y | Paste whatever was cut by the last command |
| Ctrl + Z | Puts whatever you're running into a suspended background process |
| Ctrl + _ | Undo the last command |
| Option + Shift + Cmd + C | Copy plain text |
| Shift + Cmd + V | Paste the selection |
| exit | End a shell session |
| Basics | |
| / (Forward Slash) | Top-level directory |
| . (Single Period) | Current directory |
| .. (Double Period) | Parent directory |
| ~ (Tilde) | Home directory |
| sudo [command] | Run command with the security privileges of the super user |
| nano [file] | Opens the Terminal editor |
| open [file] | Opens a file |
| [command] -h | Get help about a command |
| man [command] | Show the help manual of the command |
| Change Directory | |
| cd | Home directory |
| cd [folder] | Change directory, e.g. cd Documents |
| cd ~ | Home directory |
| cd / | Root of the drive |
| cd - | Previous directory or folder you last browsed |
| pwd | Show your working directory |
| cd.. | Move up to the parent directory |
| cd../.. | Move up two levels |
| 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 -l / | List of the file system from root with symbolic links |
| 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 a 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 |
| ditto -V [folder path][new folder] | Copy the contents of a folder to a new folder. Here "-V" prints a line of status for every file copied |
| rm | Delete a file (This deletes the file permanently; use it 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 the 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 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 the host and display the status |
| whois | Output whois info for a domain |
| curl -O | Download a file via HTTP, HTTPS, or FTP |
| ssh | Establish SSH connection to |
| scp | Copy |
| arp -a | View a list of all devices on your local network. It will show you the IP and MAC address of all the devices |
| ifconfig en0 | View your device IP and MAC address |
| traceroute [hostname] | Identify the path and the hops traversed by the packets from your device to the destination address |
| Homebrew | |
| brew doctor | Check brew for potential problems |
| brew help | List of useful homebrew formula and cask commands |
| brew install | Install a formula or cask |
| brew uninstall | Uninstall a formula or cask |
| brew list --formula | List only installed formulas |
| brew list --cask | List only installed cask |
| brew deps | List all the dependencies of a formula or cask |
| brew search text|/regex/ | Search formula or cask through regex |
| brew upgrade | Upgrade the formula or cask |
| brew outdated | Search for outdated formula or cask |
| brew outdated --formula | Search for outdated formula |
| brew outdated --cask | Search for outdated cask |
| brew pin [installed_formula] | Pin a formula from getting upgraded |
| brew unpin [installed_formula] | Unpin to upgrade a package |
| brew cleanup | Remove stale lock files and outdated packages for all formulas and casks |
| Environment Variable or Path | |
| printenv | Display a list of currently set environment variables. Also tells you which shell you're using |
| $echo | Ask Terminal to print something and show it to you |
| echo $PATH | Check the value of the PATH variable, which stores a list of directories with executable files |
| echo $PATH >path.txt | Export the path directory to a text file |
| export PATH=$PATH:absolute/path to/program/ | Execute a program via Terminal only in your current session. If you use a program regularly, add the path to the shell configuration file. |
| Search | |
| find | Find all files named |
| find | Find all files larger than |
| find | Find all files less than |
| 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 |
| | Use file contents as input to cmd |
| | Appends the output of |
| | Direct the output of |
| | Direct the output of |
| Terminal Windows and Tabs | |
| Cmd + N | Open a new Terminal window |
| Cmd + T | Open a new Terminal tab |
| Cmd + D | Split the Terminal window into two panes |
| Cmd + | Switch from one Terminal tab to another |
| Cmd + Page Up | Scroll one page up the Terminal window |
| Cmd + Page Down | Scroll one page down the Terminal window |
| Cmd + W | Close a Terminal tab |
| Option + Shift + Cmd + W | Close all Terminal tabs |
There are many commands in this cheat sheet. But you don't have to learn all of them at once! Pick a few that integrate well with your workflow and save you the most time.
Some of these commands can make everyday tasks easier on your Mac. Once you've mastered them all, you'll have a far easier time navigating in the Terminal app on macOS.