My .ZSHRC

To gain a lot of time, you can replace the old “bash” by “zsh”, which is a very more powerful shell with autocompletion, but not only… It has a configuration file called “.zshrc” that you have to put in your home. You can try zsh by installing it and typing “zsh”, and if you’re convinced, keeping it by typing chsh and choosing /bin/zsh.
You have my entire .zshrc but I choose 3 snippets that I prefer to show you the usefullness :
As I use Fedora, Debian, and Ubuntu, I made this to type “i program” to install profram on any system, and “u” to update the system. 
[code lang=”bash”] #i for install, u for update if [ -e /bin/yum ]; then alias i=”sudo yum install” alias u=”sudo yum update” else alias i=”sudo apt-get install” alias u=”sudo apt-get update && sudo apt-get dist-upgrade” fi [/code] Force sudo for commands that anyway need it [code lang=”bash”] alias yum=”sudo yum” alias apt-get=”sudo apt-get” alias service=”sudo service” [/code]   Setting vi as default editor : [code lang=”bash”] export EDITOR=”vi” [/code]   The multiples ssh shorcuts [code lang=”bash”]alias sshd=”ssh mappam.dyndns.org -X” alias sshc=”ssh itstudents.be -X -L 3129:localhost:3129″[/code] I use my zshrc on multiple system and multiple environment, hence you have some tricks and multiplications like different variables for the same program in the path variable. [code lang=”bash”] #Using color schemes autoload -U colors && colors #Adding ADB to path variable export PATH=${PATH}:/usr/src/android-sdk-linux/platform-tools/:/usr/src/android-sdk-linux/tools/:/opt/android/platform-tols/ ################## # Aliases ################## #SSH shorcuts alias sshd=”ssh mappam.dyndns.org -X” alias sshc=”ssh itstudents.be -X -L 3129:localhost:3129″ alias ssha=”ssh asbss.be -X” alias sshu=”ssh barbette@ms806.montefiore.ulg.ac.be -X” alias sshq=”ssh barbette@queen.run.montefiore.ulg.ac.be -X” alias scpi=”scp -i /home/tom/.ssh/id_rsa” alias scp3=”scp -P 3690 -i /home/tom/.ssh/id_rsa” alias sam=”ssh-add /home/tom/.ssh/id_rsa.montefiore” #I have all my usefull scripts on my server itstudents, this alias update all scripts on a client, including this .zshrc alias us=”mkdir -p /home/tom/.scripts && scpi tom@itstudents.be:/home/tom/.ssh/authorized_keys /home/tom/.ssh/authorized_keys && scpi tom@itstudents.be:/home/tom/.zshrc /home/tom/.zshrc && scpi -r tom@itstudents.be:/home/tom/.scripts/ /home/tom/ && source /home/tom/.zshrc” #Alias for these scripts… #Archiver pack a folder in tar.gz alias archiver=”/home/tom/.scripts/archiver” #Archiver7 pack a folder in a tar.7z alias archiver7=”/home/tom/.scripts/archiver7″ #Update and reset permissions of an svn alias svnup=”/home/tom/.scripts/svnup” #Push an rsa key to the list of authorized keys alias pushrsa=”ssh tom@itstudents.be \”cat – >> /home/tom/.ssh/authorized_keys\” < ” #Mount some local shares alias mh=”sudo mount -t nfs debserver:/home/tom /mnt/debserver-home” alias mp=”sudo mount -t nfs debserver:/pub /mnt/debserver-pub” #Force sudo for some sudo-only commands like installers alias yum=”sudo yum” alias apt-get=”sudo apt-get” alias service=”sudo service” #Some copy-pasted shorcut from elsewhere alias k=’tree’ alias ltr=’ls -ltr’ alias r=’screen -D -R’ alias ls=’ls –color’ alias l=’ls -lh’ alias ll=’ls -la’ #i for install, u for update if [ -e /bin/yum ]; then alias i=”sudo yum install” alias u=”sudo yum update” else alias i=”sudo apt-get install” alias u=”sudo apt-get update && sudo apt-get dist-upgrade” fi #Some links to launch programs on my android devices alias adbf=”ard && adb forward tcp:8999 tcp:8999 && google-chrome http://localhost:8999 &” alias agmail=”adb shell am start -a android.intent.action.MAIN -n com.google.android.gm/.ConversationListActivityGmail” alias amail=”adb shell am start -a android.intent.action.MAIN -n com.google.android.email/com.android.email.activity.EmailActivity” alias ard=”adb shell am start -a android.intent.action.MAIN -n net.xdevelop.rm/.RemoteMobile” alias rr=”sudo route del default && sudo route add default gw 10.0.0.1″ #Wake on lan shorcuts alias wdebian=”sudo etherwake 8C:89:A5:C1:D2:8A”     # Meta-u to chdir to the parent directory bindkey -s ‘\eu’ ‘^Ucd ..; ls^M’ bindkey ‘\e[1~’ beginning-of-line bindkey ‘\e[4~’ end-of-line bindkey ‘\e[7~’ beginning-of-line bindkey ‘\e[8~’ end-of-line bindkey ‘\eOH’ beginning-of-line bindkey ‘\eOF’ end-of-line bindkey ‘\e[H’ beginning-of-line bindkey ‘\e[F’ end-of-line bindkey ‘\e[5~’ beginning-of-history bindkey ‘\e[6~’ end-of-history bindkey ‘\e[3~’ delete-char #Enable auto correct for commands setopt correct # Pipe the current command through less bindkey -s “\el” ” 2>&1|less^M” zstyle ‘:completion:*:(all-|)files’ ignored-patterns ‘(|*/)CVS’ zstyle ‘:completion:*:cd:*’ ignored-patterns ‘(*/)#CVS’ #Mode verbose pour cp, rm, chmod, chown et rename for c in cp rm chmod chown rename; do alias $c=”$c -v” done #Pendunt une complétion affiche les points expand-or-complete-with-dots() { echo -n “\e[31m……\e[0m” zle expand-or-complete zle redisplay } zle -N expand-or-complete-with-dots bindkey “^I” expand-or-complete-with-dots setopt EXTENDED_GLOB setopt NO_BEEP export EDITOR=”vi” setopt ZLE setopt AUTO_CD ################## # Completion Stuff ################## bindkey -M viins ‘\C-i’ complete-word # Faster! (?) zstyle ‘:completion::complete:*’ use-cache 1 # generate descriptions with magic. zstyle ‘:completion:*’ auto-description ‘specify: %d’ # Don’t prompt for a huge list, page it! zstyle ‘:completion:*:default’ list-prompt ‘%S%M matches%s’ # Don’t prompt for a huge list, menu it! zstyle ‘:completion:*:default’ menu ‘select=0’ # Have the newer files last so I see them first zstyle ‘:completion:*’ file-sort modification reverse # color code completion!!!! Wohoo! zstyle ‘:completion:*’ list-colors “=(#b) #([0-9]#)*=36=31″ unsetopt LIST_AMBIGUOUS setopt COMPLETE_IN_WORD # Separate man page sections. Neat. zstyle ‘:completion:*:manuals’ separate-sections true # Egomaniac! zstyle ‘:completion:*’ list-separator ‘fREW’ # complete with a menu for xwindow ids zstyle ‘:completion:*:windows’ menu on=0 zstyle ‘:completion:*:expand:*’ tag-order all-expansions # more errors allowed for large words and fewer for small words zstyle ‘:completion:*:approximate:*’ max-errors ‘reply=( $(( ($#PREFIX+$#SUFFIX)/3 )) )’ # Errors format zstyle ‘:completion:*:corrections’ format ‘%B%d (errors %e)%b’ # Don’t complete stuff already on the line zstyle ‘:completion::*:(rm|vi):*’ ignore-line true # Don’t complete directory we are already in (../here) zstyle ‘:completion:*’ ignore-parents parent pwd zstyle ‘:completion::approximate*:*’ prefix-needed false #}}} export GREP_COLOR=31 alias grep=’grep –color=auto’ #{{{ Prompt! colors host_color=cyan history_color=yellow user_color=green root_color=red directory_color=magenta error_color=red jobs_color=green host_prompt=”%{$fg_bold[$host_color]%}%m%{$reset_color%}” jobs_prompt1=”%{$fg_bold[$jobs_color]%}(%{$reset_color%}” jobs_prompt2=”%{$fg[$jobs_color]%}%j%{$reset_color%}” jobs_prompt3=”%{$fg_bold[$jobs_color]%})%{$reset_color%}” jobs_total=”%(1j.${jobs_prompt1}${jobs_prompt2}${jobs_prompt3} .)” history_prompt1=”%{$fg_bold[$history_color]%}[%{$reset_color%}” history_prompt2=”%{$fg[$history_color]%}%h%{$reset_color%}” history_prompt3=”%{$fg_bold[$history_color]%}]%{$reset_color%}” history_total=”${history_prompt1}${history_prompt2}${history_prompt3}” error_prompt1=”%{$fg_bold[$error_color]%}<%{$reset_color%}” error_prompt2=”%{$fg[$error_color]%}%?%{$reset_color%}” error_prompt3=”%{$fg_bold[$error_color]%}>%{$reset_color%}” error_total=”%(?..${error_prompt1}${error_prompt2}${error_prompt3} )” case “$TERM” in (screen) function precmd() { print -Pn “\033]0;S $TTY:t{%100<…<%~%<<}\007″ } ;; (xterm) directory_prompt=”%{$fg[$directory_color]%}%~%{$reset_color%} ” ;; (*) directory_prompt=”%{$fg[$directory_color]%}%~%{$reset_color%} ” ;; esac if [[ $USER == root ]]; then post_prompt=”%{$fg_bold[$root_color]%}%#%{$reset_color%}” else post_prompt=”%{$fg_bold[$user_color]%}%#%{$reset_color%}” fi fg_light_gray=$’%{\e[0;34m%}’ PS1=”${host_prompt} ${jobs_total}${history_total} ${error_total}${post_prompt} ” RPROMPT=”%{$fg_bold[$user_color]%}<%{$reset_color%} ${directory_prompt}${fg_light_gray}[%*]%{$reset_color%}” #}}} #Type f to flush the console to history file alias f=”fc -W” HISTSIZE=10000 SAVEHIST=10000 HISTFILE=~/.history setopt LIST_PACKED #Append to history file instead of re-writing setopt APPEND_HISTORY #To share history between terminal, not what I want as I always have multiple terminals like one for generating packet, the other to receive them #setopt SHARE_HISTORY #Remove blanks setopt hist_reduce_blanks #Remove duplicates setopt hist_ignore_all_dups #Do not store commands in history starting with white space setopt hist_ignore_space #Init autoload -U compinit promptinit zcalc zsh-mime-setup compinit promptinit zsh-mime-setup[/code]