Vous êtes sur la page 1sur 4

Correction du TP 3

Partie I : Utilisation des commandes avancées et des filtres (grep, cut, sort)

Exercice 1
Tester et expliquer les commandes suivantes :
• ls –l | grep '^……..rw'

affiche les elements du repertoires courants qui sont en lecture et écriture pour les autres
utilisateurs.

• ls –l | grep '^d'
affiche les noms des répertoires contenus dans le répertoire courant.

• grep '^[^rs]*' /etc/passwd


affiche les lignes du fichier /etc/passwd qui ne commencent pas par la lettre ‘r’ ou ‘s’,
autrement dit, les utilisateurs déclarés dans le système dont le login ne commence pas
par ces lettres.

Exercice 2
Donner une commande permettant de calculer le nombre d’apparition du mot «bonjour » dans
un fichier appelé conte.txt.

grep –wc bonjour conte.txt

Exercice 3
Donner une commande permettant d’afficher la nième ligne du fichier (pensez à utiliser la
commande nl en plus de grep).

Exp : nl fichier | grep –w 5 : affiche la 5ème ligne du fichier « fichier »

Exercice 4
Donner une commande qui permet de rechercher tous les mots qui contiennent au moins
trois lettres majuscules successives dans un fichier.

grep [A-Z][A-Z][A-Z] fichier

Exercice 5
Donner une commande permettant de chercher tous les noms des fichiers commencent par un
«a» majuscule ou une minuscule, suivi d'éventuellement quelques lettres ou chiffres, et se
terminent par un chiffre entre 3 et 6 (recherche dans un répertoire de votre choix).

ls | grep ^[aA][a-z0-9]*[3-6]$

Partie II : Programmation Shell

Exercice 1
Ecrire un script Shell qui permet de vérifier si un utilisateur est connecté.

Solution
#!/bin/bash

H. IDOUDI 1
if [ $# -eq 1 ]
then
for i in `users`
do
if [ $i = $1 ]
then
echo "Utilisateur $1 connecté"
exit
fi
done
echo "Utilisateur $1 non connecté"
else
echo "nombre de paramètres incorrect."
fi

Exercice 2
Créer la commande crefic obéissant à la syntaxe suivante :

$crefic nom quantité

Son rôle est de créer un ensemble de fichiers nom1, nom2,…, nomN. La création de
chaque fichier doit être validée est interactif par l’utilisateur.

Solution
#!/bin/bash
if [ $# -eq 2 ] then
x=1
while [ $x -le $2 ]
do
nom="$1$x"
echo "Voulez vous créer le fichier $nom :"
read reponse
echo 'saisir o/n'
read reponse
if [ $reponse = o –o $reponse = O ]
then
touch $nom
fi
x=`expr $x + 1`
done
else echo "nombre de paramètres incorrect."
fi

Exercice 3
Ecrire un script Shell qui affiche le nombre d’utilisateurs connectés au système ainsi que
leurs identités.

Solution
#!/bin/bash
if [ $# -gt 0 ]
then
echo "Trop de parametres."
else
echo "Le nombre d'utilisateurs connectés est : "

H. IDOUDI 2
users | sort -u | wc -l
echo "Les utilisateurs connectés sont : "
users | sort -u
fi

Exercice 4
Ecrire un script Shell qui affiche la liste des sous répertoires d’un répertoire passé en
argument et indique une erreur si l’argument n’est pas un répertoire.

Solution
#!/bin/bash
if [ $# -eq 1 ]
then
if test -d $1
then
echo " La liste des sous-répertoires du répertoire $1 est :"
for i in `ls $1`
do
if test -d $i then
echo "- $i \n"
fi
done
else
echo "$1 n'est pas un répertoire."
fi
else
echo "nombre d'arguments > 1"
fi

Exercice 5
Ecrire un script Shell qui affiche le nombre d’éléments de chaque répertoire passé en
argument.

Solution
#!/bin/bash
if [ $# -lt 1 ]
then
x=`ls | wc –l`
echo "Le nombre d'éléments du répertoire courant est : $x"
else

for i in $@
do
if test -d $i
then
x=`ls $i | wc –l`
echo "Le nombre d'éléments de $i est : $x"
else
echo "$i n'est pas un répertoire"
fi
done
fi

Exercice 6

H. IDOUDI 3
Ecrire un script Shell qui permet de déterminer le plus long mot d’un fichier donné en
argument.

Solution
#!/bin/bash
L=0
mot=””
if [ $# -eq 1 ]
then
for i in `cat $1`
do
lg=`echo $i | wc –c`
if [ $lg -gt $L ] then
L=$lg
mot=$i
fi
done
echo "Le mot le plus long est : $mot de longueur $L"
else
echo " nombre de paramètres incorrect."
fi

H. IDOUDI 4

Vous aimerez peut-être aussi