Rendre ses scripts acces­sibles de n’im­porte où

Tous ceux qui ont déjà créé des scripts Bash savent combien il est éner­vant de devoir soit se placer dans le dossier conte­nant le script en ques­tion, soit écrire le chemin complet vers le script pour l’exé­cu­ter. Or il est possible d’exé­cu­ter ses scripts depuis n’im­porte quel empla­ce­ment dans l’ar­bo­res­cence, simple­ment en disant à GNU/Linux où il doit cher­cher.

Un peu de théo­rie…

Afin d’exé­cu­ter des scripts et a fortiori des programmes, GNU/Linux regarde des dossiers spéci­fiques pour trou­ver les exécu­tables. Ces dossiers sont conte­nus dans la variable d’en­vi­ron­ne­ment $PATH. Afin d’af­fi­cher cette variable et savoir quels sont les dossiers parcou­rus, tapez la commande suivant dans un termi­nal :

$ echo $PATH

Les dossiers parcou­rus sont sépa­rés par le carac­tère “:”. Si vous voulez les voir s’af­fi­cher avec un dossier par ligne, vous pouvez écrire la commande suivante :

$ echo $PATH | sed -e "s/:/\n/g"

… et on passe à la pratique

Pour ajou­ter votre (vos) propre(s) dossier(s) à cette liste, il vous faut éditer votre fichier .bashrc. Ajou­tez-y à la fin une des deux lignes suivantes :

  • si vous voulez ajou­ter un seul dossier :
export PATH=$PATH:lien_absolu_vers_votre_dossier
  • si vous voulez en ajou­ter plusieurs, il suffit de sépa­rer les dossier par un “:” de la manière suivante :
export PATH=$PATH:lien_absolu_vers_votre_dossier_1:lien_absolu_vers_votre_dossier_2

Vous auriez pu écrire ces lignes direc­te­ment dans votre termi­nal, mais cela n’au­rait fonc­tionné que pour la session de ce termi­nal. Pensez à relan­cer une instance de termi­nal pour les chan­ge­ments soient pris en compte. À présent, vous pouvez appe­ler vos programmes et scripts shell où que vous vous trou­viez dans l’ar­bo­res­cence de votre ordi­na­teur.

Person­na­li­sez l’ap­pa­rence de votre émula­teur de termi­nal

Si vous avez choisi URxvt comme émula­teur de termi­nal, vous avez dû être surpris en le lançant la première fois de voir à quel point il peut être laid. Il faut savoir que c’est un termi­nal extrê­me­ment confi­gu­rable et person­na­li­sable.

Toutes les confi­gu­ra­tions se font dans un seul fichier, le fichier .Xdefault. S’il n’existe pas, ce qui est fort probable, créez-le. Diffé­rents para­mètres existent. Plutôt que de les prendre un par un, voici, regrou­pés dans ce tableau, les prin­ci­paux.

Pour infor­ma­tion, bool signi­fie booléen, le para­mètre n’ac­cepte donc que la valeur true ou false, et les couleurs corres­pondent à la palette HTML.

