Bash : jolie invite et améliorations

On 25 February 2008, in computing, config, by ayoli

fancy bash promptJ’ai longtemps cherché comment faire un joli bash prompt J’ai trouvé pas mal d’exemples datant de 1996 et 1998 que j’ai du pas mal bidouiller.

Cependant, cette bidouille n’a jamais bien fonctionné. Par exemple, lorsque je voulais chercher une commande dans l’historique en utilisant les flèches (haut et bas) ou les raccourci CTRL-R, Il y avait un problème de colonnes.
Si je voulais changer un caractères (ou plus) dans la commande choisie dans l’historique, les caractères n’étaient en fait pas ou je les crouais, et souvent le prompt était en partie caché par la commande. Pas très utilisable.

Il ya peu de temps j’ai essayé BashStyle-ng pour voir à quel point , et de quelle manière il pouvait changer mon invite bash. AEt quelle n’a pas été ma surprise de voir dans les choix : “elite prompt” (qui était le nom du vieux prompt que j’avasi bidoullé). Du coup jai testé cette option et (encore bidouillé le bash derrière pour obtenir le look finlaement voulu.
J’ai cherché la fonction générant le prompt dans le code de BashStyle, puis apres avoir fait quelques changement j’étais content de ne pas voir mon bug d’affichage d’historique revenir. Apres un moment pas si long, j’ai fini par en retirer exactement ce que je voulais.
Donc voici la première partie de ce bashrc largement inspiré par bashstyle :*
Note :comme certains caractères spéciaux servant à dessiner les coins et lignes n’apparaissent pas dans l’article, téléchargez le fichier en bas de page..

#!/bin/bash
	
  1. based on a function found in bashtstyle-ng 5.0b1
  2. Original author Christopher Roy Bratusek (http://www.nanolx.org)
  1. Last arranged by ayoli (http://ayozone.org) 2008-02-04 17:16:43 0100 CET

    function pre_prompt {
    newPWD=”${PWD}”
    user=”whoami”
    host=$(echo -n $HOSTNAME | sed -e “s/[\.].//”)
    datenow=$(date “%a, %d %b %y”)
    let promptsize=$(echo n “-($user@$host ddd, DD mmm YY)—-(${PWD})—-” \ | wc -c | tr d ” ”)
    let fillsize=${COLUMNS}
    ${promptsize}
    fill=””
    while [ ”$fillsize” -gt “0” ]
    do fill=”${fill}—”
    let fillsize=${fillsize}-1
    done
    if [ ”$fillsize” lt “0” ]
    then let cutt=3
    ${fillsize} newPWD=”...$(echo -n $PWD | sed -e “s/\(^.\{$cutt\}\)\(.
    \)/\2/”)”
    fi

    }

    PROMPT_COMMAND=pre_prompt

    export black=”\[\033[0;38;5;0m\]”
    export red=”\[\033[0;38;5;1m\]”
    export green=”\[\033[0;38;5;2m\]”
    export yellow=”\[\033[0;38;5;3m\]”
    export blue=”\[\033[0;38;5;4m\]”
    export magenta=”\[\033[0;38;5;55m\]”
    export cyan=”\[\033[0;38;5;6m\]”
    export white=”\[\033[0;38;5;7m\]”
    export coldblue=”\[\033[0;38;5;33m\]”
    export smoothblue=”\[\033[0;38;5;111m\]”
    export iceblue=”\[\033[0;38;5;45m\]”
    export turqoise=”\[\033[0;38;5;50m\]”
    export smoothgreen=”\[\033[0;38;5;42m\]”

    PS1=”$green??($coldblue\u@\h \$(date \”%a, %d %b %y\”)$green)?\${fill}?($coldblue\$newPWD\
    $green)???\n$green($coldblue\$(date \”
    %H:%M\”) \$$green)?>$white ”


Note :comme certains caractères spéciaux servant à dessiner les coins et lignes n’apparaissent pas dans l’article, téléchargez le fichier en bas de page..

La seconde partie concerne plutot les aliases et autres réglages :

		
  • bash_history settings: size and no duplicates and no lines w/ lead spaces
    exportHISTCONTROL=”ignoreboth”
    export HISTSIZE=1024

  • aliases #############################################
  • enable color support of ls and also add handy aliases eval `dircolors -b` alias ls=’ls—color=auto’ alias dir=’ls—color=auto—format=vertical’ alias vdir=’ls—color=auto—format=long’
  • some more ls aliases alias ll=’ls -lhX’ alias la=’ls -A’ alias ldir=’ls -lhA |grep ^d’ alias lfiles=’ls lhA |grep ’ #alias l=’ls -CF’
  • To see something coming into ls output: lss
  • alias lss=’ls -lrt | grep $1’
    1. To check a process is running in a box with a heavy load: pss
    alias pss=’ps -ef | grep $1’
    1. usefull alias to browse your filesystem for heavy usage quickly
    alias ducks=’ls -A | grep -v -e ’\’‘\.\.$’\’’ |xargs -i du -ks {} |sort -rn |head -16 | awk ’\’’{print $2}’\’’ | xargs -i du -hs {}’
    1. cool colors for manpages
    alias man=”TERMINFO=~/.terminfo TERM=mostlike LESS=C PAGER=less man”

    ##########################################################

    1. enable programmable completion features (you don’t need to enable
    2. this, if it’s already enabled in /etc/bash.bashrc).
      if [ -f /etc/bash_completion ]; then . /etc/bash_completion
      fi

    3. CDPATH initialisation
    4. CDPATH=.:~:/media

    download bashrc.txt
    (faites une copie de sauvegarde de votre ~/.bashrc, puis téléchargez ce fichier en utilisant le clic droit puis “enregistrer la cible sous” puis placez le dans votre home en le renomant .bashrc).

    Tagged with:  

    8 Responses to “Bash : jolie invite et améliorations”

    1. Don Fenice says:

      Tres interessant ces alias, notamment l’alias ducks.

      Pour les scan de fichiers du repertoire courant j’utilise cet alias, moins poussez que le ducks mais assez utile :
      alias lh=’ls -sShr1’

    2. ayoli says:

      Cet alias ducks, je lavais trouvé sur un site il y a deja quelques années. Je ne m’en sert pas beaucoup à vrai dire. Je ne suis meme pas sur qu’il se compporte réélement bien.

    3. ajeffreys says:

      Thanks for this, just what I was looking for :)

    4. It doesn't matter says:

      “imp?ovments”?
      My english writing skills sux, but a spelling error in the title is too much =P

    5. KIAaze says:

      Hi,
      I improved your ducks alias a little bit, so that it handles filenames with spaces correctly. :)

      alias ducks=’find . -maxdepth 1 -mindepth 1 -print0 | xargs -0 -n1 du -ks | sort -rn | head -16 | cut -f2 | xargs -i du -hs {}’

    6. KIAaze says:

      Grr, what’s wrong with quotes in the comments?

      [code]
      alias ducks=’find . -maxdepth 1 -mindepth 1 -print0 | xargs -0 -n1 du -ks | sort -rn | head -16 | cut -f2 | xargs -i du -hs {}’
      [/code]

    7. KIAaze says:

      Well, anyway, just fix the single-quotes and it should work.
      Here’s why I decided to replace “ls” with a “find” command:
      http://mywiki.wooledge.org/ParsingLs

    8. ayoli says:

      @KIAaze: thank you for your input, I’ll try your ducks improvement.

    Leave a Reply

    Free WordPress Theme

    Looking for something?

    Use the form below to search the site:

    Still not finding what you're looking for? Drop a comment on a post or contact us so we can take care of it!