TP de Linux
TP de Linux
TP de Linux
1. Écrivez un script qui convertit en minutes et secondes un temps exprimé en secondes (le
temps est passé en paramètre).
2. Écrivez un script qui enregistre dans un fichier les lignes saisies au clavier, et qui affiche le
nombre de lignes qui ont été enregistrées.
3. Créez la commande copier. La commande reçoit en argument deux noms de fichiers, la
source et la destination. Le script se termine et affiche un message d’erreur si l’une des
conditions suivantes est réalisée :
Le nombre d’arguments est incorrect.
Le fichier source n’existe pas ou il n’est pas copiable (pas d’accès en lecture). - Le fichier
source n’est pas un fichier ordinaire.
Le fichier destination existe.
Le répertoire de destination, que l’on peut connaître avec la commande dirname, n’est
pas accessible en écriture.
La copie a échoué.
4. Donner un script qui concatène tous les fichiers du type fichier1.txt, fichier2.txt, … dans un
fichier dont le nom est donné en paramètre.
5. Écrivez un script qui prend en argument un nom de fichier. Le fichier en question contient un
nombre entier par ligne. Votre script contiendra :
1) Un test permettant de vérifier que le fichier existe bien, sinon afficher un message
d'erreur et faire un retour erreur.
2) Une fonction addition qui calcule et affiche la somme des lignes du fichier
3) Une fonction nlignes nombre lignes qui compte et affiche le nombre de lignes dans le
fichier
4) Une fonction minmax qui calcule et affiche le minimum et le maximum des valeurs du
fichier
6. Écrire un script qui prend un répertoire en argument et liste son contenu en indiquant le
type pour chaque élément. Étendre le script précédent à un nombre quelconque
d’arguments, chacun devant être listé. On pourra utiliser la variable $* qui renvoie une liste
formée de tous les arguments.
7. Cíécí "⭲ scíipt skcll q"i íéalisc lcs opéíatio⭲s s"i:a⭲tcs:
11. Écrire un script bash listedir.sh permettant d’afficher le contenu d’un répertoire en séparant
les fichiers et les (sous) répertoires. Exemple d’utilisation :
$ ./listdir.sh /boot affichera :
####### fichier dans /boot/
/boot/config-3.16.0-4-amd64
/boot/initrd.img-3.16.0-4-amd64
/boot/System.map-3.16.0-4-amd64
/boot/vmlinuz-3.16.0-4-amd64
####### repertoires dans /boot/
/boot/grub
12. Créer un script qui demande à l’utilisateur de saisir une note et qui affiche un message en
fonction de cette note :
“très bien” si la note est entre 16 et 20 ;
“bien” lorsqu’elle est entre 14 et 16 ;
“assez bien” si la note est entre 12 et 14 ;
“moyen” si la note est entre 10 et 12 ;
“insuffisant” si la note est inférieure à 10.
Pour quitter le programme l’utilisateur devra appuyer sur q.
13. Écrire un script affichant les nombres de 1 à jusqu’à la valeur passée en paramètre du script à l’aide
d’une boucle while do done puis calcule la moyenne de ces nombres.
14. Créer une commande qui, lorsqu’elle est appelée, affiche le nombre d’arguments qui lui sont
fournis, ainsi que le premier de ces arguments, s’il y en a au moins un
15. Écrire un script qui prend un nombre entier en paramètre et si ce nombre est premier ou non
16. Écrire un script qui prend deux nombres entiers en paramètre et donne le pgcd de les deux
nombres
17. Écrire un script qui prend deux nombres entiers en paramètre et donne le ppcm de les deux
nombres
18.
Pour arrêter un script qui ne se termine jamais comme celui que vous mettez en œuvre à cette
question, il sut de saisir la
combinaison de touches control+c
.
18. Découper des lignes
Le but de cet exercice est d'écrire un petit programme capable de découper des lignes, c'est-à-dire
d'extraire certains mots
séparés par des blancs.
Question 18.a. Pour commencer, nous allons vérifier que les arguments du script ne sont pas invalides.
Les arguments sont
invalides si :
• le nombre d'arguments n'est pas égal à 2,
• ou si le premier argument ne correspond pas à un chier existant (test [ ! -e fic ]),
• ou si le premier argument correspond à un répertoire (test [ -d fic ]).
En cas d'erreur, le script doit quitter en affichant un message adéquat et en renvoyant faux (valeur 1),
sinon, il doit quitter en renvoyant vrai (valeur 0).
Question 18.b. Complétez votre script pour qu'il lise, ligne à ligne, le chier passé en argument (premier
argument) et écrive ces lignes sur la sortie standard. On vous rappelle que pour lire un chier ligne à
ligne à partir du chier fichier, il faut utiliser la construction while read line; do ... done <fichier
19. Donner un script qui concatène tous les fichiers du type fichier1.txt, fichier2.txt, … dans un
fichier dont le nom est donné en paramètre.
20. Sauvegarde automatique de fichiers
• Le but de cet exercice consiste à définir un script permettant de sauvegarder tous les fichiers du
répertoire courant dans un autre répertoire avec, en plus, une indication du jour où la
sauvegarde est effectuée.
• Écrire un script bash copiant tous les fichiers du répertoire courant dans le sous-répertoire OLD
en ajoutant au nom des fichiers la date du jour au format “#année-mois-jour”. Il faudra, au
préalable, s'assurer de l'existence du répertoire OLD et le créer s'il n'existe pas. On vérifiera
alors dans ce cas que la création du répertoire s'est bien passée.
• Par exemple, si le répertoire courant comporte un fichier fich et que le shell est lancé
aujourd'hui, ce programme devra recopier le fichier fich vers le fichier OLD/fich#2009-04-01
21. Ecrire un script bash qui effectue les tests suivants sur un fichier passé en paramètre :
• vérification de l'existence du fichier,
• affichage du type du fichier (répertoire ou fichier ordinaire),
• dans le cas d'un fichier ordinaire :
◦ vérification que le fichier est non vide,
◦ affichage des droits d'accès (lecture, écriture et exécution).
22. un script simple
• Créez un script bonjour.sh qui, lorsqu’il est lancé, affiche le texte « Bonjour tout le monde ! ».
• Ajoutez un commentaire indiquant l’auteur (vous !) et la date de création du script. Vous
pouvez garder cette habitude pour tous les scripts que vous créez ou modifiez.
• La commande whoami permet de connaître le nom de connexion de l’utilisateur qui la lance.
Modifiez votre script pour qu’il affiche « Bonjour dugenou42 » si votre nom de connexion est
dugenou42.
• La commande date permet d’afficher la date et l’heure actuelles. Modifiez votre script pour
qu’il demande à l’utilisateur Souhaitez-vous afficher la date (o/n) ? puis affiche la date si la
réponse est o.
23. Écrire un script lsD.sh qui va lister uniquement les dossiers contenus dans un dossier passé en
paramètre du script
24. Écrire le script shell qui prend un entier en paramètre et calcule le factoriel de celui-ci.
25. Écrire un script shell qui prend la taille d’un tableau d’entiers en paramètre puis entre les valeurs de
ce tableau et par la suite donne le maximum et le minimum du tableau.