MacOS Terminal Cheat Sheet
Tested on macOS mojave
When I first switched from windows from macOSX; I faced some difficulties with the terminal and overall keyboard shortcuts (i.e. quick screen-shot). So I compiled this list from the mighty internet
Frequent keyboard shortcuts Link to heading
Key/Command | Description |
---|---|
cmd + shift + . | Hide / Un-hide file |
hold option while click | Show extra context menu |
option + cmd + delete | Delete files permanently |
cmd + shift + 3 | Take Screenshot |
ctrl + space | Change keyboard layout |
f11 | Show desktop |
cmd + option + v | Cut while Pasting |
cmd + Q | Close application |
cmd + W | Close tab |
cmd + tab | Move focus to next application |
ctrl + tab | Move focus to next tab |
cmd + shift + ↑/↓ | Select a whole document from the cursor position in a desired direction |
cmd + shift + ←/→ | Select a line to the left or right |
alt + shift + ←/→ | Select a word left or right from the cursor position |
cmd + , | Open preferences of active application |
cmd + tap | Chrome: open in new tab |
shift + cmd + tap | Chrome: open in new tab & bring to front |
cmd + B | Jetbrains: Goto declaration |
- If you want to close a bunch of applications at once, press Cmd+Tab to bring up the application switcher. Keep holding Cmd, then use the arrow keys to select different applications, pressing “Q” to instantly close the currently selected application. Keep doing this, holding Cmd, until all the apps you want closed are gone.
SHORTCUTS Link to heading
Key/Command | Description |
---|---|
Ctrl + A | Go to the beginning of the line you are currently typing on. This also works for most text input fields system wide. Netbeans being one exception |
Ctrl + E | Go to the end of the line you are currently typing on. This also works for most text input fields system wide. Netbeans being one exception |
Ctrl + C | Clears everything on current line |
Ctrl + L | Clears the Screen |
Cmd + K | Clears the Screen |
Ctrl + U | Cut everything backwards to beginning of line |
Ctrl + K | Cut everything forward to end of line |
Ctrl + W | Cut one word backwards using white space as delimiter |
Ctrl + Y | Paste whatever was cut by the last cut command |
Ctrl + H | Same as backspace |
Ctrl + C | Kill whatever you are running |
Ctrl + D | Exit the current shell when no process is running, or send EOF to a the running process |
Ctrl + Z | Puts whatever you are running into a suspended background process. fg restores it. |
Ctrl + _ | Undo the last command. (Underscore. So it’s actually Ctrl + Shift + minus) |
Ctrl + T | Swap the last two characters before the cursor |
Ctrl + F | Move cursor one character forward |
Ctrl + B | Move cursor one character backward |
Option + → | Move cursor one word forward |
Option + ← | Move cursor one word backward |
Esc + T | Swap the last two words before the cursor |
Tab | Auto-complete files and folder names |
CORE COMMANDS Link to heading
Key/Command | Description |
---|---|
cd [folder] | Change directory e.g. cd Documents |
cd | Home directory |
cd ~ | Home directory |
cd / | Root of drive |
cd - | Previous directory |
ls | Short listing |
ls -l | Long listing |
ls -a | Listing incl. hidden files |
ls -lh | Long listing with Human readable file sizes |
ls -R | Entire content of folder recursively |
sudo [command] | Run command with the security privileges of the superuser (Super User DO) |
open [file] | Opens a file ( as if you double clicked it ) |
top | Displays active processes. Press q to quit |
nano [file] | Opens the file using the nano editor |
vim [file] | Opens the file using the vim editor |
clear | Clears the screen |
reset | Resets the terminal display |
CHAINING COMMANDS Link to heading
Key/Command | Description |
---|---|
[command-a]; [command-b] | Run command A and then B, regardless of success of A |
[command-a] && [command-b] | Run command B if A succeeded |
[command-a] || [command-b] | Run command B if A failed |
[command-a] & | Run command A in background |
PIPING COMMANDS Link to heading
Key/Command | Description |
---|---|
[command-a] | [command-b] | Run command A and then pass the result to command B e.g ps auxwww | grep google |
COMMAND HISTORY Link to heading
Key/Command | Description |
---|---|
history n | Shows the stuff typed – add a number to limit the last n items |
Ctrl + r | Interactively search through previously typed commands |
![value] | Execute the last command typed that starts with ‘value’ |
![value]:p | Print to the console the last command typed that starts with ‘value’ |
!! | Execute the last command typed |
!!:p | Print to the console the last command typed |
FILE MANAGEMENT Link to heading
Key/Command | Description |
---|---|
touch [file] | Create a new file |
pwd | Full path to working directory |
. | Current folder, e.g. ls . |
.. | Parent/enclosing directory, e.g. ls .. |
ls -l .. | Long listing of parent directory |
cd ../../ | Move 2 levels up |
cat | Concatenate to screen |
rm [file] | Remove a file, e.g. rm data.tmp |
rm -i [file] | Remove with confirmation |
rm -r [dir] | Remove a directory and contents |
rm -f [file] | Force removal without confirmation |
cp [file] [newfile] | Copy file to file |
cp [file] [dir] | Copy file to directory |
mv [file] [new filename] | Move/Rename, e.g. mv file1.ad /tmp |
pbcopy < [file] | Copies file contents to clipboard |
pbpaste | Paste clipboard contents |
pbpaste > [file] | Paste clipboard contents into file, pbpaste > paste-test.txt |
DIRECTORY MANAGEMENT Link to heading
Key/Command | Description |
---|---|
mkdir [dir] | Create new directory |
mkdir -p [dir]/[dir] | Create nested directories |
rmdir [dir] | Remove directory ( only operates on empty directories ) |
rm -R [dir] | Remove directory and contents |
less [file] | Output file content delivered in screensize chunks |
[command] > [file] | Push output to file, keep in mind it will get overwritten |
[command] » [file] | Append output to existing file |
[command] < [file] | Tell command to read content from a file |
SEARCH Link to heading
Key/Command | Description |
---|---|
find [dir] -name [search_pattern] | Search for files, e.g. find /Users -name "file.txt" |
grep [search_pattern] [file] | Search for all lines that contain the pattern, e.g. grep "Tom" file.txt |
grep -r [search_pattern] [dir] | Recursively search in all files in specified directory for all lines that contain the pattern |
grep -v [search_pattern] [file] | Search for all lines that do NOT contain the pattern |
grep -i [search_pattern] [file] | Search for all lines that contain the case-insensitive pattern |
mdfind [search_pattern] | Spotlight search for files (names, content, other metadata), e.g. mdfind skateboard |
mdfind -onlyin [dir] -name [pattern] | Spotlight search for files named like pattern in the given directory |
HELP Link to heading
Key/Command | Description |
---|---|
[command] -h | Offers help |
[command] –help | Offers help |
info [command] | Offers help |
man [command] | Show the help manual for [command] |
whatis [command] | Gives a one-line description of [command] |
apropos [search-pattern] | Searches for command with keywords in description |