Essential Unix Commands and Functions




A term refers to a folder used to organize different files and make locating them easier!


Bourne Again SHell


lists the current working directory.

ls -F

tells ls to classify the output by adding a marker to file and directory names to indicate what they are:

  • / – a trailing / indicates that this is a directory
  • @ – indicates a link
  • * – indicates an executable


-a stands for ‘show all’ (including hidden files); it forces ls to show us file and directory names that begin with ., such as .. (which, if we’re in /Users/nelle, refers to the /Users directory).

ls [path]

prints a listing of a specific file or directory

ls -s

display the size of files and directories alongside the names

ls -S

sort the files and directories by size

cd [path]

changes the current working directory


prints the user’s current working directory

Most commands take options that begin with a single –

Unix-based (macOS, Linux)





on its own is the root directory of the whole file system

absolute path

specifies a location from the root of the file system.

relative path

specifies a location starting from the current location.

. or cd .

on its own means ‘the current directory


means ‘the directory above the current one’.

mkdir [path]

creates a new directory.

cp [old] [new]

copies a file.

mv [old] [new]

moves (renames) a file or directory

rm [path]

removes (deletes) a file.


* matches zero or more characters in a filename, so *.txt matches all files ending in .txt


? matches any single character in a filename, so ?.txt matches a.txt but not any.txt

Ctrl-X, Control-X, ^X

use of the Control key may be described in many ways


The shell does not have a trash bin: once something is deleted, it’s really gone

Most files’ names are something.extension

The extension isn’t required, and doesn’t guarantee anything, but is normally used to indicate the type of data in the file


counts lines, words, and characters in its inputs.


displays the contents of its inputs.


sorts its inputs.


displays the first 10 lines of its input.


displays the last 10 lines of its input.

command > [file]

redirects a command’s output to a file (overwriting any existing content)

command >> [file]

appends a command’s output to a file.

[first] | [second]

is a pipeline: the output of the first command is used as the input to the second.


is a “pipe”. The | takes the standard output of the command on the left, and pipes it as standard input to the command on the right. You can think of this as “command to command” redirection. Example: cat volcanoes.txt | wc


log out of current session, similar to exit


halts the current command


erases one word in the current line


erases the whole line


type to bring up a recent command


who you are logged in as


show the current date and time

cd ..

.. is a special directory name meaning “the directory containing this one”, or more succinctly, the parent of the current directory; moves one directory above it

cd –

It brings you back after using cd .. (takes to just previous opened directory).


The shell interprets a tilde (~) character at the start of a path to mean “the current user’s home directory”. For example, if Nelle’s home directory is /Users/nelle, then ~/data is equivalent to /Users/nelle/data


shortcut to go back to the user’s home directory.


General syntax of a shell command