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.

Trans­fé­rer des données avec Rsync

Mise en réseau des postes

Il nous faut relier les deux postes infor­ma­tiques. Pour cela, le plus simple à mettre en place est de connec­ter les deux postes au même réseau, WiFi (fonc­tionne de manière accep­table lorsqu’il y a peu de données à trans­fé­rer) ou filaire. Les postes se verront alors affec­ter une adresse IP de manière auto­ma­tique.

Pour un tras­fert plus rapide, il est préfé­rable de passer par un switch. Là, il nous faudra assi­gner une adresse IP à chacun des postes. Connec­tez les PC à l’aide de cables “réseaux” (RJ45) au switch. Assi­gnez à présent une adresse IP, diffé­rente, à chaque poste à l’aide de la commande ifconfig, par exemple :

# ifconfig eth0 192.168.1.25

Prépa­ra­tion au trans­fert

Le trans­fert va s’ef­fec­tuer au travers du proto­cole SSH. Il faut donc qu’une connexion SSH soit possible entre le client et le serveur SSH. Instal­lez à présent la commande rsync qui va nous permettre de réali­ser le trans­fert. Cette instal­la­tion est néces­saire sur le client et le serveur.

# apt-get install rsync

Trans­fert des données

Placez vous sur le poste qui va rece­voir les données et récu­pé­rez son adresse IP.

# ifconfig

Eth0 corres­pond à votre liai­son filaire et Wlan0 à votre liai­son WiFi. L’adresse IP se trouve sur la deuxième ligne, après le inet adr.

Placez vous à présent sur la machine source, celle qui contient les données à envoyer, et tapez la commande suivante (en adap­tant à votre poste, les chemins devant être abso­lus) sur une seule ligne :

$ rsync -avz --progress --stats dossier_source votre_login_sur_le_poste_destinataire@adresse_ip_du_poste_destinataire:dossier_de_destination

Les options utili­sées sont les suivantes :

  • -a –archive (corres­pond au mode archive) ;
  • -v –verbose (active le mode bavard, le programme affi­chera quel fichier il envoie) ;
  • -z –compress (active la compres­sion des données pendant l’en­voie) ;
  • –progress (affiche la progres­sion durant le trans­fert) ;
  • –stats (donne des statis­tiques sur le trans­fert des fichiers).

Vous pouvez égale­ment utili­ser :

  • -c –cheksum (permet de véri­fier la somme MD5 des fichiers) ;
  • -u –update (n’en­voie que les fichiers nouveaux, utile pour la reprise d’un envoi stoppé ou pour faire fréquem­ment une copie sans reco­pier les données déjà à jour) ;
  • –help (affiche l’en­semble des options acti­vables).

Notez qu’il est tout à fait possible d’ef­fec­tuer cette mani­pu­la­tion avec des PC se trou­vant dans des lieux diffé­rents. Il suffit de connaître l’adresse IP publique. Certains sites tels que http://checkip.dyndns.org permettent de connaître sa propre adresse IP publique.

Lire les formats audio et vidéo libres sous GNU/Linux et MS Windows

Qui dit logi­ciel libre, dit formats libres. Vous connais­sez surement le format OpenDo­cu­ment (mais si, les odt, ods, odp, etc. utili­sés entre autres par OpenOf­fice.org et LibreOf­fice) ou encore le PNG et le SVG, ces formats d’images, respec­ti­ve­ment matri­cielles et vecto­rielles. Ce sont tous des formats libres, ouverts et il en existe, bien entendu, égale­ment dans le monde du multi­mé­dia. Les plus courants sont :

  • le OGG, un conte­neur pouvant accueillir, en plus de fichiers de sous-titre, des fichiers :
    • en OGG Vorbis (un algo­rithme de compres­sion audio avec perte),
    • en OGG Theora (un format de compres­sion vidéo),
  • le FLAC, un codec de compres­sion audio sans perte ;
  • le MKV, un conte­neur permet­tant d’ac­cueillir la majo­rité des flux et codecs audio/vidéo exis­tants ainsi que des pistes de sous-titre.

