Présentation

Bash, ou Bourne Again SHell est un interpréteur de commande utilisé dans vos consoles ou vos terminaux. À cet effet il permet de lancer des commandes et travailler en mode non graphique.

Il permet, entre autre, de faire du scripting, c’est à dire de petits (ou grands) programmes.

Étant donné que c’est un outil de travail, que diriez-vous de l’adapter à vos besoins, voire de le rendre plus ergonomique ? Au travers de différentes astuces (qui viendront au fur et à mesure), vous saurez améliorer la qualité de votre BASH, et qui sait, peut être passer plus de temps sur la console qu’en mode graphique !

Invite de commandes en couleurs !

Pour la coloration du TTY ($PS1), il faut modifier le fichier ~/.bashrc de l’utilisateur et y mettre (vers la fin du document par exemple) ceci :

# Couleurs diverses
VERT='\[\033[0;32m\]' # vert mince
BLANC='\[\033[1;37m\]' # blanc gras
DEFAUT='\[\033[0;m\]' # couleur console par defaut
NOIR='\[\033[0;30m\]' # noir mince
ROUGE='\[\033[0;31m\]' # rouge mince
MARRON='\[\033[0;33m\]' # marron mince
BLEU='\[\033[0;34m\]' # bleu fonce mince
VIOLET='\[\033[0;35m\]' # violet mince
CYAN='\[\033[0;36m\]' # cyan mince
GRIS='\[\033[0;37m\]' # gris clair mince
BLANCLEGER='\[\033[0;38m\]' # blanc mince
ROUGECLAIR='\[\033[1;31m\]' # rouge clair gras
VERTCLAIR='\[\033[1;32m\]' # vert clair gras
JAUNE='\[\033[1;33m\]' # jaune gras
BLEUCLAIR='\[\033[1;34m\]' # bleu clair gras
ROSE='\[\033[1;35m\]' # rose clair gras
CYANCLAIR='\[\033[1;36m\]' # cyan clair gras

export PS1="$VERTCLAIR[$ROSE\u$VERTCLAIR@\h:$JAUNE\w$VERTCLAIR] $ROSE\$ $VERTCLAIR"

Ceci est pour l’utilisateur normal, pour le root, changer les VERTCLAIR en JAUNE, et inversement ! Spasmes dus à la visilibité garantis !

Ne pas oublier de changer $ en # pour l’utilisateur root !

En fait, c’est bien la ligne PS1=“gnagna” qui va définir les couleurs et l’affichage de votre invite de commande.

Les options importantes sont :

Quelques colorations de mes consoles :

PS1="$ROUGECLAIR[$BLANC\u$ROUGECLAIR@\h:$JAUNE\w$ROUGECLAIR] $BLANC\$ $ROUGECLAIR"
PS1="$JAUNE[$ROSE\u$JAUNE@\h:$VERTCLAIR\w$JAUNE] $ROSE\$ $JAUNE"
PS1="$BLEUCLAIR[$BLANC\u$BLEUCLAIR@\h:$ROSE\w$BLEUCLAIR] $ROSE\$ $BLEUCLAIR"
PS1="$BLEU[$BLANCLEGER\u$BLEU@\h:$ROUGE\w$BLEU] $ROUGE\$ $BLEU"
PS1="$VERTCLAIR[$ROSE\u$VERTCLAIR@\h:$JAUNE\w$VERTCLAIR] $ROSE\$ $VERTCLAIR"
PS1="$VERTCLAIR\u@\h$DEFAUT:$BLEUCLAIR\w$DEFAUT\$ "
PS1="$CYAN[$NOIR\u$CYAN@\h:$BLEU\w$CYAN] $NOIR\$ $CYAN"

À vous de jouer ! Inventez les invites de commandes que vous désirez !

Mon fichier de configuration

Voici le fichier que j’utilise sur l’un de mes ordinateurs (certaines lignes dérivent directement du fichier de configuration de base) :

#Ajouter ici toutes les variables d'environnement
## La ligne suivante est pour Debian, pour les "gems" Ruby
export PATH=$PATH:/var/lib/gems/1.8/bin/
## Lecture des pages man en couleur
export PAGER=most
## Applications installés @home
export PATH=~/bin/:$PATH
## Editeur de texte
export EDITOR=vim
## Navigateur par défaut
export BROWSER=elinks
#
#Couleurs pour le bash
## Couleurs diverses
VERT='\[\033[0;32m\]' # vert mince
BLANC='\[\033[1;37m\]' # blanc gras
DEFAUT='\[\033[0;m\]' # couleur console par defaut
NOIR='\[\033[0;30m\]' # noir mince
ROUGE='\[\033[0;31m\]' # rouge mince
MARRON='\[\033[0;33m\]' # marron mince
BLEU='\[\033[0;34m\]' # bleu fonce mince
VIOLET='\[\033[0;35m\]' # violet mince
CYAN='\[\033[0;36m\]' # cyan mince
GRIS='\[\033[0;37m\]' # gris clair mince
BLANCLEGER='\[\033[0;38m\]' # blanc mince
ROUGECLAIR='\[\033[1;31m\]' # rouge clair gras
VERTCLAIR='\[\033[1;32m\]' # vert clair gras
JAUNE='\[\033[1;33m\]' # jaune gras
BLEUCLAIR='\[\033[1;34m\]' # bleu clair gras
ROSE='\[\033[1;35m\]' # rose clair gras
CYANCLAIR='\[\033[1;36m\]' # cyan clair gras
#
## Adptation des couleurs à notre invite de commande
PS1="$CYAN[$DEFAUT\u$CYAN@\h:$JAUNE\w$CYAN] $DEFAUT\$ $CYAN"
#
#Don't put duplicate lines in the history.
export HISTCONTROL=ignoredups
#
#Check the window size after each command and, if necessary,
# update the values of LINES and COLUMNS.
shopt -s checkwinsize
#
#Make less more friendly for non-text input files, see lesspipe(1)
[ -x /usr/bin/lesspipe ] && eval "$(lesspipe)"
#
#If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)
    PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD/$HOME/~}\007"'
    ;;
*)
    ;;
esac
#
#Alias
## Permet la coloration du retour d'un `ls'
export LS_OPTIONS='--colorauto'
eval "`dircolors`"
alias ls='ls $LS_OPTIONS'
alias ll='ls $LS_OPTIONS -l'
alias la='ls $LS_OPTIONS -A'
alias l='ls $LS_OPTIONS -CF'
alias dir='ls $LS_OPTIONS --formatvertical'
alias vdir='ls $LS_OPTIONS --formatlong'
#
## Evite de faire des erreurs
alias rm='rm -i'
alias cp='cp -i'
#
## Autres alias
alias vi='vim'
alias mem="free -mt"
alias df="df -hT"

Pour ajouter les alias dans un fichier séparé, ajoutez :

if [ -f ~/.bash_aliases ]; then
  . ~/.bash_aliases
fi      

Puis copiez l’ensemble des lignes alias dans le fichier ~/.bash_aliases.

Liens utiles