Command Line

Basic Commands


  • Description: Clear the terminal screen.
  • Form: clear


  • Description: Print arguments. Useful for piping and bash scripting.
  • Form: echo <string>
  • Example: echo "some text"


  • Description: Quit the shell.
  • Form: exit


  • Description: Show previous commands.
  • Form: history

File System Commands


  • Description: Display contents of the working directory.
  • Form: ls [options]
  • Options:
    • -l
      • List contents with extra information.
    • -a
      • Show all files/folders (even hidden ones).
    • -t
      • Sort by date modified.


  • Description: Show the working directory path.
  • Form: pwd


  • Description: Change the working directory.
  • Forms:
    • cd: Move to the home directory.
    • cd ..: Move up the directory tree.
    • cd -: Move to the previous working directory.
    • cd <path>: Move to a specific location.
  • Example: cd ~/.emacs.d/


  • Description: Create a directory.
  • Form: mkdir <name>


  • Description: Copy a file/folder.
  • Form: cp <source> <target>
  • Options:
    • -r
      • Recursively copy a folder.
  • Examples:
    • cp file.lisp folder/file.lisp
    • cp folder/ destination/folder/


  • Description: Move or rename a file/folder.
  • Form: mv <file> <file>
  • Examples:
    • mv file.lisp folder/file.lisp
    • mv file.lisp new-name.lisp
    • mv folder renamed-folder


  • Description: Delete a file/folder.
  • Form: rm <file>
  • Options:
    • -r
      • Recursively delete a directory.
    • -f
      • Force removal without confirmation.
  • Examples:
    • rm file.lisp
    • rm -r some/folder


  • Description: Print the entire contents of a file.
  • Form: cat <file>


  • Description: View the contents of a file.
  • Form: less <file>
  • Usage:
    • Type q to quit, / to search, and h for help


  • Description: Display the end of a file.
  • Form: tail <file>
  • Options:
    • -f
      • Follow the file, updating as new output appears.
    • -n
      • Number of lines to show.
  • Examples: tail -f solr.log


  • Description: Modify lines in a file.
  • Form: sed <command> <file>
  • Options:
    • -i
      • Perform edits in-place. This will cause sed to modify the source file instead of just printing the results.
  • Examples:
    • sed -i 's/red/blue' file.txt
      • Replace the first occurrence of 'red' with 'blue' on each line.
    • sed -i 's/red/blue/g' file.txt
      • Replace all occurrences of 'red' with 'blue' on each line.
    • sed -i 's/unix/{&}/' file.txt
      • Replace all occurrences of 'unix' with '{unix}'. & represents the matched string.
    • sed -i '/HOST/ s/localhost/ds-dev01/' file.txt
      • Find lines that contain 'HOST'. In those lines, replace all occurrences of 'localhost' with 'ds-dev01'.

Network Commands


  • Description: Transfer data from or to a server. Commonly used for HTTP and FTP.
  • Form: curl [options] <URL>
  • Options:
    • -X, --request <command>
      • HTTP method (e.g. POST, PUT). Defaults to GET.
    • -H <header>
      • HTTP request header (e.g. 'Content-Type: application/json').
    • -d <data>
      • Send data in an HTTP POST request. Similar to a web form.
    • -u <user:pass>
      • Username and password for authentication.
    • -o <file>
      • Write output to <file> instead of stdout.
  • Examples:
    • curl
    • curl -d '{"name":"elliot"}' -H 'Content-Type: application/json'


  • Description: Send an echo request to test a network connection.
  • Form: ping <host>
  • Example: ping


  • Description: Secure SHell enables remote machine login. The command provides secure, encrypted communication.
  • Form: ssh <user@host>
  • Options:
    • -i <key>
      • Specify a private key file.
  • Example:
    • ssh
    • ssh -i key.pem ec2-user@


  • Description: Secure CoPy allows files/folders to be moved to, from, or between different hosts. It uses ssh for data transfer and provides the same authentication and security.
  • Form: scp <[user@host:]file> <[user@host:]file>
  • Options
    • -r
      • Recursively move a directory
  • Examples:
    • scp .
    • scp -r .