Para­mètre Valeurs possibles Expli­ca­tion
Taille du termi­nal URxvt*­geo­me­try: 85×30 La dimen­sion corres­pond au nombre de lignes et de colonnes
Police URxvt*­font:
(les valeurs sont à sépa­rer par ”:”)
xft
termi­nus La police à affi­cher
style=Regu­lar La graisse de la police
pixel­size=10 La taille de la police
anti­alias=bool L’ac­ti­va­tion de l’anti­alia­sing
Buffer URxvt*­sa­veLines: 10000 La taille de la mémoire tampon
Barre de défi­le­ment URxvt*s­crollBar: bool L’af­fi­chage ou non de la barre de défi­le­ment
URxvt*s­crollBar_right: bool La posi­tion de la barre à droite
URxvt*s­crollCo­lor couleur La couleur de la barre
URxvt*s­croll­style: rxvt/plain/next/xterm Style de la barre de défille­ment
Curseur URxvt*­cur­sorCo­lor: couleur La couleur du curseur (par défaut la couleur du fore­ground
URxvt*­cur­sorB­link: bool Clogno­te­ment du curseur
Couleurs URxvt*­fo­re­ground: couleur La couleur du texte
URxvt*­back­ground: couleur La couleur de l’ar­rière-plan
Fausse trans­pa­rence URxvt*­trans­pa­rent: bool Acti­va­tion de la fausse trans­pa­rence
URxvt.shading Valeur Niveau de trans­pa­rence où –100 éclair­cit et 100 assom­brit
Vrai trans­pa­rence URxvt*­back­ground rgba:####/####/####/dddd Redé­fi­ni­tion de l’ar­rière-plan
URxvt*­depth: 32 Passer l’af­fi­chage en 32 bits (?)

Vous pouvez trou­ver plus de para­mètres dans les pages du manuel d’URxvt

$ man urxvt

Grâce à ces para­mètres, vous pour­rez faci­le­ment avoir un termi­nal person­na­lisé et plus agréable visuel­le­ment.

Calcu­lez l’âge du capi­taine

Voici un petit script bash que j’ai écrit (avec un peu d’aide, je l’avoue), qui n’a aucune utilité, si ce n’est calcu­ler l’âge de quelqu’un. Il n’uti­lise que des fonc­tions de base. L’uti­li­sa­tion est simple, lancez le script et suivez les indi­ca­tions de votre termi­nal

#!/bin/bash
JourActu=`date +%-d`
MoisActu=`date +%-m`
AnneeActu=`date +%Y`

echo "Nous sommes bien le $JourActu/$MoisActu/$AnneeActu."

read -p 'Entrez votre jour de naissance : ' JourNaiss
read -p 'Entrez votre mois de naissance : ' MoisNaiss
read -p 'Entrez votre année de naissance : ' AnneeNaiss

echo "Vous êtes donc né(e) le $JourNaiss/$MoisNaiss/$AnneeNaiss."

let "AnneeReel = AnneeActu - AnneeNaiss"

if [ $MoisNaiss -gt $MoisActu ] || ( [ $MoisNaiss -eq $MoisActu ] && [ $JourNaiss -gt $JourActu ] )
then
let "AnneeReel = AnneeReel - 1"
fi
echo "Vous avez $AnneeReel ans révolus."

let "AnneeAnniv = AnneeNaiss + AnneeReel"
echo "Votre dernier anniversaire était le $JourNaiss/$MoisNaiss/$AnneeAnniv."

if [ $AnneeAnniv -eq $AnneeActu ]
then
let "MoisReel = MoisActu - MoisNaiss"
else
let "MoisReel = 12 + MoisActu - MoisNaiss"
fi

if [ $JourNaiss -gt $JourActu ] 
then
let "MoisReel = MoisReel - 1"
fi

echo "Vous avez $AnneeReel ans et $MoisReel mois."

if [ $JourNaiss -le $JourActu ]
then
let "JourReel = JourActu - JourNaiss"
else
case $MoisActu in
1 | 2 | 4 | 6 | 8 | 9 | 11)
let "JourReel = 31 - JourNaiss + JourActu"
;;
5 | 7 | 10 | 12)
let "JourReel = 30 - JourNaiss + JourActu"
;;
3)
if [ $(( $AnneeActu % 4 )) -eq 0 ] &&
( [ $(( $AnneeActu % 100 )) -ne 0 ] || [ $(( $AnneeActu % 400 )) -eq 0 ] )
then let " JourReel = 29 - JourNaiss + JourActu"
else let " JourReel = 28 - JourNaiss + JourActu"
fi
;;
esac
fi

echo "Vous avez $AnneeReel ans, $MoisReel mois et $JourReel jours."

Créez des aliases

Afin de faci­li­ter l’usage de certaines commandes, et surtout de pouvoir taper des commandes ayant des para­mètres plus ou moins nombreux, vous pouvez utili­ser des aliases.

Les défi­ni­tions de ces alias sont stockées dans le fichier .bashrc de votre dossier person­nel. Au moins un alias existe déjà, il s’agit de la commande ls qui est en réalité un alias de la commande ls –color=auto. Comme vous l’au­rez sans doute compris, les aliases peuvent deve­nir récur­sifs.

Pour créer un alias, rien de plus simple. Ouvrez votre fichier .bashrc qui se trouve dans votre dossier person­nel (le . indique que c’est un fichier caché, faites un clic droit et sélec­tion­nez “affi­cher les fichiers cachés” pour les voir) et allez au niveau des lignes commençant par “alias”. Là, vous pouvez rajou­ter vos aliases sous la forme :

alias nouvelle_commande='commande_a_renommer'

Voici, par exemple, une partie de mon .bashrc :

alias ls='ls --color=auto'
alias ll='ls -lah'
alias xx='exit'

Enre­gis­trez votre fichier, lancez une nouvelle instance de termi­nal (pour que les modi­fi­ca­tions soient effec­tives) et essayez votre nouvel alias.