Exercice 1 :
Quelles commandes Linux devez-vous exécuter pour obtenir à l’écran :
Il y a xxx utilisateurs de ce systeme dont le login shell est bash
Correction exercice 1 :
# Notez bien le "\" à la fin de certaines lignes
# Ce caractère indique que la ligne de commandes
# continue sur la ligne suivante.
kyle> echo Il y a $(grep bash /etc/passwd | wc –l) \
utilisateurs de ce systeme dont le login shell est bash
Exercice 2 :
En utilisant la commande find, trouvez et listez les noms de :
1) tous les fichiers sous le répertoire /etc dont les noms commencent par rc,
2) tous les fichiers réguliers vous appartenant ; mettez le résultat dans le fichier
/tmp/findmoi et les erreurs dans /dev/null,
3) tous les sous–répertoires de /etc,
4) tous les fichiers réguliers se trouvant sous votre répertoire d’accueil et qui n’ont
pas été modifiés dans les 10 derniers jours
Correction exercice 2 :
§ lister les fichiers sous le répertoire /etc
§ dont les noms commencent par rc
§ Ici, il y a un piège : il est certain qu'un
§ utilisateur n'ayant pas les privilèges de root ne peut
§ pas connaître la vraie réponse : des sous répertoires de
§ /etc sont rwx r x et l'utilisateur courant ne peut
§ pas y pénétrer.
§ ATTENTION : ligne suivante, remarquez bien : 'rc*'
kyle> find /etc –type f –name 'rc*' –print
/etc/rc
/etc/rc.net § Rien ne permet de savoir si cette
/etc/rc.powerfail § liste est exhaustive : des fichiers
/etc/rc.nfs § dont les noms commencent par rc
/etc/rc.tcpip § peuvent exister dans des répertoires
/etc/rc.local § auxquels je n'ai pas accès. Les
... § messages d’erreur permettront de
... § s’en convaincre.
kyle>
§ lister les fichiers réguliers qui m'appartiennent.
§ Ici, attention : des fichiers peuvent m'appartenir
§ sans se trouver dans mon arborescence personnelle.
§ Pour autant, il ne peut pas y en avoir partout !
§ Chercher à partir de / est inutile.
kyle> RACINE="$HOME /tmp /var/spool"
kyle> find $RACINE –type f –user kyle –print \
>/tmp/findmoi 2>/dev/null
... § > redirige le résultat vers /tmp/findmoi
§ 2> redirige les erreurs vers le fichier /dev/null
§ où les données vont disparaître.
kyle>
§ lister tous les sous répertoires de /etc
kyle> find /etc –type d –print
§ donnera un résultat incomplet. Les messages d'erreur
§ permettront de s'en convaincre.
§ lister tous les fichiers réguliers se trouvant sous
§ mon répertoire d'accueil et qui n'ont pas été modifiés
§ dans les 10 derniers jours.
kyle> cd
kyle> find . –type f –mtime +9 print
Exercice 3 :
Trouvez à partir de votre répertoire d’accueil, le nombre de fichiers ayant une taille
supérieure à 1 Mega-octets et stockez leurs noms dans un fichier (utilisez la
commande tee).
Correction exercice 3 :
§ Il suffit de rediriger le résultat de la commande find
§ dans le filtre tee pour stockage sur le disque puis
§ le filtre wc l pour compter
§ le nombre de lignes trouvées par find.
kyle> find $HOME –size 1000000c –print | tee \
/tmp/findres | wc l
10
kyle>
Exercice 4 :
Créez dans le répertoire rep1 le fichiers suivants : fich1, fich2, fich11,
fich12, fich1a, ficha1, fich33, .fich1, .fich2, toto, afich.
Listez les fichiers :
1) dont les noms commencent par fich,
2) dont les noms commencent par fich suivi d’un seul caractère,
3) dont les noms commencent par fich suivi d’un chiffre,
4) dont les noms commencent par .,
5) dont les noms ne commencent pas par f,
6) dont les noms contiennent fich.
Correction exercice 4 :
kyle> mkdir rep1 ; cd rep1
kyle> touch fich1 fich2 fich11 fich12 ficha ficha1 \
fich33 .fich1 .fich2 toto afich
kyle> ls fich*
fich1 fich11 fich12 fich2 fich33 ficha ficha1
kyle> ls fich?
fich1 fich2 ficha
kyle> ls fich[0 9]
fich1 fich2
kyle> ls .??* § Ne pas prendre . et ..
.fich1 .fich2 § comparer à ls .*
kyle> ls [!f]*
afich toto
kyle> ls *fich*
afich fich1 fich11 fich12 fich2 fich33 ficha ficha1
kyle>
Exercice 5 :
Écrivez un alias en Bash permettant de lister page par page et dans l’ordre alphabétique
l’ensemble des variables d’environnement.
Correction exercice 5:
kyle> alias en="env|sort|less"
kyle>
Exercice 6 :
Créez un fichier de nom -i, puis supprimez-le.
Correction exercice 6 :
kyle> cat > i
Salut
<ctrl d>
kyle> rm i § Essayez rm i
Usage: rm [ Rfir] file
kyle> § Le fichier i est considéré par la commande rm
§ comme étant l’option i.
kyle> rm \ i § L’utilisation des caractères de
Usage: rm [ Rfir] file § neutralisation (voir paragraphe
§ 7.8) ne permet pas non plus
§ la suppression du fichier i.
kyle> rm ./ i § La solution consiste à définir le
§ fichier à supprimer en chemin relatif
§ ou absolu, ce qui évite de commencer
§ par le signe .
kyle>
Quelles commandes Linux devez-vous exécuter pour obtenir à l’écran :
Il y a xxx utilisateurs de ce systeme dont le login shell est bash
Correction exercice 1 :
# Notez bien le "\" à la fin de certaines lignes
# Ce caractère indique que la ligne de commandes
# continue sur la ligne suivante.
kyle> echo Il y a $(grep bash /etc/passwd | wc –l) \
utilisateurs de ce systeme dont le login shell est bash
Exercice 2 :
En utilisant la commande find, trouvez et listez les noms de :
1) tous les fichiers sous le répertoire /etc dont les noms commencent par rc,
2) tous les fichiers réguliers vous appartenant ; mettez le résultat dans le fichier
/tmp/findmoi et les erreurs dans /dev/null,
3) tous les sous–répertoires de /etc,
4) tous les fichiers réguliers se trouvant sous votre répertoire d’accueil et qui n’ont
pas été modifiés dans les 10 derniers jours
Correction exercice 2 :
§ lister les fichiers sous le répertoire /etc
§ dont les noms commencent par rc
§ Ici, il y a un piège : il est certain qu'un
§ utilisateur n'ayant pas les privilèges de root ne peut
§ pas connaître la vraie réponse : des sous répertoires de
§ /etc sont rwx r x et l'utilisateur courant ne peut
§ pas y pénétrer.
§ ATTENTION : ligne suivante, remarquez bien : 'rc*'
kyle> find /etc –type f –name 'rc*' –print
/etc/rc
/etc/rc.net § Rien ne permet de savoir si cette
/etc/rc.powerfail § liste est exhaustive : des fichiers
/etc/rc.nfs § dont les noms commencent par rc
/etc/rc.tcpip § peuvent exister dans des répertoires
/etc/rc.local § auxquels je n'ai pas accès. Les
... § messages d’erreur permettront de
... § s’en convaincre.
kyle>
§ lister les fichiers réguliers qui m'appartiennent.
§ Ici, attention : des fichiers peuvent m'appartenir
§ sans se trouver dans mon arborescence personnelle.
§ Pour autant, il ne peut pas y en avoir partout !
§ Chercher à partir de / est inutile.
kyle> RACINE="$HOME /tmp /var/spool"
kyle> find $RACINE –type f –user kyle –print \
>/tmp/findmoi 2>/dev/null
... § > redirige le résultat vers /tmp/findmoi
§ 2> redirige les erreurs vers le fichier /dev/null
§ où les données vont disparaître.
kyle>
§ lister tous les sous répertoires de /etc
kyle> find /etc –type d –print
§ donnera un résultat incomplet. Les messages d'erreur
§ permettront de s'en convaincre.
§ lister tous les fichiers réguliers se trouvant sous
§ mon répertoire d'accueil et qui n'ont pas été modifiés
§ dans les 10 derniers jours.
kyle> cd
kyle> find . –type f –mtime +9 print
Exercice 3 :
Trouvez à partir de votre répertoire d’accueil, le nombre de fichiers ayant une taille
supérieure à 1 Mega-octets et stockez leurs noms dans un fichier (utilisez la
commande tee).
Correction exercice 3 :
§ Il suffit de rediriger le résultat de la commande find
§ dans le filtre tee pour stockage sur le disque puis
§ le filtre wc l pour compter
§ le nombre de lignes trouvées par find.
kyle> find $HOME –size 1000000c –print | tee \
/tmp/findres | wc l
10
kyle>
Exercice 4 :
Créez dans le répertoire rep1 le fichiers suivants : fich1, fich2, fich11,
fich12, fich1a, ficha1, fich33, .fich1, .fich2, toto, afich.
Listez les fichiers :
1) dont les noms commencent par fich,
2) dont les noms commencent par fich suivi d’un seul caractère,
3) dont les noms commencent par fich suivi d’un chiffre,
4) dont les noms commencent par .,
5) dont les noms ne commencent pas par f,
6) dont les noms contiennent fich.
Correction exercice 4 :
kyle> mkdir rep1 ; cd rep1
kyle> touch fich1 fich2 fich11 fich12 ficha ficha1 \
fich33 .fich1 .fich2 toto afich
kyle> ls fich*
fich1 fich11 fich12 fich2 fich33 ficha ficha1
kyle> ls fich?
fich1 fich2 ficha
kyle> ls fich[0 9]
fich1 fich2
kyle> ls .??* § Ne pas prendre . et ..
.fich1 .fich2 § comparer à ls .*
kyle> ls [!f]*
afich toto
kyle> ls *fich*
afich fich1 fich11 fich12 fich2 fich33 ficha ficha1
kyle>
Exercice 5 :
Écrivez un alias en Bash permettant de lister page par page et dans l’ordre alphabétique
l’ensemble des variables d’environnement.
Correction exercice 5:
kyle> alias en="env|sort|less"
kyle>
Exercice 6 :
Créez un fichier de nom -i, puis supprimez-le.
Correction exercice 6 :
kyle> cat > i
Salut
<ctrl d>
kyle> rm i § Essayez rm i
Usage: rm [ Rfir] file
kyle> § Le fichier i est considéré par la commande rm
§ comme étant l’option i.
kyle> rm \ i § L’utilisation des caractères de
Usage: rm [ Rfir] file § neutralisation (voir paragraphe
§ 7.8) ne permet pas non plus
§ la suppression du fichier i.
kyle> rm ./ i § La solution consiste à définir le
§ fichier à supprimer en chemin relatif
§ ou absolu, ce qui évite de commencer
§ par le signe .
kyle>