Kirjoittaja Aihe: pieni bash-skripti: index.html:n generointi kansion tiedostoista  (Luettu 7408 kertaa)

aapo

  • Käyttäjä
  • Viestejä: 195
    • Profiili
Tässä pieni bash--skripti, joka generoida index.html:n kansion sisällöstä: (jos http-serverisi ei tee sitä lennosta itse). Huomioi pelkät html-tiedostot. Jos ajaa kahdesti peräkkäin, niin myös index.html:ään tulee linkki.
Koodia: [Valitse]
echo "<html><body>" > index.html
for i in $( ls *.html ); do
 echo -n "<a href=\"" >> index.html
 echo -n $i >> index.html
 echo -n "\">" >> index.html
 echo -n $i >> index.html
 echo -n "</a>" >> index.html
 echo  "<br>" >> index.html
done
echo "</body></html>" >> index.html

mgronber

  • Käyttäjä
  • Viestejä: 1458
    • Profiili
Nykyinen skriptisi linkittää index.html:n jo ensimmäisellä ajolla eikä vasta toisella. Jos halutaan että tiedostoon index.html ei linkata lainkaan niin se onnistuu lisäämällä for-silmukan alkuun alla oleva rivi.

Koodia: [Valitse]
    [ "$i" = "index.html" ] && continue

Generoitu html ei nykyisellään ole validia.

aapo

  • Käyttäjä
  • Viestejä: 195
    • Profiili
Joo tosiaan, kiitos huomiosta.
Ehkä helpommalla pääsee kun pistää
for i in $( ls *.html | grep -v "index.html" ); do

Mitäs jää validista puuttumaan? Meinaatko meta juttuja, vai onko siinä joku ihan virhe?

mgronber

  • Käyttäjä
  • Viestejä: 1458
    • Profiili
Mitäs jää validista puuttumaan? Meinaatko meta juttuja, vai onko siinä joku ihan virhe?

No ainakin dokumenttityyppi ja header-osio. En muista kuuluiko header-osioon vielä joitakin pakollisia tagejakin.

W3C:n validaattorilla nuo kuitenkin selviävät joko lähettämällä generoitu tiedosto tai kopioimalla generoidun tiedoston sisältö. Siitä sitten iteroimaan virheilmoitusten avulla kunnes tuotettu lopputulos on validia :)

SuperOscar

  • Käyttäjä
  • Viestejä: 3993
  • Ocatarinetabellatsumtsum!
    • Profiili
    • Legisign.org
En muista kuuluiko header-osioon vielä joitakin pakollisia tagejakin.

Käsittääkseni vain <title>...</title>.
pöytäkone 1, kannettavat 1–3: Debian GNU/Linux 12; pöytäkone 2: openSUSE Tumbleweed; NUC: openSUSE Leap 15.5; RPi 1: FreeBSD 13.2-RELEASE; RPi 2: LibreELEC 11

aapo

  • Käyttäjä
  • Viestejä: 195
    • Profiili
Nyt menee validaattorilta läpi. Kiitos kommenteista. Tässä tulee kokonainen skripti, joka on minusta jopa ihan hyödyllinen.
Pointtina on siis tehdä lähdekoodin online-selaaminen mahdollisimman helpoksi.
Bazaarista hakee aina uusimman version, tekee c-tiedostoista html:ää (ehkä headereistakin voisi tehdä) ja generoi indexin.
Lopputuloksen voi nähdä osoitteessa: http://lauta.dyndns.org/aaplot_src/index.html
(itse tuosta projektista aloitan kohta erillisen viestiketjun)

Koodia: [Valitse]
rm *.c
rm *.html
cd aaplot
bzr merge
cp *.c ../
cd ..

source-highlight *.c

echo '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">' >>index.html
echo "<html>" >> index.html
echo "<title>aaplot higlighted sources</title>" >> index.html
echo "<body>" >> index.html
echo "<h1>Highlighted sources of project aaplot</h1>" >> index.html
echo '<a href="http://code.google.com/p/aaplot">Project Home: Manuals/API/etc</a><hr>'   >>index.html

for i in $( ls *.html | grep -v "index.html"); do
 echo -n "<a href=\"" >> index.html
 echo -n $i >> index.html
 echo -n "\">" >> index.html
 echo -n $i >> index.html
 echo -n "</a>" >> index.html
 echo  "<br>" >> index.html
done

echo "<hr>" >> index.html
echo '<p>    <a href="http://validator.w3.org/check?uri=referer"><img'   >>index.html
echo '        src="http://www.w3.org/Icons/valid-html32"'   >>index.html
echo '         height="31" width="88"></a></p>' >>index.html

echo "</body></html>" >> index.html


mgronber

  • Käyttäjä
  • Viestejä: 1458
    • Profiili
Pitkät yhtenäiset pätkät olisi ehkä parempi tulostaa here-documents ominaisuuden avulla.

Koodia: [Valitse]
cat <<EOF >index.html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html>
<title>aaplot higlighted sources</title>
<body>
<h1>Highlighted sources of project aaplot</h1>
<a href="http://code.google.com/p/aaplot">Project Home: Manuals/API/etc</a><hr>
EOF

Mielestäni muuten tuhoat skriptisi alussa lähdekooditiedostot turhaan.

Mistofelees

  • Käyttäjä
  • Viestejä: 641
    • Profiili
Tässä pieni bash--skripti, joka generoida index.html:n kansion sisällöstä: (jos http-serverisi ei tee sitä lennosta itse). Huomioi pelkät html-tiedostot. Jos ajaa kahdesti peräkkäin, niin myös index.html:ään tulee linkki.

Pieni on kaunista.

Itse tein hieman laajemman kokonaisuuden kyllästyttyäni Apachen hieman aneemiseen dokumenttisivustoon. Tein Perl scriptin, joka generoi kuva- ja dokumenttiarkistoa lennosta. Materiaali viedään serverille samballa ja scripti generoi tarvittavat parametritiedostot lennossa. Hakemistoihin, tiedostoihin ja kuviin voi liittää selitetekstit. Ohjelma näyttää thumbsit ja exifit.
Paketti koostuu kahdesta tiedostosta: siemenenä oleva werkkosivu index.shtml, sekä yksi perl-scripti, jota kutsutaan 'rekursiivisesti' (hipsuissa, koska kyseessä ei ole oikea rekursio.)
Mukana on alkeellinen salasanasuojaus, jottei kuvatekstejä pääse muokkaamaan kuin halutuilta koneilta.

http://ptm2.cc.utu.fi/~ptmusta/kuvat/

Olisin ilahtunut, jos joku olisi kiinnostunut asiasta sen verran, että tekisi tästä vielä fiksumman version yleiseen jakeluun. Itselle riitti, että sain omat valokuva-arkistomme järjestykseen molemmissa servereissämme.