Linux : Personnaliser son environnement de travail grâce à son bashrc

Partager cet article

Temps estimé pour la lecture de cet article : 23 min

Hi everyone ! Aujourd’hui, je vais tacher de vous présenter un fichier très intéressant sous linux, appelé le bashrc ! Il se trouve à la racine de votre home, par exemple pour moi /home/lud00/.bashrc. C’est ce qu’on appelle un fichier caché, afin d’afficher de tels fichiers sous linux, il faut faire dans nautilus (gestionnaire de fichiers), un ctrl+h ou dans un terminal : ls -a.

Le bashrc est donc un fichier de configuration permettant de personnaliser son terminal. Il nous permet de définir des alias (des raccourcis pour certaines commandes), de se créer des fonctions personnel ou enfin de modifier son prompt (son invite de commande).

Je vais donc de ce pas partager avec vous, mes alias, variables et fonctions que j’utilise tout les jours et qui me semble pertinent. Commençons par les alias, ce sont donc comme je l’ai dit plutôt des raccourcis nous permettant d’appeler plus rapidement une commande. On peut par exemple redéfinir la commande ls –color à un ls, pour cela il suffit de faire : alias nom=’commande’. Ce qui nous donne donc pour le ls : alias ls=’ls –color’.

alias ll='ls -la'
alias ls='ls --color'
alias q='exit'
alias v='vim' 
alias vb='vim ~/.bashrc && . ~/.bashrc'
alias vv='vim ~/.vimrc'
alias sagi='sudo apt-get install'
alias sagu='sudo apt-get update'
alias sarp='sudo add-apt-repository ppa:'
alias n='nautilus'
alias e='evince'
alias c..="cd ../../"
alias cx="chmod +x"
alias h="history | grep $1"

Dans, les plus utile on retrouve ainsi l’alias cx, qui permet le droit d’exécution à un fichier, très utile quand on télécharge des binaires sur internet. la commande vb, permet donc d’ouvrir ce fameux fichier bashrc avec vim et une fois qu’on quitte vim, on ‘source’ notre bash grâce à la commande . ~/.bashrc, ce qui permet d’appliquer immédiatement les changements au terminal courant (sinon, il faut fermer et relancer ce dernier). L’alias vv, va nous permettre de faire la même avec le fichier de configuration de l’éditeur de texte vim. J’ai également des alias comme ‘n’ pour nautilus et ‘e’ pour evince ce qui me permet d’ouvrir très rapidement un dossier ou un pdf. Par exemple comme ceci : « n ~ », ce qui va me permettre d’ouvrir le dossier home depuis le terminal ! Enfin un dernier alias qui peut-être intéressant, c’est la commande history | grep $1, en tapant h, suivi du début de commande que vous recherchez vous allez pouvoir retrouver rapidement une commande déjà utilisé.

A part les alias, on peut également personnaliser des variables et certaines présente un intérêt certains ! L’exemple le plus concret est la variable CDPATH, elle permet d’éviter de taper des chemins complets pour accéder à un dossier, ici par exemple afin d’accéder à un projet qui s’appellerait cakephp/ et qui se situerais dans le dossier /var/www/, on devrait faire : cd /var/www/cakephp. Grâce à la variable CDPATH, un simple : cd cakephp et on se retrouverais dans le dossier désiré, en plus l’auto-complétion (tab sous linux) fonctionne sur les dossiers contenus dans le CDPATH. Toutefois, attention si vous mettez trop de dossiers dans le CDPATH, ça peut très vite dégénérer l’auto-complétion vous proposera en effet beaucoup trop de solutions, à utiliser avec parcimonie donc !

Il y a également la variable PATH. Elle correspond aux répertoires dans lesquels le shell cherche la commande qu’on écrit au clavier. On peut donc, se créer un dossier bin, dans notre home et y ajouter des scripts ou binaires qui nous intéressent. On pourra alors les exécuter de n’importe quel dossier. Le shell ayant connaissance de ces outils grâce à cette variable.

CDPATH=~/Documents/Projets:/var/www
export PATH=$PATH:~/Documents/bin
BLACK=$(tput setaf 0)
RED=$(tput setaf 1)
GREEN=$(tput setaf 2)
YELLOW=$(tput setaf 3)
BLUE=$(tput setaf 4)
MAGENTA=$(tput setaf 5)
CYAN=$(tput setaf 6)
WHITE=$(tput setaf 7)
DEFAULT=$(tput sgr0)
PS1="\u\[$CYAN\] \w \[$DEFAULT\][\[$RED\]\A\[$DEFAULT\]] -> "

Maintenant on va parler de la variable PS1, cette dernière permet de customiser son prompt, tout d’abord, vous verrez quelques variables de définies, ce sont des couleurs que le terminal peut interpréter et afficher. Cette variable possède beaucoup d’options et permet vraiment d’aller assez loin dans la personnalisation, voici un extrait du man :

  • \n : Faire un retour à la ligne
  • \r : Faire un retour en début de ligne (carriage return)
  • \j : le nombre de jobs réalisé par le shell (correspond aux tâches exécutés en fond, grâce au ctrl+z)
  • \d : La date au format : « Jour Mois Année »
  • \t ou \T : le temps soit sous la forme 24h, hh:mm:ss ou sur 12h
  • \A : La date actuelle sous le format HH:MM (24h)
  • \u : Le nom de l’utilisateur courant.
  • \v : La version du bash
  • \! : Le numéro de la dernière commande exécuté.
  • \w : le dossier courant le ~ représente le $HOME.

Et voici le résultat de ma variable PS1 :

bash linux ps1

Ps1 – bash

Enfin, last but not least, comme dirait nos amis anglais : il est possible de créer nos propres fonctions ! Ainsi par exemple, la fonction ctex() définit ci-dessous permet de générer un pdf à partir d’un fichier .tex et de supprimer tout les fichiers temporaires résultant de la compilation. Enfin, pour finir on ouvre le fichier créer avec evince. La fonction gcv(), permet d’ajouter un plugin à vim et cela simplement, on donne l’url vers le dépôt git et le nom du plugin. La fonction mkcd, permet de créer un dossier et de se rendre dedans. Enfin, la dernière fonction up(), permet de remonter d’un nombre quelconques de dossiers. Par exemple si je suis dans le dossier : ~/Documents/Etudes/IUT/, il me suffit de faire up 3, pour me rendre au home. Petite précision pour ceux qui voudraient créer eux mêmes leurs fonctions, les variables $1, $2… correspondent aux variables passées en paramètres à la fonction.

function ctex() {
pdflatex $1
rm *.aux
rm *.log 
rm *.out
name=$(basename $1)
name="${name%.*}.pdf"
evince $name
}
function gcv() {
git clone $1 ~/.vim/bundle/$2
echo "Bundle '$2'" >> ~/.vimrc
}
function mkcd () {
mkdir "$1"
cd "$1"
}
function up() {
ups=""
for i in $(seq 1 $1) 
do
ups=$ups"../"
done
cd $ups
}

Et voila, j’espère vous avoir donné un bon aperçu de ce qui est possible de faire avec le terminal et vous avoir montré à quel point on peut gagner en efficacité avec ce dernier. Beaucoup de ces fonctions ou alias proviennent d’internet et je remercie leurs auteurs pour le partage !

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *