Enradare

Enradare

Enradare i programmeringssammanhang är program som skrivs på en rad och avslutas med Enter

Enradarna är oftast kryptiska men inte avsiktligt tillkrånglade och utför (oftast) nyttiga saker. Denna blogg är ett hobbyprojekt, men bygger även på erfarenheter ur arbetslivet. Nya besökare, se första inlägget.

Skapa default.html automatiskt där index.* inte existerar

Bash, Ubuntu 10.04Skapad av M.O.B. 2013-06-29 21:36

mypwd=$(pwd); cat dirswoindex.txt | while read dir; do echo "$mypwd/$dir"; cd "$mypwd/$dir"; ls -1ap | sed 's|\(^.*$\)|<a href=\"\1\"\>\1</a><br>|' > default.html ; mv default.html b_i ; echo '<!DOCTYPE HTML SYSTEM "about:legacy-compat"><html><head></head><body>' > h_i ; echo '</body></html>' > t_i ; cat h_i b_i t_i > default.html ; rm h_i b_i t_i ; done

Syftet är att man skall kunna surfa runt i filhierarkin trots att man inte har en webbserver som automatiskt genererar index-filer (innehållsförteckningar). Det finns en bugg i Ubuntu när man har monterat FTP-servrar som lokala filsystem som yttrar sig i att lägg till (>>) inte fungerar. Därför kringgår jag den buggen genom att skapa flera filer och slå ihop dem och sedan radera beståndsdelarna. Ovanstående är sista steget och föregås av:

awk 'NR==FNR{l[$0];next;} !(FNR in l)' lines.txt dirs.txt > dirswoindex.txt

Syftet med ovanstående rad är att ta bort de rader ur en fil (dirs.txt) som finns numrerade i en annan fil (lines.txt).

cat dirswindex.txt | while read dir; do grep -n "^$dir$" dirs.txt; done | sed 's|:.*$||' | sort -n | uniq > lines.txt

Ovanstående rad genererar radnummer för de rader som finns i en annan fil (dirswindex.txt) vars rader skall tas bort ur huvudfilen (dirs.txt).

find . -type d -name '*' | sort > dirs.txt

Ovanstående rad genererar en fil med alla underkataloger och är den fil ur vilken rader skall tas bort.

find . -name 'index.*' | sort | sed 's|/index\..*||' > dirswindex.txt

Ovanstående rad genererar en fil med alla underkataloger som innehåller t.ex. index.html, index.htm eller index.php.

  • Kommentarer(0)//enradare.orbin.se/#post45