Catégories
Open-source Planet-libre Systeme

Configurer votre prompt BASH

S’il y a bien une chose que nous, geeks du monde libre, regardons en longueur de journée, c’est bien notre cher prompt (vous savez: $, # …). C’est en lisant ce billet que je me suis dit que mon prompt actuel avait besoin d’un ravalement de façade:

Je souhaite mettre un peu de couleur dans mon nouveau prompt ainsi que des informations sur le dossier en cours. Quand ce dernier est un dossier de développement sous Git, je veux afficher la branche en cours d’utilisation et aussi savoir si mon répertoire est dans l’état « staging » (c’est à dire si je dois faire un commit).

Sans plus attendre, voici un aperçu de mon nouveau prompt (version 2 lignes):

Ce dernier se décompose en deux lignes:

  • user@host:folder (je garde cette structure pour simplifier les copier/coller en SSH, puis l’état Git (avec [le nom de la branche] en couleur rouge si staging, vert sinon)
  • le prompt proprement dit (là ou l’on va taper la commande :)) précédé de $ si on est un utilisateur standard et # si root

Pour la première ligne, j’utilise la variable BASH nommé PROMPT_COMMAND qui a le gros avantage d’être exécuté à chaque fois que le prompt est affiché (pas seulement à l’initialisation). La seconde ligne utilise la variable PS1.

Pour disposer de ce prompt, il est nécessaire d’insérer le code suivant à la fin de votre fichier .bashrc (il est aussi disponible sous GitHUB):

[cc lang= »bash »]

# Colors

NoColor= »\033[0m »

Cyan= »\033[0;36m »

Green= »\033[0;32m »

Red= »\033[0;31m »

Yellow= »\033[0;33m »

# Chars

RootPrompt= »# »

NonRootPrompt= »$ »

# Contextual prompt

prompt() {

USERNAME=`whoami`

HOSTNAME=`hostname`

CURRENTPATH=`pwd`

LEFTPROMPT=$Cyan$USERNAME@$HOSTNAME »: »$Yellow$CURRENTPATH

let LEFTSIZE=$(echo -n « $USERNAME@$HOSTNAME:$CURRENTPATH » | wc -c)

RIGHTPROMPT= » »

let RIGHTSIZE=0

GITSTATUS=$(git status 2> /dev/null)

#echo $GITSTATUS > /dev/null 2>&1

if [ $? -eq 0 ]; then

echo $GITSTATUS | grep « not staged » > /dev/null 2>&1

if [ $? -eq 0 ]; then

RIGHTPROMPT=$Red

else

RIGHTPROMPT=$Green

fi

BRANCH=`git describe –contains –all HEAD`

RIGHTPROMPT=$RIGHTPROMPT »[Git branch « $BRANCH »] »

let RIGHTSIZE=$(echo -n « [Git branch « $BRANCH »] » | wc -c)

fi

let BLANCKSIZE=${COLUMNS}-${LEFTSIZE}-${RIGHTSIZE}

RIGHTPROMPT=$RIGHTPROMPT$NoColor

echo -e -n $LEFTPROMPT

printf « %$(($BLANCKSIZE))s »

echo -e $RIGHTPROMPT

}

# Main prompt

PROMPT_COMMAND=prompt

if [ $EUID -ne 0 ]; then

PS1=$NonRootPrompt »  »

else

PS1=$RootPrompt »  »

fi

[/cc]

Update (20/02/2012): Je viens également d’ajouter une version allégée (en une seule ligne) de ce prompt. Le fichier de configuration BASH correspondant se trouve ici.

Update (21/02/2012): David Olivier vient de modifier  le script (version deux lignes) pour fonctionner avec SVN. A retrouver sur le GitHub.

Et vous, comment est votre prompt ?

 

Catégories
Blog Open-source Planet-libre Systeme

Script de post installation de Debian Desktop

Comme la plupart d’entre vous, j’ai migré mon poste de travail vers la version 11.04 d’Ubuntu et je dois dire que pour une utilisation professionnelle, je trouve l’interface Unity encore perfectible. J’ai donc dans un premier temps testé la toute fraiche version de Fedora 15 avec Gnome 3 et je suis arrivé plus ou moin à la même conclusion.

J’ai donc décidé de « switcher » vers une Debian 6 (le script doit fonctionner sous Squeeze et Sid en adaptant le sources.list). Je voulais obtenir, au niveau du desktop, un résultat se rapprochant de ce que j’avais dans la version 10.10 d’Ubuntu. C’est à dire:

  • Gnome 2 avec un thème GTK Equinox Evolution Dawn + icônes Faenza
  • Conky avec le thème LUA 2011
  • Mes outils pour le blog et de tous les jours: Chromium, Hotot, Terminator, Shutter, Spotify, Dropbox
  • Une liste de dépôts utile pour mon boulot dans le sources.list (attention, le script utilise des dépôts « Sid » officiels et certains autres pouvant proposer des logiciels ou librairies « non libre »)

Comme je l’avais fait pour Ubuntu, j’ai donc développé un script post install pour Debian 6 qui va automatiser une partie de ces actions.

Le script est disponible dans le GITHub suivant (pour les remarques éventuelles, bug…):

https://github.com/nicolargo/debianpostinstall

Avant / Après

Voici un aperçu du bureau avant l’exécution du script…

… puis après (avec ce fond d’écran):

Téléchargement du script

Il faut saisir les commandes suivantes dans un terminal:

cd ~

wget https://github.com/nicolargo/debianpostinstall/raw/master/debian6postinstall.sh

chmod a+x debian6postinstall.sh

Exécuter le script

Le script nécessite les droits d’administrations. Le plus simple est donc de lancer un terminal administrateur (menu Applications > Accessoires > Terminal Administrateur) puis de saisir la commande suivante:

./debian6postinstall.sh

Un certain nombre d’informations va s’afficher sur l’écran. Si une question vous est posée, il suffit de choisir la réponse par défaut.

Si vous avez des remarques sur ce scripts, je suis comme d’habitude preneur !