Unix Terminal Cheat Sheet
Below is a table of the most common unix terminal commands and what they do. Always remember that when using a terminal, your terminal is in a particular directory (also called a folder), and the commands you do are going to operate relative to that directory, or on files in that directory.
| Command | Meaning | 
|---|---|
| pwd | print working directory: it shows you what folder/directory you are in | 
| ls | list directory: it shows you what files and sub-directories are in here | 
| ls -a | list all: it will include hidden names that begin with a dot | 
| ls -l | list long: it will include detailed information about each file | 
| cd dir | change directory: this changes the folder/directory that your terminal is in; dir is relative unless it begins with a / (forward slash); . and .. are special directory names that mean current directory and parent directory | 
| cd | cd with no argument moves you back to your home directory | 
| cat filename | prints the contents of the file onto your terminal | 
| more filename | like cat, except it displays one page at a time | 
| mkdir dirname | makes a new subdirectory (sub-folder) inside the current one | 
| rm filename | deletes a file; be careful if you are in a Git workspace! | 
| mv filename newname | renames a file, possibly moving it into a different directory; be careful if you are in a Git workspace! | 
| pico filename | edits a text file inside the terminal window; control actions are listed at the bottom | 
| gedit filename & | pops up a separate editor window application, and edits the file; the & symbol makes the application run in the background, so you get a command prompt back immediately | 
| code . & | starts VSCode and opens the current directory as a project | 
| man command | bring up a manual page that describes the command. Try “man cd” for fun! | 
| Common Compiling Commands | |
| g++ -o execname filename.cpp | compile the program in filename.cpp and name the output executable program execname (often the root of the source file name) | 
| g++ -c filename.cpp | compile the source file only to object code; do not try to create an executable; resulting file is filename.o | 
| g++ -o execname many-files | create an executable from many source and/or object files | 
| make target | use the available Makefile to build the named target | 
| g++ -Wall other-compiling-args | tell g++ to warn you about everything; very good! | 
| gcc options_as_above | compile a plain-C program (not C++) | 
| Common Git Commands | |
| git clone URL | makes a new clone of a Git repository | 
| git pull | fetches and merges external changes of a Git repo into this one | 
| git add filename | tells Git to stage the file for committing | 
| git commit -m ‘message’ | commits the currently staged changes, with the commit message as given; always provide a commit message! | 
| git push | pushes the local commits up to the remote repository (on GitHub, perhaps) | 
| git mv filename newname | changes the name of a file in a Git workspace and tells Git about the new name | 
| git rm filename | removes a file in a Git workspace and tells Git about it; the file will still be in the repository! (as history) | 
You can also do some special operations on your command line after the command and any arguments you give it.
| Operation | Meaning | 
|---|---|
| cmdline & | put the command in the background, meaning a command prompt comes back immediately and does not wait for the command to finish | 
| cmdline > filename | redirect any output from this program into the named file | 
| cmdline < filename | take the contents of the file and use it as input to this command | 
| cmdline | cmdline | take the output of the first command and use it as input to the second command; this is called a command pipeline | 
| Ctrl-C | stop and kill whatever command is out of control, possibly your own program in an infinite loop! | 
| Ctrl-Z | stop and suspend whatever command is running; you can then enter the command bg to let it continue in the background | 
| Ctrl-D | end input to a command; if a command is taking input, this tells it the end of input has been reached | 
