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.

Ladda ner och extrahera en zip-fil utan att mellanlagra

Bash, Ubuntu 10.04Skapad av M.O.B. 2014-05-04 18:08
wget -qO- http://packages.riscosopen.org/RISC-OS_Pico.zip | bsdtar -xvf- -C /media/riscospico/
Detta laddar ner och packar upp zip-filen på ett SD-kort anslutet via en adapter. Notera att SD-kortet i mitt fall heter /media/... men troligen heter något annat hos dig.

Om SD-kortet inte redan är formaterat så gör detta först:
sudo fdisk -l
För att hitta rätt enhet genom att t.ex. känna igen den på storleken.

Obs! Byt ut sde mot rätt enhet.
umount /dev/sde
sudo mkdosfs -n riscospico -F 32 -I /dev/sde
I mitt fall tog jag ut USB-adaptern och satte in den igen för att montera den.

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

Uppdatera översättning i Scratch 2 offlineredigeraren

Bash, Ubuntu 10.04Skapad av M.O.B. 2014-02-25 09:12

curl -L -o editor.po http://translate.scratch.mit.edu/download/sv/editor/editor.po ; curl -L -o blocks.po http://translate.scratch.mit.edu/download/sv/blocks/blocks.po ; sudo cat blocks.po editor.po > '/opt/Scratch 2/share/locale/sv.po'


Detta uppdaterar översättningen av Scratch 2 offlineredigeraren i Linux. Tag först backup av den ursprungliga sv.po med:
cp '/opt/Scratch 2/share/locale/sv.po' sv.po

Byt språkkoden sv mot valfri annan språkkod.

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

Sök efter text i pdf-filer

Bash, Ubuntu 10.04Skapad av M.O.B. 2013-12-11 22:30
find . -name '*.pdf' -exec sh -c 'pdftotext "{}" - | grep -H --label="{}" --color -i "RISC"' \; 2> /dev/null

Denna rad hittar texten RISC/risc/Risc o.s.v. bland alla pdf-filer.

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

Hämta Scratch 2-projekt

Bash, Ubuntu 10.04Skapad av M.O.B. 2013-10-02 01:06

proj=12612306; mkdir sb2tmp; cd sb2tmp; curl -L http://projects.scratch.mit.edu/internalapi/project/$proj/get/ 2> /dev/null | tee project.json | grep -i MD5 | cut -d' ' -f2 | sed 's/[\",]//g' | while read file; do curl -L -o $file http://scratch.mit.edu/internalapi/asset/$file/get 2> /dev/null; done; i=1; while [ $i -le `expr $( ls -1 | wc -l ) - 2` ]; do sed -i "{s/ID\": -1/ID\": $i/;t end;b;:end;n;b end}" project.json; i=`expr $i + 1`; done; i=0; ( grep penLayerMD5 project.json; grep '\(baseLayerMD5\|md5\)' project.json ) | cut -d' ' -f2 | sed 's/[",]//g' | while read file; do ext=`echo $file | cut -d. -f2`; mv $file $i.$ext; i=`expr $i + 1`; done; zip $proj.sb2 *; mv *.sb2 ..; cd ..; rm -r sb2tmp

Detta hämtar ett Scratch 2-projekt (sb2-fil) med det angivna numret. Notera att detta ej fungerar för Scratch 1.4-projekt, men för dem finns en enklare lösning, se annat inlägg.

Man kan också hämta ner alla projekten i en studio:

studio=263477; curl -L http://scratch.mit.edu/site-api/projects/in/$studio/1/ 2> /dev/null | sed -n '/title.*projects\/[0-9]*/ {s/.*projects\/\([0-9]*\).*/\1/;p}' | while read proj; do echo $proj; mkdir sb2tmp; cd sb2tmp; curl -L http://projects.scratch.mit.edu/internalapi/project/$proj/get/ 2> /dev/null | tee project.json | grep -i MD5 | cut -d' ' -f2 | sed 's/[\",]//g' | while read file; do curl -L -o $file http://scratch.mit.edu/internalapi/asset/$file/get 2> /dev/null; done; i=1; while [ $i -le `expr $( ls -1 | wc -l ) - 2` ]; do sed -i "{s/ID\": -1/ID\": $i/;t end;b;:end;n;b end}" project.json; i=`expr $i + 1`; done; i=0; ( grep penLayerMD5 project.json; grep '\(baseLayerMD5\|md5\)' project.json ) | cut -d' ' -f2 | sed 's/[",]//g' | while read file; do ext=`echo $file | cut -d. -f2`; mv $file $i.$ext; i=`expr $i + 1`; done; zip $proj.sb2 * > /dev/null; mv *.sb2 ..; cd ..; rm -r sb2tmp; done

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

Totala speltiden för en samling mp3-filer

Bash, Ubuntu 10.04Skapad av M.O.B. 2013-09-11 01:20
mp3info -p "%S\n" *.mp3 | awk '{s+=$1} END {s/=3600; print s}'

Detta visar den totala speltiden i timmar på decimalform för alla mp3-filer i aktuell mapp.



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

Sortera mp3-filer efter längd

Bash, Ubuntu 10.04Skapad av M.O.B. 2013-09-07 23:54

mp3info -p "%f;%S\n" Music/A\ Masterpiece\ Collection/*.mp3 | sort -t';' -k2nr

Lista mp3-filer sorterade efter längd på ljudet med längsta först.

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

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

Hitta alla större filer & visa sorterat

Bash, Ubuntu 10.04Skapad av M.O.B. 2013-05-24 13:42

find /media/SEA_FAT32/ -size +512M 2> /dev/null | sed 's/\(.*\)/"\1"/' | xargs ls -l | sort -k5nr | cut -d' ' -f5- | less

Hittar alla filer på en enhet som är större än 0,5 GB och visar dem i fallande storleksordning.

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