AIDE script bash avec en sortie, arborescence navigable

AIDE script bash avec en sortie, arborescence navigable - Shell/Batch - Programmation

Marsh Posté le 20-12-2011 à 13:34:51    

Bonjour à tous !
 
Dans le cadre de mes études, je dois écrire 2 scripts bash.
 
Le principe est le suivant : j'ai en entrée une arborescence, en sortie, je dois pouvoir naviguer via un navigateur internet dans cette arborescence.
 
contraintes :  
. utiliser le html,
. utiliser 3 bout de codes html séparément (head, boy et end)
. prendre plusieurs modes en compte, surtout le mode "COPY" et le mode "LIEN"
. écrire un script de traitement des arguments de la ligne de commande,
. écrire un script qui exécute ce qui est demandé.
 
j'ai écris le script traitement.sh qui traite correctement les arguments. sur la ligne de commande on doit OBLIGATOIREMENT tapé
 
--src DOSSIER_SOURCE --www DOSSIER_CIBLE
(le mode copy est --copy)
 
 
Mon problème réside dans le second script (évidemment ... )
 
l'arborescence (simplifiée) est la suivante :
 
DOSSIER_CIBLE
   . fichier1.txt
   . dossier2
       . fichier2.txt
       . fichier21.txt
   .dossier 3
       . dossier4
            .fichier4.txt
            . fichier41.txt
       . fichier3.txt
 
 
J'ai plusieurs choix qui s'offrent à moi :
 
J'ai pensé, lister tous les répertoires de l'arborescence, prendre chacun des répertoires, lister son contenu, et faire un index.html de se contenu.
Ex ; pour dossier_cible, l'index.html serait du type
 
<!DOCTYPE=html>
<head>
<title> nom_chap </title>
<body>
<a href="dossier_cible/fichier1.txt"> fichier1 </a><br/>
<a href="dossier_cible/dossier2/index.html"> dossier2 </a><br/>
<a href="dossier_cible/dossier3/index.html"> dossier3 </a><br/>
</body>
</html>
en cliquant sur dossier3 ca ouvre l'index.html du dossier3 qui affiche dossier4 et fichier3.txt
 
Sachant qu'on utilise 3 bout de codes html :
 
head :
<!DOCTYPE=html>
<head>
<title> nom_chap </title>
<body>
 
body :
<a href="chemin"> nom_fichier </a><br/>
 
end :
</body>
</html>
 
 j'ai aussi pensé à la récursivité, et à dire la vérité je me suis perdu dans les deux méthodes.  
 
 
Voilà ce que j'ai réussi à faire et qui ne fonctionne pas :
 
# $cible=/home/b/Bureau/Exo/TEST
# boolecopie=true
 
if $boolecopie ; then
 
 cp -r $source/* $cible
 
 for dossier in $(find $cible -mindepth 1 -maxdepth 1 -type d ) ; do
 
 
  sed "s|nom_chap|"$(basename $(dirname $dossier))"|" /home/benjamin/Bureau/Prenom_Nom/bin/head.html >> /home/benjamin/Bureau/Prenom_Nom/bin/tmp.html
 
  echo " $(basename $dossier) est un dossier "
  sed "s|nom_fichier|"$(basename $dossier)"|" /home/benjamin/Bureau/Prenom_Nom/bin/body.html | sed "s|chemin|$dossier/index.html|" /home/benjamin/Bureau/Prenom_Nom/bin/body.html >> /home/benjamin/Bureau/Prenom_Nom/bin/tmp.html  
 
 
 
  for fichier in $(find $dossier -mindepth 1 -maxdepth 1 -type f) ; do
   
   echo " $(basename $fichier) est un fichier "
   sed "s|nom_fichier|"$(basename $fichier)"|" /home/benjamin/Bureau/Prenom_Nom/bin/body.html | sed "s|chemin|$fichier|" /home/benjamin/Bureau/Prenom_Nom/bin/body.html >> /home/benjamin/Bureau/Prenom_Nom/bin/tmp.html  
  done
 
 
  cat /home/benjamin/Bureau/Prenom_Nom/bin/end.html >> /home/benjamin/Bureau/Prenom_Nom/bin/tmp.html
  cat /home/benjamin/Bureau/Prenom_Nom/bin/tmp.html >> $dossier/index.html
  rm /home/benjamin/Bureau/Prenom_Nom/bin/tmp.html
 done
 
else
      mode lien.
 
 
en algorithmique :
 
1 : Je rentre dans la cible
2 : je liste uniquement ce que je vois, j'en fais un index.
3 : s'il y a des dossiers, je rentre dedans et je réexecute depuis l'étape2  
 
 
Ca parait simple je sais ^^'
 
Est ce que vous pourriez m'aider s'il vous plait ?
 
Merci d'avance !

Reply

Marsh Posté le 20-12-2011 à 13:34:51   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed