Vous êtes sur la page 1sur 20

(/fr/)

Accueil (../../fr/)
> Forum (../)
> Systèmes d'exploitation (https://openclassrooms.com/forum/categorie/systemes-d-exploitation)
> Linux & FreeBSD
(https://openclassrooms.com/forum/categorie/linux-freebsd)
> Exercices Bash

Liste des forums  


(/forum/)

Ce sujet est fermé.

Exercices Bash (/forum/sujet/exercices-bash-57809) Partage

venez vous entraîner !

1
2 (/forum/sujet/exercices-bash-57809?page=2)
(/forum/sujet/exercices-bash-57809?page=2)

ok
(/fr/memb
ers/xn1wc7
ps4583)

(/fr/members/xn1wc7ps4583)

9 décembre 2009 à 20:43:09

Bonjour.

Je propose un topic d'entraînement au Bash pour tout les niveaux. Je


suis loin (et surement c'est peu dire) d'être le meilleur avec ce
langage, et nos niveaux sont différents : certains sont expert, d'autres
se débrouillent, d'autres débutent et d'autres n'y connaissent rien.
C'est l'occasion de progresser, d'apprendre et de partager ces
connaissances.

Les règles :

On indique le numéro de l'exercice quand on poste une solution.


Les solutions doivent être postées avec ce zcode : <secret><code
type="bash"></code></secret>
On peut proposer des exercices de tout niveaux en suivant la
numérotation (en éditant si-besoin) et en indiquant à peu près le
niveau de difficulté (débutant, habitué, confirmé ou expert).
On peut commenter certains codes, certaines solution, etc ...
On peut poster sa solution dans un autre langage de script que la
Bash, compatible Unix-likes (évitons le PHP, tolérons plutôt le Ksh,
le Zsh, le Csh, le Tcsh, ... à la limite le Perl). Néanmoins il est
préférable de poster une solution Bash/Sh.

La liste des exos :

Bon je commence avec quelques exos :

Niveau débutant :

Exercice 1 : les notes (http://www.siteduzero.com/forum-83-468485-


p1-exercices-bash.html#r4438739)

Exercice 2 : les notes, le retour (http://www.siteduzero.com/forum-83-


468485-p1-exercices-bash.html#r4438739)

Exercice 8 : <math>aa </math> (http://www.siteduzero.com/forum-83-


468485-p1-exercices-bash.html#r4442510)

Niveau habitué :

Exercice 3 : les notes, encore et toujours ...


(http://www.siteduzero.com/forum-83-468485-p1-exercices-
bash.html#r4438739)

Exercice 4 : TestUser (http://www.siteduzero.com/forum-83-468485-


p1-exercices-bash.html#r4438739)

Exercice 5 : la calculatrice (http://www.siteduzero.com/forum-83-


468485-p1-exercices-bash.html#r4438739)

Exercice 6 : La factorielle (http://www.siteduzero.com/forum-83-


468485-p1-exercices-bash.html#r4438739)

Exercice 7 : Les fichiers (http://www.siteduzero.com/forum-83-


468485-p1-exercices-bash.html#r4439370)

Exercice 11 : Faites votre propre version passwd


(http://www.siteduzero.com/forum-83-468485-p1-exercices-
bash.html#r4471458)

Niveau Confirmé :

Exercice 9 : Les notes, pour changer ...


(http://www.siteduzero.com/forum-83-468485-p1-exercices-
bash.html#r4445160)

Exercice 10 : Liste d'utilisateurs (http://www.siteduzero.com/forum-83-


468485-p1-exercices-bash.html#r4449385)

Exercice 12 : Convertisseur décimale/binaire


(http://www.siteduzero.com/forum-83-468485-p1-exercices-
bash.html#r4477377)

Quelques exercices (1 à 6) :

Exercices 1 : les notes

débutant

Écrire 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érieur à 10

Solution :

1 #!/bin/bash
2  
3 echo "Entrez votre note :"
4 read note
5  
6 if [ $note -ge 16 ]
7 then
8     echo "très bien"
9 elif [ $note -ge 14 ]
10 then
11     echo "bien"
12 elif [ $note -ge 12 ]
13 then
14     echo "assez bien"
15 elif [ $note -ge 10 ]
16 then
17     echo "moyen"
18 else
19     echo "insuffisant"
20 fi

Exercice 2 : les notes, le retour

débutant

Reprenez l'exercice 1 et faites en sorte que le programme se répète


tant que l'utilisateur n'aie pas saisie une note négative ou q (pour
quitter).

Le script doit calculez le nombre de notes de saisies et en faire la


moyenne tout à la fin.

Solution :

1 #!/bin/bash
2  
3 note=0
4 moyenne=0
5 i=0
6  
7 until [ $note -lt 0 ]
8 do
9     echo "Entrez votre note (q pour quitter) :"
10     read note
11     if [ $note = "q" ]
12     then
13         note=-1
14         echo "au revoir !"
15     elif [ $note -ge 16 ]
16     then
17         echo "très bien"
18     elif [ $note -ge 14 ]
19     then
20         echo "bien"
21     elif [ $note -ge 12 ]
22     then
23         echo "assez bien"
24     elif [ $note -ge 10 ]
25     then
26         echo "moyen"
27     elif [ $note -ge 0 ]
28     then
29         echo "insuffisant"
30     else
31         echo "au revoir !"
32     fi
33      
34     if [ $note -ge 0 ]
35     then
36         let moyenne=$moyenne+$note
37         let i=$i+1
38     fi
39 done
40  
41 if [ $i -le 0 ]
42 then
43     let i=1
44 fi
45  
46 let moyenne=$moyenne/$i
47 echo "La moyenne est de $moyenne ($i notes)"

Exercice 3 : les notes, encore et toujours ...

habitué

Reprenez uniquement le code de l'exercice 1. La note peut cette fois


être donnée en paramètre ou bien être saisie si elle n'a pas été
trouvée en paramètre. La comparaison de la note devra être faite
dans une fonction "appreciation".

Solution :

1 #!/bin/bash
2  
3 appreciation ()
4 {
5     if [ $note -ge 16 ]
6 then
7     echo "très bien"
8 elif [ $note -ge 14 ]
9 then
10     echo "bien"
11 elif [ $note -ge 12 ]
12 then
13     echo "assez bien"
14 elif [ $note -ge 10 ]
15 then
16     echo "moyen"
17 else
18     echo "insuffisant"
19 fi
20 }
21  
22 # programma principale
23 clear
24 if [ $# -ne 0 ]
25 then
26     note=$1
27 else
28     echo "Saisir une note"
29     read note
30 fi
31 appreciation

Exercice 4 : TestUser

habitué

Faites un script qui vous propose le menu suivant :

Citation

1 - Vérifier l'existence d'un utilisateur

2 - Connaître l'uid d'un utilisateur

q - Quitter

L'utilisateur doit être saisis, à l'aide d'une fonction. Son existance doit
être vérifiée à l'aide d'une autre fonction.

Solution :

1 #!/bin/bash
2  
3 function pause
4 {
5     echo "Appuyez sur ENTER pour continuer"
6     read
7 }
8  
9 function saisirUser
10 {
11     echo "Saisir l'utilisateur"
12     read util
13 }
14  
15 function verifyUser
16 {
17     if grep "^$util:" /etc/passwd > /dev/null
18     then
19         echo "L'utilisateur existe"
20     else
21         echo "L'utilisateur n'existe pas"
22     fi
23     pause  
24 }
25  
26 rep=1
27 while [ $rep -eq 1 ]
28 do
29     clear
30     printf "menu :\n\n"
31     echo "1. vérifier l'existance d'un utilisateur"
32     echo "2. Connaitre l'uid d'un utilisateur"
33     echo -e "3. Quitter\n"
34     read choix
35     case $choix in
36         1)
37             saisirUser
38             verifyUser ;;
39  
40         2) 
41             saisirUser
42             id $util
43             pause ;;
44  
45         q)
46             echo "Au revoir"
47             pause
48             rep=0 ;;
49         *)
50             echo "erreur de saisie ..."
51                         pause ;;
52     esac
53 done

Exercice 5 : la calculatrice

habitué

Faire un script dans lequel deux nombres opérandes et un signe


opérateur (+-*/) devront être donnés en paramètres, ou saisis en cas
d'absence ... le script doit réaliser l'opération souhaitée.

Exemple :

1 [ ~] ./calculette.sh 7 + 4
2 Le résultat est : 11

Le calcul doit être fait à l'aide d'une fonction calcul.

Solution :

1 #!/bin/bash
2  
3 function saisir
4 {
5     printf "Saisir le premier nombre, puis le signe
6     read nb1
7     read s
8     read nb2
9 }
10  
11 function calcul
12 {
13     case $s in
14         "+") let result=$nb1+$nb2 ;;
15         "-") let result=$nb1-$nb2 ;;
16         "*") let result=$nb1*$nb2 ;;
17         "/") let result=$nb1/$nb2 ;;
18         *)
19             let result=0
20             echo -e "Erreur de saisie !\nLe resultat
21     esac
22 }
23  
24 calcul2 ()
25 {
26     let result=$nb1$s$nb2
27 }
28              
29 if [ $# -eq 3 ]
30 then
31     nb1=$1 ; s=$2 ; nb2=$3
32 else
33     saisir
34 fi
35 calcul
36 echo "Le résultat est $result"
37 calcul2
38 echo "Calculé d'une autre façon : $result"

Exercice 6 : La factorielle

habitué

Faites un programme qui permette de calculer et d'afficher la


factorielle d'un nombre donné en paramètre ou saisis en cas
d'absence de paramètres.

Solution:

Merci de votre participation

Preko
(/fr/memb
ers/97bdfk
sd25q9)

(/fr/members/97bdfksd25q9)

9 décembre 2009 à 21:13:03

Bonne idée

L'exercice 6 je l'ai étudié en C la semaine dernière xD

ok
(/fr/memb
ers/xn1wc7
ps4583)

(/fr/members/xn1wc7ps4583)

9 décembre 2009 à 22:30:46

J'ai finit de rajouter les solutions ...

Citation : Preko

L'exercice 6 je l'ai étudié en C la semaine dernière xD

Mouais, c'est un exercice courant, je l'ai tiré d'un vieil exo de Java ...

Exercice 7 : Les fichiers

habitué

Codez un script qui calcul le nombre de fichiers standard, de sous-


répertoires, et d'exécutables d'un répertoire quelconque qui sera
donné en paramètre (ou saisis en cas d'absence du paramètre).

Solution :

1 #!/bin/bash
2  
3 j=0
4 k=0
5 l=0
6  
7 if [ $# -eq 0 ]
8 then
9     echo "Saisir le répertoire"
10     read rep
11 else
12     rep=$1
13 fi
14  
15 cd $rep
16  
17 for i in `ls`
18 do
19     if [ -d $i ]
20     then
21         echo $i
22         let j=$j+1
23     fi
24     if [ -f $i ]
25     then
26         echo $i
27         let k=$k+1
28     fi
29     if [ -x $i ]
30     then
31         echo $i
32         let l=$l+1
33     fi
34 done
35 echo "Il y a $j répertoires, $k fichiers et $l exécu

xavierm02
(/fr/memb
ers/vcw7t
7ffkt89)

(/fr/members/vcw7t7ffkt89)

10 décembre 2009 à 20:38:23

Päs mal

Par contre, je pense qu'il serait mieux de mettre tous les exercices
dans le premier post...

ok
(/fr/memb
ers/xn1wc7
ps4583)
(/fr/members/xn1wc7ps4583)

11 décembre 2009 à 5:18:26

Salut.

Citation : xavierm02

Par contre, je pense qu'il serait mieux de mettre tous les


exercices dans le premier post...

Euh, ça ferait, AMHA un post bien surchargé à la fin difficile à éditer ...
si on suit bien la numérotation des exercices, ça devrait le faire.

Exercice 8 : <math>aa </math>

débutant

Écrire un script qui prend un nombre en saisie élève ce nombre à sa


propre puissance.

Exemple :

1 [ ~] ./NomDuScript.sh
2 Saisir une valeur :
3 4
4 2^2 = 4

C'est un peu le même principe que la factorielle mais cette fois,


l'usage de la boucle for est imposé.

Pour les utilisateurs habitués : la valeur doit être prise en paramètre


(ou en saisie en cas d'absence du paramètre). Le calcul doit se faire à
l'aide d'une fonction opération.

Solution 1 (débutant) :

1 #!/bin/bash
2 echo "Saisir une valeur"
3 read value
4 result=1
5 for (( i=0 ; i<$value ; i++ ))
6 do
7     let result=$result*$value
8 done
9 echo "$value^$value = $result"

Solution 2 (habitué) :

1 #!/bin/bash
2  
3 operation ()
4 {
5     result=1
6     for (( i=0 ; i<$value ; i++ ))
7     do
8         let result=$result*$value
9     done
10     echo "$value^$value = $result"
11 }
12  
13 if [ $# -eq 0 ]
14 then
15     echo "Saisir une valeur"
16     read value
17 else
18     value=$1
19 fi
20 operation

N'hésitez pas à proposer vos exercices et/ou vos solutions


xavierm02
(/fr/memb
ers/vcw7t
7ffkt89)

(/fr/members/vcw7t7ffkt89)

11 décembre 2009 à 13:12:04

Mais ça te permettrait quand même de pouvoir les reclasser du plus


facile au plus dur facilement...

Le mieux ça serait limite que tu fases un tutoriel que tu updates

Erus_Iluva
tar
(/fr/memb
ers/87r658
jx0jg4)

(/fr/members/87r658jx0jg4)

11 décembre 2009 à 13:41:13

Petite remarque, une fonction se définit partout par 'foo () {bar}'


plutot que d'utiliser un bashisme affreux comme function.

(En plus tu le sais, mais tu mélanges les notations...)

Et pour finir de troller, dash smieux.

ok
(/fr/memb
ers/xn1wc7
ps4583)

(/fr/members/xn1wc7ps4583)

11 décembre 2009 à 17:31:12

Citation : Erus_Iluvatar

(En plus tu le sais, mais tu mélanges les notations...)

J'ai utilisé (et non mélangé) les deux notations pour souligner leur
existences respectives

Citation : Erus_Iluvatar

un bashisme affreux comme function.

Mais vu qu'on parle de procédures en Bash ... je n'y vois pas


d'inconvénients (les langages ne sont pas toujours fait pour se
ressembler).

Citation : xavierm02

Mais ça te permettrait quand même de pouvoir les reclasser du


plus facile au plus dur facilement...

Le mieux ça serait limite que tu fases un tutoriel que tu updates


Bof, des exos c'est pas suffisant pour faire un tuto ... et puis m@teo21
s'occupe déjà d'un tuto sur Bash (qui n'est pas encore terminé je
crois). Et puis c'est juste des exos histoire de s'entraîner, pas la peine
de faire beaucoup de cérémonie. L'idée c'est aussi que d'autres
postes des exercices (même si j'en ai encore en réserve) ...

Par contre ce qui serait faisable, c'est de recenser les exos par des
liens et les classer par niveaux de difficultés (je m'en chargerai à
l'occasion ).

Erus_Iluva
tar
(/fr/memb
ers/87r658
jx0jg4)

(/fr/members/87r658jx0jg4)

11 décembre 2009 à 20:31:23

Sisi, dans ta calculette, tu utilise les deux. Pis bon, sinon tout tes
scripts fontionnent avec dash sans ce bashisme, d'où ma remarque
(un peu aigrie d'ailleurs, pardon)

ok
(/fr/memb
ers/xn1wc7
ps4583)

(/fr/members/xn1wc7ps4583)

11 décembre 2009 à 22:11:58

Citation : Erus_Iluvatar

Sisi, dans ta calculette, tu utilise les deux.

C'est ce que j'ai dis ... mais lorsque tu parles de mélange, on croirait
qu'il y a des confusions. Encore une fois c'est pour souligner
l'existence des deux syntaxes.

Exercice 9 : Les notes, pour changer ...

Confirmé

Il s'agit ici d'un script qui va devoir exploiter les données d'un fichier
de notes que vous aller crée au préalable dans le même répertoire
que le script.

Ce fichier sera appelé FichierNote et devra se présenter comme ceci :

Citation : FichierNote

Dupont François 12

Durand Françoise 8

Dujardin Nicole 14

Les espaces entre les mots sont des tabulations (Nom + tab + Prénom
+ tab + note, après le reste n'a pas d'importance).

Le script doit afficher les lignes dans lesquelles la note est supérieur
ou égal à 10. Si le fichier est vide, il doit quitter (donc ne pas boucler
indéfiniment).

Exemple d'exécution :

1 [ ~] ./NomDuScript
2 Dupont        François        12
3 Dujardin Nicole        14
4 [ ~] rm FichierNote
5 [ ~] touch FichierNote
6 [ ~] ./NomDuScript
7 [ ~]

Solution :

1 #!/bin/bash
2  
3 cat  FichierNote | while true
4 do
5     read ligne 
6     if [ "$ligne" = "" ]
7     then
8         exit 0
9     else
10         set -- $ligne
11         if [ $3 -ge 10 ]
12         then
13             echo "$ligne"
14         fi
15     fi
16 done

ok
(/fr/memb
ers/xn1wc7
ps4583)

(/fr/members/xn1wc7ps4583)

13 décembre 2009 à 9:50:06

Exercice 10 : Liste d'utilisateurs

Confirmé

Ici, vous devez avoir un script qui prend en paramètre (ou en saisie en
cas d'absence du paramètre) un fichier qui contient des lignes
comme ceci : Login + Tabulation + Nom + Tabulation + Prénom.
Exemple :

Citation : fichier

dupontf Dupont François

fdurand Durand Françoise

nicoled Dujardin Nicole

(les espaces sont des tabulations)

Le script devra vérifier, à l'aide d'une fonction, l'existance des


utilisateurs enregistrés dans le fichier. Admettons que seul Dupont
François soit un utilisateur et que le fichier se nomme
~/Documents/FichierUser, le script devra s'exécuter comme ceci :

1 [ ~] ./NomDuScript ~/Doucuments/FichierUser
2 dupontf        Dupont        François
3 [ ~] ./NomDuScript
4 Saisissez le fichier à traiter :
5 ~/Documents/UserFichier
6 Le fichier n'existe pas ...
7 [ ~]

Vous devinerez donc que le script doit d'abord vérifier l'existence du


fichier avant de comparer son contenu au fichier /etc/passwd. Le
script quitter la boucle si le fichier est vide.

Solution :

1 #!/bin/bash
2  
3 TestUser ()
4 {
5     if grep "^$util:" /etc/passwd > /dev/null
6     then
7         echo $ligne
8     fi
9 }
10  
11 if [ $# -eq 0 ]
12 then
13     echo "Chemin et nom du fichier :"
14     read fichier
15 else
16     fichier=$1
17 fi
18  
19 if [ -e $fichier ]
20 then
21     cat $fichier | while true
22     do
23         read ligne
24         if [ "$ligne" = "" ]
25         then
26             exit
27         else
28             set -- $ligne
29             util=$1
30             TestUser
31         fi
32     done
33 else
34     echo "Le fichier $fichier n'existe pas ..."
35 fi

N'hésitez pas à proposer vos solutions (elles sont peut être plus
optimisées d'ailleurs, mais même si ce n'est pas le cas allez y ).

Anonyme

14 décembre 2009 à 17:04:18

Très bonne idée !

Par contre le coup de la calculatrice... Réinventer la roue c'est bien


mais des fois y'a un peu plus simple (je mets pas d'enrobage) :

1 read operation
2 echo $(($operation))

xavierm02
(/fr/memb
ers/vcw7t
7ffkt89)

(/fr/members/vcw7t7ffkt89)

14 décembre 2009 à 17:48:49

MarbolanGos : Ca perd tout l'intérêt que ça avait avec ta méthode...

BadPotato
(/fr/memb
ers/r4phf4
k69f49)
(/fr/members/r4phf4k69f49)

20 décembre 2009 à 6:06:15

un script que j'avais fait il y a assez longtemps(tout bête )... en gros


c'est pratique pour faire son propre installateur de distros....

Exercice 11 : Faites votre propre version passwd

Débutant/Habitué

Contentez-vous simplement de stocker vos mots passe users/root


dans des variables, ça devrait être suffisant.

1 UserName=BadPotato
2 PASSROOT1="Le ciel est bleu"
3 PASSROOT2="La mer est calme"
4  
5 PASSUSER1="Ferme ta yeule pis rame"
6 PASSUSER2="ohhhhhhh yeah"
7  
8 echo "Pour commencer, nous allons défénir un mot de
9 echo "Commençont par le root"
10  
11  
12 while [ "$PASSROOT1" != "$PASSROOT2" ]; do
13    echo "Entrez le mot de passe pour root:"
14    read -s PASSROOT1
15    echo "Confirmez le mot de passe pour root:"
16    read -s PASSROOT2
17  
18    if [ "$PASSROOT1" != "$PASSROOT2" ]; then
19       echo "Erreur de saisie du mot de passe.  Recom
20    fi
21 done
22  
23 echo "Bravo, configuront maintenant celui de l'user
24  
25 while [ "$PASSUSER1" != "$PASSUSER2" ]; do
26    echo "Entrez le mot de passe pour $UserName (l'us
27    read -s PASSUSER1
28    echo "Confirmez le mot de passe pour $UserName (l
29    read -s PASSUSER2
30    if [ "$PASSUSER1" != "$PASSUSER2" ]; then
31       echo "Erreur de saisie du mot de passe.  Recom
32    fi
33 done
34  
35 # ... une fois en chroot mettre ceci:
36 echo root:$PASSROOT1 | chpasswd
37 echo root:$PASSUSER1 | chpasswd

ok
(/fr/memb
ers/xn1wc7
ps4583)

(/fr/members/xn1wc7ps4583)

21 décembre 2009 à 16:22:23

Merci de ta participation

Exercice 12 : Convertisseur décimale/binaire

Confirmé

Alors ici, il faut coder un script qui prend en paramètre (ou en saisie
en cas d'absence de paramètres) une valeur décimale et qui doit la
convertir en binaire.

Vous devez travailler sur 8 bits et chaque bit devra être contenu dans
une case d'un tableau monodimentionnel ... à l'a fin on affiche toutes
les cases de ce tableau de sorte à avoir la valeur en binaire lisible de
droite à gauche, de la valeur décimale saisie au départ.

1 #!/bin/bash
2  
3 MaxBits=8
4  
5 pow ()
6 {
7     value2=1
8     for (( k=1 ; k<$i ; k ++ ))
9     do
10         let value2=$value2*2
11     done
12 }
13  
14 if [ $# -eq 0 ]
15 then
16     echo "Saisir une valeur décimale"
17     read value
18 else
19     value=$1
20 fi
21  
22 declare -a bin
23  
24 j=0
25 for (( i=$MaxBits ; i>=0 ; i-- ))
26 do
27     pow
28     if [ $value -ge $value2 ]
29     then
30         bin[j]="1"
31         let value=$value-$value2
32     else
33         bin[j]="0"
34     fi
35     let j=$j+1
36 done
37  
38 printf "La valeur binaire est de : "
39 for (( i=0 ; i<=($MaxBits-1) ; i++ ))
40 do
41     printf ${bin[i]}
42 done
43 echo ""

ok
(/fr/memb
ers/xn1wc7
ps4583)

(/fr/members/xn1wc7ps4583)

6 janvier 2010 à 21:33:20

Et je reviens avec un petit exercice simple ...

Exercice 13 : Tri à bulle simple

Habitué

Le script devra enregistrer à l'aide d'une 10 entiers dans un tableau


puis les trier dans l'ordre croissant dans ce même tableau (sans
passer par un autre) et enfin afficher le contenu du tableau (ordonné)
sur la sortie standard.

Solution :

1 #!/bin/bash
2  
3 SIZE=10
4  
5 for (( i=0 ; i<SIZE ; i++ ))
6 do
7     printf "Saisir un entier : "
8     read tab[i]
9 done
10  
11 echo -e "\n"
12  
13 for (( i=0 ; i<SIZE ; i++ ))
14 do
15     for (( j=($i+1) ; j<SIZE ; j++ ))
16     do
17         if [ ${tab[j]} -le ${tab[i]} ]
18         then
19             tampon=${tab[i]}
20             tab[i]=${tab[j]}
21             tab[j]=$tampon
22         fi
23     done
24 done
25  
26 for (( i=0 ; i<SIZE ; i++ ))
27 do
28     echo ${tab[i]}
29 done

sylflo
(/fr/memb
ers/3rsq0z
5vf938)

(/fr/members/3rsq0z5vf938)

20 juillet 2010 à 14:07:09

Bonjour.

Je m'excuse d'écrire sur un sujet aussi vieux mais voulant faire


quelques exercices sur les script bash, je suis tombé sur ce sujet. Mais
le problème que j'ai est que je ne peux voir les corrections. Donc je
souhaiterais savoir si cela vient de mon PC ou alors si ces corrections
ne sont tout simplement plus ici.

Je vous remercie d'avance de vos réponses.

PS : Oubliez ce que je viens de dire ça marche en fait c'est à cause de


ma connexion à internet j'ai un modem 56 connexant avec le pilote
libre alors ça bug comme pas possible encore désolé pour la gêne
occasionné.

vamboutc
ha
(/fr/memb
ers/gvqc9
b6cp927)

(/fr/members/gvqc9b6cp927)

14 décembre 2014 à 19:33:46

 Créer script shell qui permet en argument une liste de fichiers texte .
Ce script permet de passer en majuscule le contenu de ce fichier. Les
resultats seront mis dans autre fichiers qui font suivi(exp fich =>
fichMajus) . 

VOUS POUVEZ M'AIDEE

rouritafat
ma
(/fr/memb
ers/c1gk02
2mkn42)

(/fr/members/c1gk022mkn42)

13 décembre 2015 à 23:23:52


- Message modéré pour le motif suivant :
Message complètement hors sujet

Anonyme

13 décembre 2015 à 23:52:19

rouritafatma a écrit:

Bonjour, aider moi pour réaliser ce exercice

Ecrire un script shell permettant d'afficher le menu suivant :

Menu

l créer le fichier liste contenant les fichiers du répertoire de


connexion.

d demander à l'utilisateur de saisir le nom d'un répertoire. S'il


existe faire un lien sur ce répertoire

dans le répertoire de connexion.

f rechercher le fichier dont le nom est donné comme 1er


paramètre dans le repertoire /tmp. S'il

existe il sera supprimé.

r afficher les droits d'accés ainsi que le propiriétaire du fichier


donné comme 2ème paramètre s'il

existe.

u rechercher si le nom d'utilisateur donné comme 3ème


paramètre est définit sur le système. Si oui

afficher son uid et son gid.

q quitter le menu

Faites tous les tests nécessaires

On te demande pas l'impossible .. Fait des recherches sur google.


Pose au moins un bout de code. On va pas faire le travail à ta place.

http://abs.traduc.org/abs-5.0-fr/ (http://abs.traduc.org/abs-5.0-fr/)

rouritafat
ma
(/fr/memb
ers/c1gk02
2mkn42)

(/fr/members/c1gk022mkn42)

14 décembre 2015 à 0:02:00

j'ai dit qui peut m'aider et non pas faire a ma place

ALAIN290
000
(/fr/memb
ers/t2t4vq
pvv983)

(/fr/members/t2t4vqpvv983)

14 décembre 2015 à 10:52:31

super, je trouve ton poste sur des exercice en script bash Linux super,
ca permert d'apprendre et d'avancer. Des que j'ai le temps je passerai
a ton poste que je trouve tres bien.

fatmafato
u
(/fr/memb
ers/jpst9w
754863)

(/fr/members/jpst9w754863)

14 décembre 2015 à 17:01:05

Bonjour, aider moi pour réaliser ce exercice

Ecrire un script shell permettant d'afficher le menu suivant :

Menu

l créer le fichier liste contenant les fichiers du répertoire de


connexion.

d demander à l'utilisateur de saisir le nom d'un répertoire. S'il existe


faire un lien sur ce répertoire

dans le répertoire de connexion.

f rechercher le fichier dont le nom est donné comme 1er paramètre


dans le repertoire /tmp. S'il

existe il sera supprimé.

r afficher les droits d'accés ainsi que le propiriétaire du fichier donné


comme 2ème paramètre s'il

existe.

u rechercher si le nom d'utilisateur donné comme 3ème paramètre


est définit sur le système. Si oui

afficher son uid et son gid.

q quitter le menu

Faites tous les tests nécessaires

ALAIN290
000
(/fr/memb
ers/t2t4vq
pvv983)

(/fr/members/t2t4vqpvv983)

14 décembre 2015 à 22:59:14

1 #!/bin/bash
2 #Affiche le nombre de lettre ou de mots dans un fich
3 #Vous rechercher la ligne ou se trouve le mots aussi
4  
5   
6  
7 read -p "entre ton chemin du fichier " fiche
8 read -p "choisir une lettre ou mots: " mots
9 for i in  $mots
10 do
11       
12     nombre=$(grep -E "$i" $fiche)    
13     nombre2=$(grep -E "$i" $fiche | wc -L )
14     nombre3=$(grep "$i" $fiche | wc -l )
15     nombre4=$(nl $fiche | cat | grep "$i" )
16 done
17 if [   $mots  ]
18 then 
19       echo "trouver
20  
21       $nombre2   :lettre du mots
22       $nombre3   :mots dans le texte
23       ligne : $nombre4   "
24 else
25 echo "non trouver"
26 fi

j'ai trouver tes script pour apprendre excellent, merci à toi, je vais
travailler dessus merci.sinon voila un script  que j'avais fait, vous
pouvez l'améliorer encore.
ce script permet de :

Il affiche le nombre de lettre ou de mots dans un fichier .txt

Il Vous recherche la ligne ou se trouve le mots aussi.

Par preciser bien le nom du fichier et du chemin.

voila : ce que ca donne

1 entre ton chemin du fichier /home/luky/restauration.t


2 choisir une lettre ou mots: airmode
3 trouver
4  
5       55   :lettre du mots
6       1   :mots dans le texte
7       ligne :     11    airmode

Edité par ALAIN290000 14 décembre 2015 à 23:00:43

fouadmen
nani
(/fr/memb
ers/91b39j
z1m147)

(/fr/members/91b39jz1m147)

17 mars 2016 à 18:21:16

Créez un script qui boucle en demandant une  chaîne  de


caractères, insère cette chaîne de caractères dans un fichier
donné en premier paramètre jusqu'à ce que la taille du
fichier dépasse 50

slt solution

dantonq
(/fr/memb
ers/nhb1m
740ds11)

(/fr/members/nhb1m740ds11)

17 mars 2016 à 18:39:31

« dépasse 50 » quoi ?

centimètres de haut ?

pieds de long ?

Km/H ?
je ne sais même pas pourquoi je réponds, je ne parle pas au
personnes malpolies, et irrespectueuses : pas de «bonjour», pas de
«s'il vous plaît», pas de «merci», aucun travail d'explication du travail à
faire, aucune recherche de solution.

eh ben, pas de réponse/solution !

"Un problème clairement exposé est à moitié résolu." ·· Pas de questio


fouadmen
nani
(/fr/memb
ers/91b39j
z1m147)

(/fr/members/91b39jz1m147)

17 mars 2016 à 18:42:22

#!/bin/bash
a=0
while [ $a -le 50 ]
do
read -p "entrer une chaine : " ch
echo $ch >> fichier
a=`stat -c %s fichier`
done

SalmaSal
ma8
(/fr/memb
ers/tt99cf1
5kb38)

(/fr/members/tt99cf15kb38)

5 avril 2016 à 21:37:21

Aide 

 Écrire un script qui demande a l'utilisateur de donner deux nombres


et affiche la somme .le script doit être exécuté avec deux paramètre
,sinon il faut traiter le cas d'erreur.

dantonq
(/fr/memb
ers/nhb1m
740ds11)

(/fr/members/nhb1m740ds11)

5 avril 2016 à 21:49:48

SalmaSalma8 a écrit:

Aide

non.

Bonjour,

d'abord.

"Un problème clairement exposé est à moitié résolu." ·· Pas de questio

fouadmen
nani
(/fr/memb
ers/91b39j
z1m147)

(/fr/members/91b39jz1m147)
8 avril 2016 à 23:57:30

#!/bin/bash
if [ $# -eq 2 ];then
        let "s=$1+$2"
        echo "la somme est : $s"
else
        echo "erreur!!"
fi

1
2 (/forum/sujet/exercices-bash-57809?page=2)
(/forum/sujet/exercices-bash-57809?page=2)

OPENCLASSROOMS

OPPORTUNITÉS

AIDE

POUR LES ENTREPRISES

EN PLUS

Français
 

book.com/openclassroomsfr/)
ttps://twitter.com/ocfrance)
www.linkedin.com/company/openclassrooms)
(https://instagram.com/openclassrooms)
(https://www.youtube.com/user/TheOpenClassrooms)

(https://itunes.apple.com/fr/app/openclassrooms-
cours-en-ligne/id1164140533?
pt=118427510&ct=FooterWeb&mt=8)

Vous aimerez peut-être aussi