User:Ulaaneot: Difference between revisions

From ICO wiki
Jump to navigationJump to search
No edit summary
No edit summary
Line 1: Line 1:
== Quest 26 ==
Kirjutada skript, mis otsib üles kõik .html failid ning kirjutab iga faili html dokumendi pealkirja failid.html faili. Loodud html fail (failid.html) peab sisaldama .html faile linkidena, ehk sinna klikates suunab asukohta, kus fail asub.
== Lahendus 1 (arvestamiseks) ==
== Lahendus 1 (arvestamiseks) ==



Revision as of 17:08, 27 May 2011

Quest 26

Kirjutada skript, mis otsib üles kõik .html failid ning kirjutab iga faili html dokumendi pealkirja failid.html faili. Loodud html fail (failid.html) peab sisaldama .html faile linkidena, ehk sinna klikates suunab asukohta, kus fail asub.


Lahendus 1 (arvestamiseks)

Versioon 1.0

Bash Quest oli koostatud vigaselt, sest .html faili esimesel real on tavaliselt <html> blokk.

Siiski on Questi esialgne lahendus kontrollitud ja töötab:

#!/bin/bash
# Autor: Urmo Laaneots
# Versioon: 1.0
# Skript otsib üles kõik .html failid ja kirjutab faili esimese rea ja aadressi faili failid.html.
# Määrame failinime, kuhu lõpptulemus kirjutatakse
FILENAME=failid.html
# Loome html faili alguse vastavalt W3 standarditele ja kirjutame selle faili
echo "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">
<html>
<head>
<title>.html failid</title>
<meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\" /> 
</head>
<body>" > $FILENAME
# `Otsime kõik .html failid süsteemist ja paneme need massiivi
files=( `find / -type f -name "*.html"` ) 
# Tsükkel, mis käib kõik massiivi liikmed läbi
for (( c=1; c<${#files[@]}; c++ )); do
	# Loeme failide esimese rea ja paneme selle muutujasse
	FIRSTLINE=`head -n 1 ${files[$c]}`
	# Kirjutame faili esimese rea .html faili
	echo "Faili esimene rida: <textarea>$FIRSTLINE</textarea><br />" >> $FILENAME
	# Kirjutame faili aadressi .html faili
	echo "Faili asukoht: <a href="${files[$c]}" target="_new">${files[$c]}</a><br />" >> $FILENAME
done
# Lõpetame .html faili
echo "</body>
</html>" >> $FILENAME
# Teavitame kasutajat scripti töö lõpetamisest
echo "Done!"


Bash Questi õige lahendus

Questi lahendus, mis vastab Margus Ernitsa poolt parandatud questile.

Script kirjutab <title></title> blokkide vahele jääva info .html faili.


#!/bin/bash
# Autor: Urmo Laaneots
# Versioon: 2.0
# Quest 26
# Skript otsib süsteemist üles kõik .html failid ja kirjutab faili pealkirja (<title></title>) ja aadressi faili failid.html.
echo "Skript otsib süsteemist üles kõik .html failid ja kirjutab faili pealkirja (<title></title>) ja aadressi faili failid.html"
# Määrame failinime, kuhu lõpptulemus kirjutatakse
FILENAME=failid.html
# Loome html faili alguse vastavalt W3 standarditele ja kirjutame selle faili
echo "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">
<html>
<head>
<title>.html failid</title>
<meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\" /> 
</head>
<body>" > $FILENAME
# `Otsime kõik .html failid süsteemist ja paneme need massiivi
files=( `find / -type f -name "*.html"` ) 
# Tsükkel, mis käib kõik massiivi liikmed läbi
for (( c=1; c<${#files[@]}; c++ )); do
	# Loeme failide <title> bloki ja valime seal ainult pealkirja ning paneme selle muutujasse
	TITLE=`grep -i "<title>" ${files[$c]} | cut -f 2 -d ">" | cut -f 1 -d "<"`
	# Kirjutame faili pealkirja .html faili
	echo "<i>Faili pealkiri:</i> <b>$TITLE</b><br />" >> $FILENAME
	# Kirjutame faili aadressi .html faili
	echo "<i>Faili asukoht:</i> <a href="${files[$c]}" target="_new">${files[$c]}</a><br />" >> $FILENAME
done
# Lõpetame .html faili
echo "</body>
</html>" >> $FILENAME
# Teavitame kasutajat scripti töö lõpetamisest
echo "Done!"