Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
!#/bin/bash
#exercie
#
#etape 1
#
#creer fonction bash qui permet d'afficher les information d'un fichier ou d'un dossier:
#
#fichier.sh est un fichier
#koalas a les droits en lecture , a les droits en ecriture , a les droits en execution
#
#etape 2
#
#creer un fonction bash qui permet d'afficher la fonction 1 pour tous les fichier et dossier d'un repertoire
#elle prendra en lecture le nom d'un repertoire, le testera et bouclera tan qu'elle n'aura pas un nom de répertoire valide
#
#étape 3
#
#creer une fonction qui affichera un ls -alh
#elle prendra en lecture le nom d'un repertoire, le testera et bouclera tan qu'elle n'aura pas un nom de répertoire valide
#
#étape 4
#creer un menu qui appera l etape 2 et l etape 3 et qui permettra de quitté
#il bouclera tant qu'il n'a pas l'instruction de quitter
#
#étape 5
#ajouté une fonction au menu qui permet d'ecrire la derniere commande lancer (etape 2 et 3) dans un fichier (il testera que le #fichier n'existe pas)
# '' n'inteprete pas les variables "" permet de les intrpréter
# exemple:
# dossier=bin
# echo "$dossier" # renvoie bin
# echo '$dossier' # renvoie $dossier
ecrire=""
list_fichier(){
for fichier in $list
do
echo "$dossier/$fichier"
reponce_fichier="$fichier est "
if [ -d "$dossier/$fichier" ]
then
reponce_fichier="$reponce_fichier un repertoire "
elif [ -f "$dossier/$fichier" ]
then
reponce_fichier="$reponce_fichier un fichier "
else
reponce_fichier="$reponce_fichier non identife "
fi
echo $reponce_fichier
ecrire="$ecrire \n $reponce_fichier"
list_droit
done
}
list_droit(){
local reponce_droit=" $USER"
if [ -r "$dossier/$fichier" ]
then
reponce_droit="$reponce_droit a les droits en lecture ,"
else
reponce_droit="$reponce_droit n'a pas les droits en lecture ,"
fi
if [ -w "$dossier/$fichier" ]
then
reponce_droit="$reponce_droit a les droits en ecriture ,"
else
reponce_droit="$reponce_droit n'a pas les droits en ecriture ,"
fi
if [ -x "$dossier/$fichier" ]
then
reponce_droit="$reponce_droit a les droits en execution "
else
reponce_droit="$reponce_droit n'a pas les droits en execution "
fi
echo $reponce_droit
ecrire="$ecrire \n $reponce_droit"
}
list(){
read -p "donnez un dossier: " dossier
while [ ! -d $dossier ]
do
echo "$dossier n'est pas un dossier "
read -p "donnez un dossier: " dossier
done
if [ -d $dossier ]
then
list=expr`ls $dossier`
list_fichier
else
echo "bug du programme"
fi
}
custom_ls(){
read -p "donnez un dossier: " dossier
while [ ! -d $dossier ]
do
echo "$dossier n'est pas un dossier "
read -p "donnez un dossier: " dossier
done
if [ -d $dossier ]
then
ls -alh $dossier
ecrire=expr`ls -alh $dossier` # 'expr' permet d'affecte a la variable la commande sans l'affichier
else
echo "bug du programme"
fi
}
ecrire_fichier(){
read -p "nom du nouveau fichier: " fichier
while [ -e $fichier ]
do
if [ -f $fichier ]
then
echo "$fichier est dans un fichier"
elif [ -d $fichier ]
then
echo "$fichier est un dossier"
else
echo "$fichier existe"
fi
read -p "redonner un nom au nouveau fichier: " fichier
done
echo -e "$ecrire">$fichier # '-e' permet d'interprete les "\n" comme des retour chario
echo "fichier ecrit !!"
}
ligne_separation(){
# inc=1
# echo "$inc $COLUMNS"
# echo $COLUMNS
# while [ $inc -lt "$COLUMNS" ]
# do
# affich_ligne="$affich_ligne*"
# inc=$(inc + 1)
# done
# echo $affich_ligne
echo "#######################################################"
}
menu(){
ligne_separation
echo "Quitter: 0"
echo "Lister: 1"
echo "ls: 2"
echo "ecrire dans un fichier: 3"
ligne_separation
}
choix=4
while [ ! X$choix == X0 ] #'X' permet de ne pas avoir de chaine vide si $choix est vide
do
case $choix in
"1" )ecrire=""; ligne_separation; list;; # ';' permet d'anchéne les commande sur la meme ligne
"2" ) ligne_separation;custom_ls;;
"3" ) ecrire_fichier;;
esac
menu
read -p "choix: " choix
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.