4 janvier 2014

Un avant-prompt loquace avec Bash


Je personnalise tout ce qui est personnalisable dans mon environnement de travail, et vu que GNU/Linux d'une manière générale est fait dans cette optique là, j'en profite.

J'utilise le shell de base Bash, et j'aime avoir au démarrage d'une session tmux et d'un terminal quelques informations que je juge être importantes, et cela juste avant le prompt. Il existe pas mal de scripts qui permettent justement de faire cela (Malheureusement je n'ai pas de nom en tête) mais moi je préfère le faire à la mano, avec quelques commandes maison.

Ces commandes afficheront notamment les informations suivantes:
  • Un titre classe et la date du jour.
  • Le nom d'utilisateur.
  • Le nom de domaine.
  • Le nom de la distribution Linux utilisée.
  • La version du noyau.
  • La taille des partitions (Dans mon cas, la partition racine et home).
  • La charge CPU et la RAM utilisée.
  • L'uptime.
Le tout est formaté pour que ça soit lisible, avec des couleurs qui me paraissent être de bon goût (Le mien en tout cas) comme le montre la capture au début de l'article.


Pour le nom de la distribution, je triche un tout petit peu vu que le nom retourné est Ubuntu, j'ajoute donc un X avant. Vous pouvez supprimer ce X pour avoir le nom exact de votre OS. Si vous avez une autre méthode pour retourner Xubuntu directement, prière de m'en faire part dans la partie des commentaires. Voici les lignes de commandes à ajouter à la fin de votre .bashrc (Le prompt de la capture n'y est pas inclus):

 echo -e "\E[01;31mThe terminal \E[01;33m[ $(date "+%a %d, %B %Y") ]\n"  
 # User and hostname.  
 echo -e "\E[01;30mUser: \E[00m$USER\t\t\E[01;30mHostname: \E[00m$HOSTNAME"  
 # OS and kernel version.  
 echo -e "\E[01;30mOS: \E[00mX$(echo $(head -n 2 /etc/lsb-release | awk -F = '{print $2}')" ") \t\E[01;30mKernel: \E[00m$(uname -r)"  
 # Size of root and home partitions.  
 echo -e "\E[01;30mRoot: \E[00m$(df -h / | awk '/^\//{print $3"/"$2}')\t\t\E[01;30mHome: \E[00m$(df -h /home | awk '/^\//{print $3"/"$2}')"  
 # CPU percentage and used RAM.  
 echo -e "\E[01;30mCPU: \E[00m$(top -b -n2 -d 0.05 | grep -i "^CPU" | tail -n 1 | awk '{print $2+$4"%"}')    \E[01;30mRAM: \E[00m$(free -m | awk '/^-/{print $3"Mb"}')"  
 # Uptime.  
 echo -e "\E[01;30mUptime: \E[00m$(uptime | awk -F "up" '{print $2}' | awk -F ", . user" '{print $1}' | tr -d "[:blank:]")\n"  

Bien sûr, Il y a toujours matière à optimiser tout ça, ou encore à ajouter d'autres informations, libre à vous donc de le faire, sinon vous pouvez toujours me faire une demande via les commentaires.

Les commandes sur pastebin avec coloration syntaxique.

MdA
Si vous avez aimé cet article, n'hésitez pas à le partager et à vous abonner au flux RSS ...

Aucun commentaire:

Enregistrer un commentaire