The Quickest Unix Refresher ever 2014

Unix Command Cheat Sheet

Basic linux commands you need to know like breathing air

  • ls - list the contents of the current directory
  • pwd - print the present working directory  - tells you where you are currently. The format is something like /home/myID - just like on most computer systems, this represents leaves on the tree of the file system structure, also called a "path".
  • cd <whereto> - change the present working directory to <whereto>  You will need to provide a path like /work/myID to change to that directory.
    • Some special <wheretos>.. (period, period) means "up one level".   . means current directory. ~ (tilde) means "my home directory". ~myfriend (tilde "myfriend) means "myfriend's home directory".
  • nano - The text editor we'll be using
  • df shows you the top level of the directory structure of the system you're working on, along with how much disk space is available
  • head <file> and tail <file> shows you the top or bottom 10 lines of a file <file>
  • more <file> and less <file> both display the contents of <file> in nice ways. Read the bit above about man to figure out how to navigate and search when using less
  • file <file> tells you what kind of file <file> is.
  • cat <file> outputs all the contents of <file> - CAUTION - only use on small files.
  • rm <file> deletes a file. This is permanent - not a "trash can" deletion.
  • cp <source> <destination> copies the file source to the location and/or file name destination}. Using . (period) means "here, with the same name". * cp -r <dirname> <destination> will recursively copy the directory dirname and all its contents to the directory destination.
  • scp <user>@<host>:<source> <destination> works just like cp but copies source from the user user's directory on remote machine host to the local file destination
  • mkdir <dirname> and rmdir <dirname> make and remove the directory "dirname". This only removes empty directories - "rm -r <dirname>" will remove everything.
  • wget <url> fetches a file with a valid URL. It's not that common but we'll use wget to pull data from one of TACC's web-based storage devices.
  • man <unixcommand> displays the manual page for a unix command.
  • >  is used to redirect STDOUT and STDERR to files.
Wildcards and special file names

The shell has shorthand to refer to groups of files by allowing wildcards in file names. * (asterisk) is the most common; it is a wildcard meaning "any length of any characters". Other useful ones are []to allow for any character in the set <characters>> 

For example: ls *.bam lists all files in the current directory that end in .bam

Three special file names:

  1. . (single period) means "this directory".
  2. .. (two periods) means "directory above current." So ls -l .. means "list contents of the parent directory."
  3.  ~ (tilde) means "my home directory".


The concept of PATH

On a unix command line, you can only access files that are in your current working directory. If you are in /home/dhivya/dinner and you issue the command: 

less lunchMenu

this will work only if lunchMenu is located in /home/dhivya/dinner.

To access files outside your current directory, you can provide the absolute path or relative path to find the file.  If lunchMenu is actually located in  /home/dhivya/lunch, then you can open it by using one of these two commands:

less /home/dhivya/lunch/lunchMenu

(or)

less ../lunch/lunchMenu

Exception: If the location of a file, most often, an executable is included in your shell enviornment variable called PATH, you can run it from anywhere without specifying where it is.  

echo $PATH to see what is in your PATH.

Always use tab to complete file names. If the file is in the current directory or is in your PATH, tab will do auto complete.

Always remember where you are, on a Unix enviornment!

 

So many options...

When running scripts and software tools, all the inputs you provide to it are called arguments or parameters or options.  Each tool/script can be a little different in how it takes its arguments. But typically, they follow a structure.

command <options> inputfile > outputfile

command  -option1 value1 -option2 value2 -option3 inputfile > outputfile

  • option1 and option2 are types that take a value.
  • option3 is a yes or no flag, so it does not take a value.

Example: blastp -query scaffolds.fasta -db TAIR10_pep_20101214 -eval 0.0001 -outfmt 6 -out blastp.out

If you need to find out the options for a command, try any of these (again each tool is different):

  • command -h
  • command --h
  • command -help
  • command

 

BACK TO THE COURSE OUTLINE