Moi j'ai pas de bashrc mais un zshrc :
##########
# Fichier /etc/zshrc
# by Kulakowski Guillaume <guillaume.kulakowski@fedoraproject.org>
#
# Version : 04/09/210
#
# Sources :
# - http://formation-debian.via.ecp.fr/fichiers-config/zshrc
# - http://formation-debian.via.ecp.fr/ch19.html
# - http://forums.gentoo.org/viewtopic-t-526197.html
# - http://www.gentoo.org/doc/fr/zsh.xml
#
# Dépend :
# - /etc/zshenv
# - /etc/zlogin
# - /etc/zlogout
# - /etc/dir_colors
#
############################################################### Couleur par host
#
typeset -A HOST_COLOR
HOST_COLOR=( \
enterprise blue \
defiant green \
zhukov green \
saratoga yellow \
spb-box grey \
borsalino cyan)
COLOR=${HOST_COLOR[$(hostname -s)]}
###################################################################### autoloads
#
autoload -U colors && colors # Couleurs (http://zsh.sourceforge.net/Doc/Release/index-frame.html)
autoload -U zfinit && zfinit # Fonctions internes de zsh
zmodload zsh/files # Manipulation sur les fichiers
############################################################### VCS informations
#
setopt prompt_subst
autoload -Uz vcs_info
## set formats
# %s - The vcs in use (git, hg, svn etc.)
# %b - Information about the current branch
# %a - An identifier, that describes the action. Only makes sense in actionformats
# %i - The current revision number or identifier
# %u - unstagedstr (see below)
# %c - stangedstr (see below)
# %R - Base directory of the repository
# %r - Repository name. If %R is /foo/bar/repoXY, %r is repoXY
# %S - Subdirectory within a repository. If $PWD is /foo/bar/reposXY/beer/tasty, %S is beer/tasty.
# check-for-changes can be really slow.
# you should disable it, if you work with large repositories
zstyle ':vcs_info:*:prompt:*' enable git svn
zstyle ':vcs_info:*:prompt:*' get-revision true
zstyle ':vcs_info:*:prompt:*' check-for-changes true
## GIT
FGIT_BRANCH="%s@%{$fg[magenta]%}%r%{$reset_color%}:%S %{$fg[red]%}[%b%c%u]%{$reset_color%}"
FGIT_ACTION="%{$fg[red]%}%a%{$reset_color%}%s@%{$fg[magenta]%}%r%{$reset_color%}:%S %{$fg[red]%}[%b%c%u]%{$reset_color%}"
zstyle ':vcs_info:git*:prompt:*' unstagedstr '¹' # display ¹ if there are unstaged changes
zstyle ':vcs_info:git*:prompt:*' stagedstr '²' # display ² if there are staged changes
zstyle ':vcs_info:git*:prompt:*' actionformats "${FGIT_ACTION}"
zstyle ':vcs_info:git*:prompt:*' formats "${FGIT_BRANCH}"
## SVN
FSVN_BRANCH="%s@%{$fg[magenta]%}%r%{$reset_color%}:%S%{$reset_color%}"
FSVN_ACTION="%{$fg[red]%}%a%{$reset_color%}%s@%{$fg[magenta]%}%r%{$reset_color%}:%S%{$reset_color%}"
zstyle ':vcs_info:svn*:prompt:*' actionformats "${FSVN_ACTION}"
zstyle ':vcs_info:svn*:prompt:*' formats "${FSVN_BRANCH}"
vcs_info_wrapper() {
vcs_info 'prompt'
if [ -n "$vcs_info_msg_0_" ]; then
echo "${vcs_info_msg_0_}"
fi
}
######################################################################## Prompts
#
if [ ${UID} = "0" ]; then
PROMPT="%{$fg_bold[red]%}%n%{$reset_color%}@%{$fg[$COLOR]%}%m%{$reset_color%} %~%{$fg_bold[red]%}>%{$reset_color%} "
# RPROMPT=' %T' # prompt for right side of screen
RPROMPT=$'$(vcs_info_wrapper)'
else
PROMPT="%n@%{$fg[$COLOR]%}%m%{$reset_color%} %~%{$fg[$COLOR]%}>%{$reset_color%} "
# RPROMPT=' %T' # prompt for right side of screen
RPROMPT=$'$(vcs_info_wrapper)'
fi
################################################################## Titre fenêtre
#
case ${TERM} in
xterm*)
precmd () {echo -ne "\033]0;${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}"; echo -ne "\007"}
;;
screen)
precmd () {echo -ne "\033]0;${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}"; echo -ne "\007"}
;;
*)
;;
esac
################################################ Gestion de la couleur pour 'ls'
# (exportation de LS_COLORS)
#
if [ -x /usr/bin/dircolors ]; then
if [ -r ~/.dir_colors ]; then
eval "`dircolors ~/.dir_colors`"
elif [ -r /etc/dir_colors ]; then
eval "`dircolors /etc/dir_colors`"
else
eval "`dircolors`"
fi
fi
######################################################################## bindkey
#
#bindkey -v # vi key bindings
bindkey -e
bindkey ' ' magic-space # also do history expansion on space
bindkey '^[OH' beginning-of-line # Home
bindkey '^[OF' end-of-line # End
bindkey '^[[3~' delete-char # Del
bindkey '^[[2~' overwrite-mode # Insert
bindkey '^[[5~' history-search-backward # PgUp
bindkey '^[[6~' history-search-forward # PgDn
bindkey ';5D' backward-word # Ctrl <-
bindkey ';5C' forward-word # ctrl ->
########################################################################## Alias
#
## Clean up unwanted system aliases and start from scratch.
unhash -am '*'
## fast directory change
alias ...='cd ../..'
alias ....='cd ../../..'
alias .....='cd ../../../..'
alias ......='cd ../../../../..'
alias .......='cd ../../../../../..'
## Normaux
alias cd..='cd ..'
alias df='df -h'
alias du='du -h'
alias grep='grep --color=auto'
alias la='ls -ah --color=tty'
alias ll='ls -lh --color=tty'
alias lla='ls -lah --color=tty'
alias more='less'
alias vi='vim'
## Corrections de mauvais réflexes
alias q!='echo $fg[red]Je ne suis pas dans VIM !$reset_color'
alias x!='echo $fg[red]Je ne suis pas dans VIM !$reset_color'
## Alias divers
#alias shutdown='sudo /sbin/shutdown -h now'
#alias tce-init='sudo ~/bin/tce-init'
alias yum='sudo yum'
alias mksrpm='rpmbuild -bs --define "_source_filedigest_algorithm 0" --define "_binary_filedigest_algorithm 0" '
## Alias "root" pour tous et tous pour root
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias dmesg='dmesg|less'
## Alias conditionnels
[ -f /usr/local/bin/service_web ] && alias service_web='sudo /usr/local/bin/service_web'
[ -d ~builder ] && alias builder='sudo /usr/local/bin/builder'
[ -d /srv/web/public_html/ ] && hash -d web=/srv/web/public_html/
[ -d /home/stockage/divx ] && hash -d divx=/home/stockage/divx
[ -d /home/stockage/mp3 ] && hash -d mp3=/home/stockage/mp3
[ -d /home/stockage/seriestv ] && hash -d seriestv=/home/stockage/seriestv
##################################################################### Historique
#
HISTFILE=~/.zsh/history
HISTSIZE=2000
SAVEHIST=2000
setopt hist_ignore_space
# Ne stocke pas une ligne dans l'historique si elle est identique à la
# précédente
#setopt hist_ignore_dups
# Supprime les répétitions dans le fichier d'historique, ne conservant
# que la dernière occurrence ajoutée
setopt hist_ignore_all_dups
# Supprime les répétitions dans l'historique lorsqu'il est plein, mais
# pas avant
#setopt hist_expire_dups_first
# Chaque ligne est ajoutée dans l'historique à mesure qu'elle est tapée
setopt inc_append_history
# La recherche dans l'historique avec l'éditeur de commandes de zsh ne
# montre pas une même ligne plus d'une fois, même si elle a été
# enregistrée
setopt hist_find_no_dups
# Quand l'utilisateur commence sa commande par '!' pour faire de la
# complétion historique, il n'exécute pas la commande immédiatement
# mais il écrit la commande dans le prompt
setopt hist_verify
######################################################################## Options
#
## Glob
setopt extendedglob
setopt numericglobsort
# nullglob : Si on utilise des jokers dans une liste d'arguments, retire les jokers
# qui ne correspondent à rien au lieu de donner une erreur
setopt nullglob
## Divers
setopt correctall
setopt auto_cd
#setopt chase_links
#setopt print_exit_value # Affiche le code de sortie si différant de '0'
unsetopt rm_star_silent # Demande confirmation pour 'rm *'
## Push
# L'exécution de "cd" met le répertoire d'où l'on vient sur la pile
setopt auto_pushd
# Ignore les doublons dans la pile
setopt pushd_ignore_dups
# N'affiche pas la pile après un "pushd" ou "popd"
setopt pushd_silent
# "pushd" sans argument = "pushd $HOME"
setopt pushd_to_home
## Jobs
# Les jobs qui tournent en tâche de fond sont nicé à '0'
#unsetopt bg_nice
# N'envoie pas de "HUP" aux jobs qui tourent quand le shell se ferme
#unsetopt hup
## Pas de beep
unsetopt beep
unsetopt hist_beep
unsetopt list_beep
##################################################################### Complétion
#
## autoloads
autoload -U compinit && compinit
autoload -U bashcompinit && bashcompinit # Compatibilité bash_completion
zmodload zsh/complist # Completion
## Schéma de complétion
#
# - Schéma A :
# 1ère tabulation : complète jusqu'au bout de la partie commune
# 2ème tabulation : propose une liste de choix
# 3ème tabulation : complète avec le 1er item de la liste
# 4ème tabulation : complète avec le 2ème item de la liste, etc...
# -> c'est le schéma de complétion par défaut de zsh.
#
# Schéma B :
# 1ère tabulation : propose une liste de choix et complète avec le 1er item
# de la liste
# 2ème tabulation : complète avec le 2ème item de la liste, etc...
#setopt menu_complete
# Schéma C :
# 1ère tabulation : complète jusqu'au bout de la partie commune et
# propose une liste de choix
# 2ème tabulation : complète avec le 1er item de la liste
# 3ème tabulation : complète avec le 2ème item de la liste, etc...
unsetopt list_ambiguous
# Options de compléion
# Quand le dernier caractre d'une complétion est '/' et que l'on
# tape 'espace' après, le '/' est effacé
setopt auto_remove_slash
# Ne fait pas de complétion sur les fichiers et répertoires cachés
#unsetopt glob_dots
## Esthétisme
zstyle ':completion:*:descriptions' format '%U%B%d%b%u'
zstyle ':completion:*:warnings' format '%BPas de résultat pour : %d%b'
## Pour disposer d'un menu pour la complétion et pouvoir sélectionner avec les flèches du clavier
zstyle ':completion:*' menu select=2
zstyle ':completion:*' select-prompt %SScrolling active: current selection at %p%s
# If you end up using a directory as argument, this will remove the trailing
# slash (usefull in ln)
zstyle ':completion:*' squeeze-slashes true
## Utiliser un cache
zstyle ':completion:*' use-cache on
zstyle ':completion:*' cache-path ~/.zsh/cache
## Pour que la commande cd offre la complétion sur les répertoires locaux pour les répertoires du cdpath
zstyle ':completion:*:*:cd:*' tag-order local-directories path-directories
zstyle ':completion:*:cd:*' ignore-parents parent pwd
## Avec sudo, il peut être intéressant d'avoir la complétion lorsque la commande n'est pas dans votre $PATH :
zstyle ':completion:*:sudo:*' command-path /usr/sbin /usr/bin /sbin /bin
## Eviter de reproposer un élément déjà proposé précédemment lors de la complétion pour les commandes rm, cp, mv
zstyle ':completion:*:rm:*' ignore-line yes
zstyle ':completion:*:mv:*' ignore-line yes
zstyle ':completion:*:cp:*' ignore-line yes
## killall
zstyle ':completion:*:killall:*' command 'ps -u $USER -o cmd'
zstyle ':completion:*:*:kill:*' menu yes select
zstyle ':completion:*:kill:*' force-list always
## Aller récupérer l'ensemble des hosts dans le fichier known_host de ssh pour permettre la completions
local _myhosts
if [ -d ~/.ssh ]; then
if [ -f ~/.ssh/known_hosts ];then
_myhosts=(${=${${(f)"$(<$HOME/.ssh/known_hosts)"}%%[# ]*}//,/ })
fi
fi
zstyle ':completion:*' hosts $_myhosts
# Prevent CVS files/directories from being completed:
zstyle ':completion:*:(all-|)files' ignored-patterns '(|*/)CVS'
zstyle ':completion:*:cd:*' ignored-patterns '(*/)#CVS'
########################################################################## MIMES
#
autoload -U zsh-mime-setup
autoload -U zsh-mime-handler && zsh-mime-setup
zstyle ':mime:.txt:' handler less %s
####################################################################### Fonctions
#
## Fonction find in files (fif)
fif() {
if [ "$#" -lt 2 ] ; then
echo "fif (find in files)"
echo "Usage: fif what where"
echo "Recherche de fichiers dont le nom match \"where\" et contenant \"what\""
echo -e "\twhere : pattern sur le nom des fichiers par ex : \*.php"
echo -e "\twhat : pattern pour egrep"
echo "Exemple : fif test \*.php"
return ;
fi
find . -type f -name "${2}" -print | xargs egrep -si "${1}" | cut -d ':' -f 1 | uniq
}
############################################# Pseudo zlogin mais même en interne
#
echo "${fg[${COLOR}]}$(uptime)"
echo "Kernel: $(uname -r) ($(uname -v))${reset_color}"
echo ""
[ -f /usr/bin/fortune ] && [ -d /usr/share/games/fortune-fr ] && fortune /usr/share/games/fortune-fr/ && echo ""