############################################################################### # Unix Shellskript html-stapeln # Liste benutzter Variablen # zu bearbeitendes Skript; der Verzeichnisname "skript" # gerade bearbeitetes Kapitel; ein Verzeichnis "dir" # # Dateien # Alle Dateien des Skriptes "~/tmp/dateilistea" # Dateien des Skriptes in aktuellem Kapitel "~/tmp/dateilisteb" # Einzelne html-Datei nach Modifikation der Bildlinks "~/tmp/datei_1" # ~/tmp/datei_1 in Header verkleinert und mit zusätzlichem # Zeilenumbruch am Dateiende, bereit zum Stapeln "~/tmp/datei_2" # # Streameditor-Anweisungsskripte # "~/bin/html-stapeln-filter.sed" filtert htm-Verweise aus Inhaltsverzeichnis # "~/bin/html-stapeln-modif1.sed" entfernt Fenstertitel und Seitenhintergrund # "~/bin/html-stapeln-modif2.sed" fuegt Seitenumbruch ein, entfernt Verlinkungen echo echo "Dieses Programm stapelt eine Liste von htm-Dateien eines Skriptes" echo "in einer einzigen htm-Datei mit dem Namen skript.htm." echo "Die Liste wird aus dem Inhaltsverzeichnis des Skriptes generiert." echo "Es werden nur die Dateien der angegebenen Kapitel gestapelt." echo echo -n "Welches Skript ist zu bearbeiten? " read skript echo sed "s/src=\"/src=\"\\$skript\//g" ~/www/$skript/index.html | \ sed -f ~/bin/html-stapeln-modif1.sed > ~/www/skript.htm if [ -d ~/www/$skript ]; then sed -f ~/bin/html-stapeln-filter.sed ~/www/$skript/index.html > ~/tmp/dateilistea # cat ~/tmp/dateilistea echo "Welche Kapitel sollen in die Gesamtdatei?" echo -n "Geben Sie den Unterverzeichnisnamen fuer das Kapitel ein... " read dir echo "Kapitel ~/www/$skript/$dir wird bearbeitet" echo cat ~/tmp/dateilistea | sed -n "/$dir\//p" > ~/tmp/dateilisteb # cat ~/tmp/dateilisteb # Modifizieren der einzelnen htm-Dateien datei_0=$(head -1 ~/tmp/dateilisteb) while [ $datei_0 ]; do echo "Es wird die Datei ~/www/$skript/$datei_0 modifiziert" # Anpassung der Bildlinks sed "s/src=\"/src=\"\\$skript\\/\\$dir\//g" ~/www/$skript/$datei_0 > ~/tmp/datei_1 # Entfernung des Headers, Einfügung von Seitenumbruechen sed -f ~/bin/html-stapeln-modif2.sed ~/tmp/datei_1 > ~/tmp/datei_2 # hier wird aneinandergekettet cat ~/tmp/datei_2 >> ~/www/skript.htm sed 1d ~/tmp/dateilisteb > ~/tmp/dateilistec mv ~/tmp/dateilistec ~/tmp/dateilisteb datei_0=$(head -1 ~/tmp/dateilisteb) done # Verzeichnisspezifische Sedanweisungsdateien echo echo -n "Naechstes Kapitel oder Kapiteleingabe mit Returntaste abschliessen ... " read dir while [ $dir ]; do echo "Kapitel ~/www/$skript/$dir wird bearbeitet" echo cat ~/tmp/dateilistea | sed -n "/$dir\//p" > ~/tmp/dateilisteb # Modifizieren der einzelnen htm-Dateien datei_0=$(head -1 ~/tmp/dateilisteb) while [ $datei_0 ]; do echo "Es wird die Datei ~/www/$skript/$datei_0 modifiziert" # Anpassung der Bildlinks sed "s/src=\"/src=\"\\$skript\\/\\$dir\//g" ~/www/$skript/$datei_0 > ~/tmp/datei_1 # Entfernung des Headers, Einfügung von Seitenumbruechen sed -f ~/bin/html-stapeln-modif2.sed ~/tmp/datei_1 > ~/tmp/datei_2 # hier wird aneinandergekettet cat ~/tmp/datei_2 >> ~/www/skript.htm sed 1d ~/tmp/dateilisteb > ~/tmp/dateilistec mv ~/tmp/dateilistec ~/tmp/dateilisteb datei_0=$(head -1 ~/tmp/dateilisteb) done echo echo -n "Naechstes Kapitel oder Kapiteleingabe mit Returntaste abschliessen ... " read dir echo done rm ~/tmp/dateilistea rm ~/tmp/dateilisteb rm ~/tmp/datei_1 rm ~/tmp/datei_2 echo echo "Die zur Ansicht und zum Ausdruck bestimmte Gesamtdatei skript.htm" echo "liegt nun fertig vor." echo fi ############################################################################### # # Diese Zusammenstellung von Streameditoranweisungen erstellt aus dem # Inhaltsverzeichnis einer Vorlesung eine Liste der Dateien, auf die verwiesen # wird # # behaelt nur Zeilen mit dem String <a href="./Kap_ /<a href=".\/Kap\_/ !d # löscht Zeilen mit Sprungmarke # als Ziel /#/ d # ersetzt alle Zeichen bis zum Beginn des Linkziels # www.pci.tu-bs.de/aggericke/ als Ausgangsverzeichnis s+^.*\(<a href=".\/\)\(.*\)\(">\).*$+\2+g # # ############################################################################### # # Diese Zusammenstellung von Streameditoranweisungen entfernt den Kopf der html-Datei und Verlinkungen # # löscht Zeilen mit String 'meta' als Ziel #/\<META/ d #/\<meta/ d /\<title/ d /\<TITLE/ d #/\<body\>/ d #/\<BODY\>/ d # entfernt für Body s/<body.*>/<body>/g # löscht Verlinkungen s+<a href=.*>\(.*\)</a>+<b>\1</b>+g s+<A HREF=.*>\(.*\)</A>+<B>\1</B>+g # ############################################################################### # # Diese Zusammenstellung von Streameditoranweisungen ... # # fügt vor die Zeile </body> einen Zeilenumbruch ein /<\/body>/ i\ <div style="page-break-before:always" /> # # fügt vor die Zeile </BODY> einen Zeilenumbruch ein #/<\/BODY>/ i\ #<div style="page-break-before:always" />