Beruflich Dokumente
Kultur Dokumente
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
Solution:
ls *5
ls annee4*
ls annee4?
ls annee[!0-9]*
ls *ana*
ls [aA]*
Exercice 4:
Copier les fichiers dont l'avant dernier caractre est un 4 ou 1 dans le rpertoire /tmp en une
seule commande.
Solution:
cp *[41]? /tmp
groupe
les autres
oui
oui
oui
non
oui
non
non
oui
commande
oui
2
non
oui
non
oui
non
non
non
oui
commande
non
3
oui
non
non
non
oui
oui
non
non
commande
non
4
non
oui
oui
non
oui
non
non
non
Solution:
chmod 751 essai_droit
chmod o-rw essai_droit
chmod 521 essai_droit
commande 2
chmod u-w,g-rx,g+w,o-r essai_droit
chmod 214 essai_droit
commande 3
chmod u-rx,g-r,o-x essai_droit
chmod 150 essai_droit
commande 4
chmod u-rw,o-rx essai_droit
commande 1
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 rpertoire essai_droit (commande cd), de faire un ls dans essai_droit et de
modifier le fichier avec un diteur quelconque (vi par exemple).
Solution:
commande
1
commande
2
on peut accder au rpertoire (droit d'accs x) on peut faire ls (droit en lecture sur
le rpertoire r), et modifier le fichier (droit en criture sur le rpertoire w et le
fichier w)
on peut accder au rpertoire (droit d'accs x), on peut faire ls (droit en lecture
sur le rpertoire r), et modifier le fichier (le droit en criture sur le rpertoire n'est
pas pris en compte ds lors que vous avez le droit en criture sur le fichier)
commande
3
commande
4
on peut accder au rpertoire (droit d'accs x), on ne peut pas faire ls (pas de
droit de lecture), on peut diter et modifier le fichier (droit en criture sur le
rpertoire et sur le fichier).
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 666 rw-rw-rw retirer
026 ----w-rwdroit par dfaut
640 rw-r----Pour un rpertoire
masque maximum pour un rpertoire 777 rwxrwxrwx
retirer
027 ----w-rwx
droit par dfaut
640 rwxr-x--Soit la commande:
umask 027
(Pour un fichier retirer 026 ou 027 est quivalent)
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" avec login le nom de votre login ( 8 lettres)
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
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:
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 {}\;
awk
Les exercices portent sur le fichier mesure suivant:
nom de la lieu de la date de la
valeur correction correction correction valeur
|
|
|
|
|
|
|
mesure
mesure
mesure
brute
1
2
3
corrige
marcel | brest
| 18/12/1998 | 12.5
| 1.34
| 1.23
| -1.5
| 13.47
polo
| loctudy | 21/05/1997 | 11.5
| 1.24
| 1.12
| -1.2
| 12.66
otto
| camaret | 04/09/1995 | 9.3
| 0.98
| 1.17
| -1.12
| 10.33
Le champ valeur corrige est la somme algbrique de la valeur brute et des 3 corrections.
|
|
|
|
Exercice 1
Vous vous tes bourrs sur le signe de la correction 1, de mme dans la correction 2, vous
avez dcouvert que vous avez commis une petite erreur et qu'il fallait lui ajouter 0.1. Modifier
le fichier en prenant en compte ces corrections, faites en sorte que la valeur corrige soit
modifie en consquence.
Dans le mme exercice vous afficherez la somme totale des valeurs corriges et la valeur
corrige moyenne. Ces valeurs doivent tre sauvegardes dans un fichier rsultat.
Solution:
#!/bin/bash
awk ' BEGIN { FS="|";OFS="|" }
NR = =1 { printf("%s\n",$0)}
NR>1 { $5*=-1
$6+=0.1
$8=$4+$5+$6+$7
somme+=$8
printf("%s\n",$0)}
END { printf("somme totale des valeurs corriges %f \n",somme) > "resultat";
printf("valeur corrige moyenne %f \n" (somme/(NR-1)) >> "resultat"}
' $1
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)
{ printf("mesure %s ",$1); printf(" anne %s paire\n ",annee) >> "paire"}
' $1
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...