Académique Documents
Professionnel Documents
Culture Documents
Linux
Linux
Linux
Solution:
ls *5
ls annee4*
ls annee4?
ls annee[!0-9]*
ls *ana*
ls [aA]*
Exercice 4:
se terminant par 5
commenant par annee4
commenant par annee4 et de 7 lettres maximum
commenant par annee avec aucun chiffre numrique
contenant la chane ana
commenant par a ou A
oui
oui
oui
oui
non
oui
non
non
oui
oui
non
oui
non
oui
non
non
non
oui
non
oui
non
non
non
oui
oui
non
non
non
non
oui
oui
non
oui
non
non
non
Solution:
commande 1
commande 2
commande 3
commande 4
Exercice 2:
Crez un fichier droit dans le rpertoire essai_droit, par dfaut ce fichier est 644
(rw-r--r--).En partant du rpertoire courant, pour chaque commande de l'exercice
prcdent, essayez d'accder au rpertoireessai_droit (commande cd), de faire un ls
Exercice 3:
Tapez la commande umask, de manire ce que les fichiers lors de leur cration
aient par dfaut les droits 640 (rw-r-----), et les rpertoires 750 (rwxr-x---).
Solution:
Pour un fichier
masque maximum pour un fichier
retirer
droit par dfaut
666
026
640
rw-rw-rw----w-rwrw-r-----
777
027
640
rwxrwxrwx
----w-rwx
rwxr-x---
Pour un rpertoire
masque maximum pour un rpertoire
retirer
droit par dfaut
Soit la commande:
umask 027
(Pour un fichier retirer 026 ou 027 est quivalent)
[Retour haut de la page]
Grep
Exercice 1
Crer un rpertoire essai-grep dans votre home directory. Dans ce rpertoire crer
les fichiers suivants:
tomate poire pomme cerise Fraise fraise courgette POMME3 afraise
Editez les fichiers (sortie de la commande ls redirige vers grep) avec les critres
sur leur nom suivant:
Critre 1
Critre 2
Critre 3
Critre 4
Critre 5
Solution:
mkdir ~/essai-grep
cd ~/essai-grep
touch tomate poire pomme cerise Fraise fraise courgette POMME3 afraise
Critre 1
Critre 2
Critre 3
Critre 4
Critre 5
ls | grep "^[fF]raise$"
ls | grep "se$"
ls | grep "ai"
ls | grep "[0-9]"
ls | grep "[mM]\{2\}"
Nota:
Pour rediriger le rsultat vers un fichier, vous pouvez faire, par exemple pour le
critre 1:
grep "^[fF]raise$" mon-fichier
Exercice 2
Copiez le fichier /etc/passwd dans votre home directory. Editez la ligne
commenant par votre nom de login.
Solution:
cd
cp /etc/passwd ~
cat passwd | grep "^monnom"
Exercice 3
Dans le fichier passwd qui est dans votre home directory, ditez les lignes
commenant par des noms de login ne contenant pas de chiffre.
Soluce:
cat passwd | grep "^[^0-9][^0-9]*:"
ou
cat passwd | grep "^[a-z][a-z]*:"
Exercice 4
Editez les lignes du fichier passwd commenant par des noms de login de 3 ou 4
caractres.
Solution:
cat passwd | grep "^.\{3,4\}:"
[Retour haut de la page]
Les filtres
Exercice 1
Copiez le fichier /etc/passwd dans votre home directory. Editez uniquement les
champs contenant le login et la home directory.
Solution:
cd
cp /etc/passwd ~
cut -d: -f1,6 passwd
Exercice 2
Triez passwd sur le nom
Solution:
sort -t: +0 -1 passwd
Exercice 3
Extraire les nom de login et UID puis triez suivant les UID, le tout en une seule
commande, vous redirigerez le tout vers un fichier
Solution:
cut -d: -f1,3 passwd | sort -t: -n +1 -2 > lefichier
Exercice 4
Dans le fichier de rsultat prcdent remplacer les ":" par des " " (espace).
Solution:
cat lefichier | tr ":" " " > lefichier
Nota:
On aurait pu avoir le mme rsultat en une seule commande:
cut -d: -f1,3 | sort -t: -n +1 -2 | tr ":" " " > lefichier
Exercice 5
Editez les cinq dernires lignes du fichier.
Solution:
tail -5 lefichier
Exercice 6
Editez les cinq premiers caractres du fichier.
Solution:
head -5c lefichier
[Retour haut de la page]
find
Exercice 1
Cherchez dans toute l'arborescence les fichiers dont le nom se termine par .c,
redirigez les erreurs vers le fichier poubelle /dev/null
Commenant par X ou x.
Dont les noms ne contiennent pas de chiffre.
Solution:
find / -name "*.c" -print 2>/dev/null
find / -name "[Xx]*" -print 2>/dev/null
find / -name "[!0-9]" -print 2>/dev/null
Exercice 2
Chercher dans /usr les fichiers dont la taille dpasse 1Mo (2000 blocs de 500Ko) et
dont les droits sont fixs 755 (-rwxr-xr-x).
Solution:
find /usr (-size +2000 -a -perm 755) -print 2>/dev/null
Exercice 3
Combien il y a de fichiers dans toute l'arborescence vous appartenant et ayant les
droits fixs 666 (-rw-rw-rw-).
Solution:
find / (-user olivier -a -perm 666 -print) | wc -l
Exercice 4
Trouver tous les fichiers core dans l'arborescence et supprimez les aprs
confirmation.
Solution:
find / -name "core" -print -ok rm {}\;
[Retour haut de la page]
awk
Les exercices portent sur le fichier mesure suivant:
nom de la lieu de la
|
mesure
mesure
marcel | brest
polo
| loctudy
date de la
valeur correction
|
|
mesure
brute
1
| 18/12/1998 | 12.5 | 1.34
| 21/05/1997 | 11.5
| 1.24
|
correction
2
| 1.23
| 1.12
|
correction
3
| -1.5
| -1.2
|
valeur
|
corrige
| 13.47
|
| 12.66
|
|
otto
| camaret
| 04/09/1995 | 9.3
| 0.98
| 1.17
| -1.12
| 10.33
Appelez votre script exo1.awk, donnez lui les droits 755, et appelez le ainsi:
exo1.awk mesure > mesure.corrigee
Aprs excution, vrifiez l'existence et le contenu du fichier resultat.
Exercice 2
Afficher les mesures ayant une anne paire. Redirigez le rsultat de la recherche
vers un fichier paire.
Solution:
#!/bin/bash
awk ' BEGIN { printf("Mesures ayant une anne paire \n") > "paire";FS="|"}
NR>1 { annee=substr($3,7,4)
if (annee%2= =0)
Appelez votre script exo2.awk, donnez lui les droits 755, et appelez le ainsi:
exo2.awk mesure
Aprs excution, vrifiez l'existence et le contenu du fichier paire.
Exercice 3
Vrifiez que le format de la date jj/mm/aaaa est correcte ainsi que le format du lieu
(form que de lettres de l'alphabet en minuscules ou majuscules).
Solution:
#!/bin/bash
awk ' BEGIN { printf("Vrification du format \n";FS="|" }
NR>1 && $2 !~ /^[0-3][0-9]\/[01][0-9]/\[0-9][0-9][0-9][0-9]$/
{ printf(" Mauvais format de date pour mesure %s \n", $1 }
NR>1 && $2 !~ /^[a-zA-Z][a-zA-Z]*$/
{ printf(" Mauvais format du lieu pour mesure %s \n",$1 }
' $1
Appelez votre script exo3.awk, donnez lui les droits 755, et appelez le ainsi:
exo3.awk mesure
Le fonctionnement du script sous LINUX est un peu foireux, a marche bien par
contre sur d'autres environnements (HP-UX ou Solaris), va savoir pour quoi...
On pourrait amliorer encore plus la vrification en vrifiant bien que la date va de
1 31 et le mois de 1 12, avec un script du style:
#!/bin/csh
awk ' BEGIN { printf("Vrification du mois et du jour\n");FS="|")
NR>1 && $3 !~ /^[0-3][0-9]\/[01][0-9]/\[0-9][0-9][0-9][0-9]$/
{ jour=substr($3,1,2)
mois=substr($3,3,2)
if (jour > 31 || mois >12) { printf("mauvais format pour mesure %s\n",$1)}
}
' $1
C'est un peu lourd comme script, vous de trouver plus simple. Toujours un
fonctionnement capricieux sous LINUX.
Exercice 4
Afficher les noms de mesure et leur valeur corrige associe en vous servant d'un
tableau associatif.
Solution:
#!/bin/bash
awk ' BEGIN { printf("Affichage des mesures et de leur valeur corrige \n");FS="|"}
NR>1 { mesure-corrigee[$1]=$8
END
{ for (mesure in mesure-corrigee)
{printf("mesure %s ",mesure); printf(" gale %s \n",mesurecorrigee[mesure]) }}
' $1
Appelez votre script exo4.awk, donnez lui les droits 755, et appelez le ainsi:
exo4.awk mesure