1. Variables d’environnement
La variable PATH contient les chemins dans lesquels le shell cherche
les programmes à lancer.
- Afficher le contenu de cette variable via la commande
echo $PATH. - Modifier cette variable pour y ajouter le chemin de Desktop :
PATH=$PATH:~/Bureau. Exécuterwhich firefoxpour voir le chemin complet du navigateur. - Afficher le contenu de PATH dans le terminal courant, dans un terminal fils, dans un terminal disjoint.
- Utiliser la commande
export PATHet afficher le contenu de PATH dans le terminal courant, dans un terminal fils, dans un terminal disjoint. - La variable
HOMEcontient le chemin de votre dossier personnel. La variablePWDcontient le chemin courant. HOST contient le nom de l’ordinateur courant. RANDOM contient un nombre aléatoire (change à chaque appel). Toutes ces variables se comportent comme PATH : si elles sont exportées, elles se transmettent aux processus fils ; le contenu de la variable est obtenu en le précédant d’un$.
Le fichier .bashrc est lu à chaque démarrage du shell. Si on veut que
des réglages se conservent au prochain démarrage, on peut ajouter ces
réglages dans ce fichier. Si on y met des commandes, elles seront elles
aussi exécutées au démarrage du shell. Par exemple, ajoutons fortune
dans le .bashrc. Au prochain lancement de bash, nous serons accueillis
par un proverbe.
Il est également possible d’ajouter des raccourcis de commande. Par
exemple pour que cd.. fasse l’effet de cd .., on peut ajouter
alias cd..="cd ..". On peut aussi ajouter alias ll="ls -ail".
2. Scripts
À l’aide de tubes et redirections, nous pouvons faire des commandes
complexes. Si celles-ci sont amenées à être réutilisées, on peut les
transformer en scripts qui pourront être réutilisés. Pour celà, on écrit
la commande en question dans un fichier dont la première ligne sera
#!/bin/sh. On octroie les droits d’exécution sur ce fichier et on
l’appelle par la commande ./fichier.
Recopiez les lignes suivantes dans un fichier psit.sh
#!/bin/sh ps aux | cut -d ' ' -f 1 | sort | uniqExécutez ce script avec
./psit.sh.Écrivez un script comptant les membres de chaque groupe d’utilisateurs (en utilisant la sortie de
ypcat passwd).Le symbole
$1représente le premier argument du script. Testez le script suivant avec et sans argument :#!/bin/sh ps aux | grep $1 | tr -s ' ' | cut -d ' ' -f 2Nous aimerions maintenant envoyer un signal (avec
kill) aux processus repérés par le script précédent. Pour celà, nous allons utiliser la commandekillsur le résultat de cette commande. Il faut entourer cette commande d’accents graves.Modifiez le script précédent comme suit
#!/bin/sh kill `ps aux | grep $1 | tr -s ' ' | cut -d ' ' -f 2`Que fait-il ?
Recopiez le script suivant dans un fichier test_fonts.sh :
#!/bin/sh mkdir -p ./Pictures cd ./Pictures for i in /usr/share/fonts/type1/*/*.pfb; do name=`echo $i | sed 's:.*\/::'` convert -size 200x50 gradient:none-firebrick \ -fill white -font $i \ -draw 'text 2,30 "Portez ce whisky au vieux juge."' \ "${name}.png"; done ls *.pngLe
forpermet d’appliquer un traîtement à un ensemble d’éléments (ici des fichiers qui correspondent au motif/usr/share/fonts/type1/*/*.pfbc’est-à-dire des polices de caractères).sedest un filtre permettant de remplacer du texte.convertpermet de manipuler des images en ligne de commande.Lancez ce script. Que produit-il ?
Écrivez un script qui à l’aide de la commande
converttransforme toutes les images png en jpg, affiche la taille des deux versions puis supprime l’image png. Pourquoi la commandeconvert *.png *.jpgne fonctionne-t-elle pas ?Prenons un script au hasard sur internet. Que fait-il ? Il peut être remplacé par une simple ligne de commande, laquelle ?