Unix cheat sheet

This document gives a brief summary of useful Unix commands. Anything within {} indicates a user-provided input.

Note

If you are on Windows, you can install the Windows Subsystem for Linux following our instructions.

Documentation and Help

man {command} manual page for the program
whatis {command} short description of the program
{command} --help many programs use the --help flag to print documentation

Listing files

ls list files in the current directory
ls {path} list files in the specified path
ls -l {path} list files in long format (more information)
ls -a {path} list all files (including hidden files)

Change Directories

cd {path} change to the specified directory
cd or cd ~ change to the home directory
cd .. move back one directory
pwd print working directory. Shows the full path of where you are at the moment (useful if you are lost)

Make or Remove Directories

mkdir {dirname} create a directory with specified name
rmdir {dirname} remove a directory (only works if the directory is empty)
rm -r {dirname} remove the directory and all it’s contents (use with care)

Copy, Move and Remove Files

cp {source/path/file1} {target/path/} copy “file1” to another directory keeping its name
cp {source/path/file1} {target/path/file2} copy “file1” to another directory naming it “file2”
cp {file1} {file2} make a copy of “file1” in the same directory with a new name “file2”
mv {source/path/file1} {target/path/} move “file1” to another directory keeping its name
mv {source/path/file1} {target/path/file2} move “file1” to another directory renaming it as “file2”
mv {file1} {file2} is equivalent to renaming a file
rm {filename} remove a file

View Text Files

less {file} view and scroll through a text file
head {file} print the first 10 lines of a file
head -n {N} {file} print the first N lines of a file
tail {file} print the last 10 lines of a file
tail -n {N} {file} print the last N lines of a file
head -n {N} {file} | tail -n 1 print the Nth line of a file
cat {file} print the whole content of the file
cat {file1} {file2} {...} {fileN} concatenate files and print the result
zcat {file} and zless {file} like cat and less but for compressed files (.zip or .gz)

Find Patterns

Finding (and replacing) patterns in text is a very powerful feature of several command line programs. The patterns are specified using regular expressions (shortened as regex), which are not covered in this document. See this Regular Expressions Cheat Sheet for a comprehensive overview.

grep {regex} {file} print the lines of the file that have a match with the regular expression pattern

Wildcards

* match any number of characters
? match any character only once
Examples
ls sample* list all files that start with the word “sample”
ls *.txt list all the files with .txt extension
cp * {another/directory} copy all the files in the current directory to a different directory

Redirect Output

{command} > {file} redirect output to a file (overwrites if the file exists)
{command} >> {file} append output to a file (creates a new file if it does not already exist)

Combining Commands with | Pipes

<command1> | <command2> the output of “command1” is passed as input to “command2”
Examples
ls | wc -l count the number of files in a directory
cat {file1} {file2} | less concatenate files and view them with less
cat {file} | grep "{pattern}" | wc -l count how many lines in the file have a match with “pattern”