Système d'exploitation
Travaux pratiques
1 Découverte du shell
Le shell (ou interpréteur de commandes) est l'interface (texte) entre l'utilisateur et le système
d'exploitation. Il existe plusieurs shells différents sous Unix (Bourne-shell : sh , C-shell : csh , Korn-
shell : ksh , Bourne Again shell : bash , ...). Le shell a pour rôle de traduire les commandes saisies
par l'utilisateur pour que le système les exécute.
Lorsque vous vous connectez, le fichier /etc/passwd indique à l'ordinateur le shell que vous
utiliserez par défaut (Bash). (ou via l'annuaire LDAP)
L'ordinateur va ensuite consulter plusieurs fichiers de configuration qui dépendent de ce shell. Dans
le cas de Bash, ces fichiers sont (par ordre de consultation) :
.bash_profile (exécuté seulement à la connexion)
.bashrc (exécuté au lancement de chaque shell)
Ces 2 fichiers sont des fichiers situés chez vous, mais ils appellent des fichiers de configuration
standards.
Regarder et expliquez le contenu de ces différents fichiers...
expliquez la commande alias et donnez la commande permettant d'enlevez un alias
profitez-en pour rajouter à l'endroit adéquat les alias que vous désirez utiliser !
Outre la définition d'alias, ces fichiers de configuration définissent aussi des variables qui vous sont
propres. Ce sont les variables d'environnement (Elles sont reconnaissables par leur nom en
majuscule).
La commande set vous permet d'obtenir toutes les variables d'environnement définies
actuellement et leur valeur.
Essayer de reconnaître quelques variables d'environnement
Vous pouvez aussi :
afficher la valeur d'une variable d'environnement précise en tapant :
echo $VARIABLE
modifier certaines variables d'environnement :
VARIABLE=nouv_valeur
Afficher la valeur actuelle de la variable PS1 et utiliser le manuel Unix pour reconnaître les
différentes valeurs. À vous ensuite de les modifier pour obtenir le prompt de votre choix
(commencer par les modifier sur la ligne de commande, puis lorsque vous aurez trouvé le bon,
changez la ligne correspondante dans le bon fichier de configuration.)!
2 Programmation en shell
Le shell n'est pas qu'un simple interpréteur de commande, c'est aussi un langage de programmation.
Il est possible d'écrire une série d'instructions shell dans un fichier (un script) et d'exécuter ce script.
Chaque shell possède sa propre syntaxe en ce qui concerne les affectations, instructions de boucles,
etc…
2.a. Votre premier script écrit en Bash :
#!/bin/bash
# mon premier script
clear
while :
do
echo 'Menu'
echo '[1] Affichage repertoire courant'
echo '[2] Liste des fichiers du repertoire'
echo '[3] Information sur un fichier'
echo '[4] Changement de repertoire'
echo '[5] n premieres lignes d''un fichier'
echo '[0] Fin'
echo 'Choix:'
read ch
case $ch in
0) exit 0
;;
1) pwd
;;
2) ls
;;
3) echo -n 'Nom du fichier:' ; read file ; ls -l $file
;;
4) echo -n 'Nouveau repertoire:' ; read rep ; cd $rep
;;
5) echo -n 'Nom du fichier:'; read file
echo -n 'Nb de lignes a afficher:' ; read n
head -$n $file
;;
*) echo 'choix non propose'
esac
done
À l'aide d'emacs saisir ce programme en le sauvant sous le nom script1.
Pour l'exécuter (en mode "deboguage") tapez : bash -x script1
Profitez-en pour comprendre ce que fait chaque instruction et sa syntaxe (chaque caractère a son
importance).
2.b. Passage de paramètres :
Un script peut accepter des arguments en entrée grâce à des "pseudo" variables $1, $2, …
À quoi correspond $0 ? Citez d'autres pseudo variables du type $X de bash
Écrire un script qui concaténe puis trie deux fichiers f1 et f2 dans un nouveau fichier f3. Les
noms des 3 fichiers sont passés en paramètre du script.
2.c. Test
Il est aussi possible de faire des tests dans un script, pour comparer des variables, ou pour tester
certaines de leurs caractéristiques.
Faire un man test (ou un man bash) pour consulter les différents tests possibles puis écrire
les scripts suivants :
exist : script qui vérifie l'existence dans le répertoire courant du fichier dont le nom est
passé en paramètre
typ : script qui indique si le nom passé en paramètre est un fichier ou un répertoire
3 Changement d'extensions
Quel est le résultat de echo "debut $(ls) fin", expliquez le rôle de $(commande)
Tapez le code suivant :
for fichier in *; do echo $fichier ; done
Écrire un script (renomme) prenant en entrée 2 extensions et qui renomme chaque fichier du
répertoire courant ayant l'extension 1 avec l'extension 2:
renomme doc odt
1 / 3 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !