Shells

  Most Linux distributions use the bash shell while the BSDs use tcsh, the bourne shell is
  only used for scripts. Filters are very useful and can be piped:
    * grep   Pattern matching
    * sed   Search and Replace strings or characters
    * cut   Print specific columns from a marker
    * sort   Sort alphabetically or numerically
    * uniq   Remove duplicate lines from a file

  For example used all at once:
# ifconfig | sed 's/  / /g' | cut -d" " -f1 | uniq | grep -E "[a-z0-9]+" | sort -r
# ifconfig | sed '/.*inet addr:/!d;s///;s/ .*//'|sort -t. -k1,1n -k2,2n -k3,3n -k4,4n

  The first character in the sed pattern is a tab. To write a tab on the console, use ctrl-v
  ctrl-tab.

bash

  Redirects and pipes for bash and sh:
# cmd 1> file                         # Redirect stdout to file.
# cmd 2> file                         # Redirect stderr to file.
# cmd 1>> file                        # Redirect and append stdout to file.
# cmd &> file                         # Redirect both stdout and stderr to file.
# cmd >file 2>&1                      # Redirects stderr to stdout and then to file.
# cmd1 | cmd2                         # pipe stdout to cmd2
# cmd1 2>&1 | cmd2                    # pipe stdout and stderr to cmd2

  Modify your configuration in ~/.bashrc (it can also be ~/.bash_profile). The following
  entries are useful, reload with ". .bashrc". With cygwin use ~/.bash_profile; with rxvt
  past with shift + left-click.
# in .bashrc
bind '"\e[A"':history-search-backward # Use up and down arrow to search
bind '"\e[B"':history-search-forward  # the history. Invaluable!
set -o emacs                          # Set emacs mode in bash (see below)
set bell-style visible                # Do not beep, inverse colors
   # Set a nice prompt like [user@host]/path/todir>
PS1="\[\033[1;30m\][\[\033[1;34m\]\u\[\033[1;30m\]"
PS1="$PS1@\[\033[0;33m\]\h\[\033[1;30m\]]\[\033[0;37m\]"
PS1="$PS1\w\[\033[1;30m\]>\[\033[0m\]"

# To check the currently active aliases, simply type alias
alias  ls='ls -aF'                    # Append indicator (one of */=>@|)
alias  ll='ls -aFls'                  # Listing
alias  la='ls -all'
alias ..='cd ..'
alias ...='cd ../..'
export HISTFILESIZE=5000              # Larger history
export CLICOLOR=1                     # Use colors (if possible)
export LSCOLORS=ExGxFxdxCxDxDxBxBxExEx

tcsh

  Redirects and pipes for tcsh and csh (simple > and >> are the same as sh):
# cmd >& file                         # Redirect both stdout and stderr to file.
# cmd >>& file                        # Append both stdout and stderr to file.
# cmd1 | cmd2                         # pipe stdout to cmd2
# cmd1 |& cmd2                        # pipe stdout and stderr to cmd2

  The settings for csh/tcsh are set in ~/.cshrc, reload with "source .cshrc". Examples:
# in .cshrc
alias  ls      'ls -aF'
alias  ll      'ls -aFls'
alias  la      'ls -all'
alias  ..      'cd ..'
alias  ...     'cd ../..'
set   prompt    = "%B%n%b@%B%m%b%/> " # like user@host/path/todir>
set   history   =  5000
set   savehist  = ( 6000 merge )
set   autolist                        # Report possible completions with tab
set   visiblebell                     # Do not beep, inverse colors

# Bindkey and colors
bindkey -e     Select Emacs bindings  # Use emacs keys to edit the command prompt
bindkey -k up history-search-backward # Use up and down arrow to search
bindkey -k down history-search-forward
setenv CLICOLOR 1                     # Use colors (if possible)
setenv LSCOLORS ExGxFxdxCxDxDxBxBxExEx

  The emacs mode enables to use the emacs keys shortcuts to modify the command prompt line.
  This is extremely useful (not only for emacs users). The most used commands are:
    * C-a       Move cursor to beginning of line
    * C-e       Move cursor to end of line
    * M-b       Move cursor back one word
    * M-f       Move cursor forward one word
    * M-d       Cut the next word
    * C-w       Cut the last word
    * C-u       Cut everything before the cursor
    * C-k       Cut everything after the cursor (rest of the line)
    * C-y       Paste the last thing to be cut (simply paste)
    * C-_       Undo

  Note: C- = hold control, M- = hold meta (which is usually the alt or escape key).