S’ils sont pris en charge (la plupart du temps) nati­ve­ment sous GNU/Linux, ça n’est pas le cas sous MS Windows et Mac OS (X). Cepen­dant, le lecteur VLC Media Player supporte (comme de nombreux autres codecs) les fichiers portant les exten­sions citées plus haut. Si certains s’en satis­fe­ront, au moins pour la vidéo, il faut avouer qu’il n’est pas force­ment très pratique à utili­ser au quoti­dien pour la musique, notam­ment face à des logi­ciels tels que MPD, Rhythm­box, Windows Media Player, ou encore iTunes, qui intègrent une gestion de biblio­thèque assez pratique.

Instal­la­tion

GNU/Linux

La plupart des distri­bu­tions GNU/Linux intègrent nati­ve­ment le support des formats libres. Si ça n’est pas le cas, vous avez toujours la possi­bi­lité de les rajou­ter, ne vous inquié­tez pas.

Pour instal­ler le support du MKV, il vous faut les librai­ries suivantes libebml et libmastroska. Pour le FLAC, il vous faut instal­ler flac. Enfin, pour le OGG, il faut instal­ler libogg et y ajou­ter libvorbis et vorbis-tools (pour la lecture du Vorbis) et libtheora (pour le Theora).

Pour Debian (et déri­vées), pour tout instal­ler d’un coup, entrez la ligne suivante dans un termi­nal :

# apt-get install libebml libmatroska flac libogg libvorbis vorbis-tools libtheora

MS Windows

Pour pouvoir profi­ter de ces fichiers sous MS Windows, il vous suffit de télé­char­ger l’exé­cu­table se trou­vant à cette adresse, de l’exé­cu­ter, et de redé­mar­rer votre machine. Une fois ceci fait, vous serez en mesure de lire ces fichiers direc­te­ment depuis le Windows Media Player.

Instal­ler une impri­mante HP sous GNU/Linux

Instal­la­tion du driver

Allez sur le site http://foo2zjs.rkkda.com/ et télé­char­gez y le fichier foo2zjs.tar.gz ou lancez la commande suivante (atten­tion, le paquet sera télé­chargé à l’en­droit où vous vous trou­vez) :

$ wget -O foo2zjs.tar.gz http://foo2zjs.rkkda.com/foo2zjs.tar.gz

Désar­chi­vez le paquet et dépla­cez vous dans le dossier créé :

$ tar zxf foo2zjs.tar.gz
$ cd foo2zjs<code>

Compilez à présent le driver...
<code>$ make

et instal­lez le :

$ su
# make install

Instal­la­tion de l’im­pri­mante

Pour procé­der à l’ins­tal­la­tion de l’im­pri­mante, nous allons passer par la page admin de CUPS. Dans votre navi­ga­teur Web, ouvrez la page http://local­host:631. Dans l’on­glet Admi­nis­tra­tion, cliquez sur Add Prin­ter. Le nom d’uti­li­sa­teur est root et le mot de passe corres­pond à votre mot de passe root sous Debian et votre login utili­sa­teur et mot de passe clas­sique sous Ubuntu.

Cliquez sur Add prin­ter puis sélec­tion­nez votre modèle d’im­pri­mante, qui doit avoir été reconnu, après la ligne Disco­ve­red Network Prin­ters. (Pour moi, l’im­pri­mante à sélec­tion­ner est HP LaserJet Profes­sio­nal P1102w (Hewlett-Packard HP LaserJet Profes­sio­nal P1102w).) Cliquez ensuite sur “Conti­nue”.

Remplis­sez à présent les diffé­rents champs ; lais­sez Name et Descrip­tion par défaut, indiquez ce que vous voulez après Loca­tion (e.g. bureau, chambre, labo, etc.) ainsi qu’a­près Sharing. Cliquez sur “Conti­nue”.

Indiquez la marque de votre impri­mante après Make (ici HP) et cliquez sur “Conti­nue”.

Enfin, sélec­tion­nez votre modèle d’im­pri­mante (pour moi, c’est “HP LaserJet Pro P1102w Fooma­tic/foo2zjs-z2 (recom­men­ded) (en)”) et termi­nez en cliquant sur “Add Prin­ter

Votre impri­mante devrait être prête à fonc­tion­ner. Vous pouvez vous en assu­rer en lançant l’im­pres­sion d’un docu­ment ou en d’une page de test.

Source

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."

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.

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.