Ex 1:
Écrire un script qui affiche le nombres de paramètres passé sur la ligne de commande, si aucun paramètre, alors afficher « Aucun paramètres sur la ligne de commande » sinon afficher « Il y a X sur la ligne de commande » et affiche la liste des paramètres les un a coté des autres, puis les uns en dessous des autres.
correction
#!/bin/sh
if
[ $# -eq 0 ]
then
echo "Aucun parametre sur la ligne de commande..."
else
echo "Il y a $# parametre(s) sur la ligne de commande"
echo "liste des parametres :"
echo $*
for i in $*
do
echo $i
done
fi
Ex 2:
Écrire un script qui dit si le premier paramètre passé en ligne de commande est un nom de fichier ou un nom de répertoire, ou de type inconnu.
correction :
#!/bin/sh
if [ $# -eq 0 ]
then
echo "Aucun paramètre sur la ligne de commande..."
else
if [ -f $1 ]
then
echo « Le paramètre passé en ligne de commande est un fichier... »
else
echo « Le paramètre passé en ligne de commande n'est un fichier... »
fi
fi
Ex 3:
Écrire un script qui n'affiche que les fichiers du répertoire courant.Écrire un script qui affiche la liste des fichiers d'un répertoire passé en paramètre.
correction 1 :
#!/bin/sh
a=$('ls')
for i in $a
do
if [ -f $i ]
then
echo "fichier : " $i
fi
done
correction 2 :
#!/bin/sh
if [ $# -eq 0 ]
then
echo "Aucun paramètre sur la ligne de commande..."
else
cd $1a=$("ls")
for i in $a
do
if [ -f $i ]
then
echo "fichier : " $i
fi
done
cd ..
fi
Ex 4:
Écrire un script qui n'affiche que les répertoires du répertoire courant.Écrire un script qui affiche la liste des répertoires d'un répertoire passé en paramètre.
correction 1:
#!/bin/sh
a=$('ls')
for i in $a
do
if [ -d $i ]
then
echo "Répertoire : " $i
fi
done
correction 2:
#!/bin/sh
if [ $# -eq 0 ]
then
echo "Aucun paramètre sur la ligne de commande..."
else
cd $1a=$("ls")
for i in $a
do
if [ -d $i ]
then
echo "fichier : " $i
fi
done
cd ..
fi
Ex 5:
Écrire un script qui compte le nombre de fichiers et de répertoires dans le répertoire courant et affiche le résultat sous forme :Fichiers : 12Répertoires : 9
correction :
#!/bin/sh
a=$('ls')
nbd=0
nbf=0
for i in $a
do
if [ -f $i ]
then
nbf=$(($nbf+1))
fi
if [ -d $i ]
then
nbd=$(($nbd+1))
fi
done
echo "nb fichiers : " $nbf
echo "nb répertoires : " $nbd
Ex 6:
Écrire un script qui affiche la taille d'un fichier passé en paramètre sous la forme :Nom du fichier : test.sh ------- Taille 1562 octets
correction :
#!/bin/sh
if [ $# -eq 0 ]
then
echo "Aucun paramètre sur la ligne de commande..."
else
wc -c $1>tmp
read a b <tmp
echo "Nom du fichier : $1 ------ Taille " $a " octets."
rm tmp
fi
Ex 7:
Écrire un script qui affiche l'arborescence d'un répertoire sous forme « graphique »+---Trash| +---Bin| | +---Bash
correction:
#!/bin/sh
search () {
for dir in `echo *`
do
if [ -d "$dir" ] ; then
zz=0
while [ $zz != $1 ]
do
echo -n "| "
zz=`expr $zz + 1
`done if [ -L "$dir" ] ; then
echo "+---$dir" `ls -l $dir | sed 's/^.*'$dir' //'`
else
echo "+---$dir"
numdirs=`expr $numdirs + 1`
if cd "$dir" ; then
search `expr $1 + 1`
cd ..
fi
fi
fi
done
}
if [ $# != 0 ] ; then
cd $1
fi
echo "Répertoire initial = `pwd`"
numdirs=0
search 0
echo "Nombre total de répertoires = $numdirs"
exit 0