Raccourcir le prompt de Bash

Par défaut, le prompt de bash affiche le chemin complet vers le dossier courant. C'est parfois ennuyeux car après une certaine profondeur de navigation, le chemin dépasse largement la taille du terminal et donc se plie; comme par exemple:

guillaume@chaource:/sys/class/rfkill/rfkill0/subsystem/rfkill0/device/subsystem/
    phy0/device/leds $

Donc pour palier ce problème, voici une petite fonction bash à coller dans votre prompt afin d'y voir un peu plus clair:

shortwd() {
        num_dirs=3
        pwd_symbol="..."
        newPWD="${PWD/#$HOME/~}"
        if [ $(echo -n $newPWD | awk -F '/' '{print NF}') -gt $num_dirs ]
        then
             newPWD=$(echo -n $newPWD | awk -F '/' '{print $1 "/.../" $(NF-1) "/" $(NF)}')
        fi
        echo -n $newPWD
    }

PS1='\\u@\\h:$(shortwd) \\$ '

Ce qui donne ça:

guillaume@chaource:/.../device/leds $

Attention, si vous utilisez des guillemets doubles pour la définition du prompt, il faudra penser à échapper l'appel de la fonction comme ceci:

PS1="\\u@\\h:\\$(shortwd) \\$ "
Vus : 1763
Publié par Etenil : 58