Search Commands


Information in this section is taken from

  • Description: Global Regular Expression Print. Searches input files for a search string and prints matching lines.
  • Form: grep [options] <regex> <filename(s)>
  • Options:
    • -n
      • Explains which lines match the search string.
    • -v
      • Prints the negative result (all non-matching lines).
    • -c
      • Suppresses the line printing, displays the number of matching lines.
    • -l
      • Only prints the filenames with matching lines.
    • -i
      • Ignore case.
    • -x
      • Search for eXact matches only.
    • -f
      • Allows specification of a file containing the search string.
    • -r
      • Directory search. grep -r "test" . searches all files in the current directory

Sibling grep Commands

The egrep command stands for "extended grep" and supports certain useful sequences such as the + and ? operators. It's equivalent to grep -E. The fgrep command gives a performance boost as it doesn't interpret regular expressions. It's equivalent to grep -F.


  • Description: Search for files in a directory hierarchy.
  • Form: find <path> <expression>
  • Examples:
    • find . -name 'foo'
      • Find a file called foo.
    • find . -name 'foo*'
      • Find a file beginning with foo.
    • find . -name '*.txt'
      • Find a file with the txt extension.
    • find . -type d -name 'bar'
      • Find a folder called bar.

Pipes and Redirects

Pipe operator

The pipe operator | passes the output from one command to another. For example: ls | grep ".org" will display all org-mode files in the current directory.


The less-than > symbol is used to redirect the output from a command to a file. The greater-than < symbol causes a command to read its input from a file. Double less-than >> will append output to a file.

Symbolic Links

Unix filesystems make use of aliases for files known as symbolic links (symlinks). A symbolic link is treaded in a similar fashion to the actual file. The ln command can be used to create symlinks. The ls -l will reveal where a symlink points. For example:

$ ls
bar foo
$ ln -s bar baz
$ ls -l
total 8
-rw-r--r-- 1 elliot staff 0 Jan 8 09:50 bar
lrwxr-xr-x 1 elliot staff 3 Jan 8 09:58 baz -> bar
-rw-r--r-- 1 elliot staff 0 Jan 8 09:57 foo


  • Description: Create a link.
  • Form: ln <file> <alias-file>
  • Options:
    • -s
      • Make a symbolic link.


A process is an instance of a program. Processes are identified with a process ID (PID). In the command line, programs are run either in the foreground or the background. The shell waits for foreground commands to finish. Most programs run in the foreground by default. The shell doesn't wait for background processes to end and other commands can be executed in the meantime. Include an ampersand (&) at the end of a command to run it in the background. Programs currently running in the foreground may be changed into a background process with Control-Z.


  • Description: Process Status. Display a list of running processes.
  • Form: ps [options]
  • Options:
    • -e
      • Show all user processes (even those without a controlling terminal). This option is useful for finding the PID of a command executed with nohup (see below).
    • -f
      • Display extra information including user ID, CPU percentage, process start time, and arguments used.


  • Description: Move a background process to the foreground.
  • Form: fg [%job-number]


  • Description: Stop a given process.
  • Form: kill [PID]


  • Description: Causes a command to ignore the hangup (HUP) signal. When one exits the shell, background commands are usually stopped. nohup allows users to prevent this stop signal on logout.
  • Form: nohup <command> <arguments> &
  • Example: nohup python &


  • Description: Display dynamic information about running processes.
  • Form: top
  • Usage:
    • Get help with ?. Type o to specify a sort key. Options include pid, cpu, and mem. Quit with q.



  • Description: Open a command's manual.
  • Form: man <command>

Usage Statement (Loose) Guidelines

Anything in angle brackets (<>) means the argument is required (e.g. <foo>). Anything in square brackets ([]) means the argument is optional (e.g. [bar]). Options separated by the pipe (|) are choices (e.g. –baz=one|two|three). Note that this mirrors the or operator. Single-letter options start with one dash (e.g. -a). Multi-letter options start with two dashes (e.g. –foo-bar).