GPN8:Code

aus dem Wiki des Entropia e.V., CCC Karlsruhe
Zur Navigation springenZur Suche springen

Code und Basteleien

Auf dieser Seite kann sich jeder verewigen, der auf der GPN etwas programmiert oder gebaut hat.

user:kamikaze

Objektorientierte Shell-Skripte

Ich habe ein kleines Framework für objektorientierte Shell-Skripte geschrieben. Das wird irgendwann in http://bsdadminscripts.sf.net/ genutzt.

Den Code habe ich mal vorläufig auf BSDForen.de veröffentlicht: http://www.bsdforen.de/showthread.php?t=23245

Code-Kommentare

Im Rahmen einer kleinen Unterhaltung über Code-Kommentare, habe ich dieses kleine Skript hier produziert, das ausspuckt wir groß der Kommentaranteil in einem Shell-Skript ist. Das ganze funktioniert unter FreeBSD RELENG_7. Kann sein, das man mit GNU ein paar Parameter anpassen muss.

#!/bin/sh -f

apply -3 "sh -c 'echo %1: \$((%2 \* 100000 / %3 / 1000)).\$((%2 \* 100000 / %3 % 1000)) %'" $( (
	echo lines words bytes
	cat "$@" | grep -Exv '#\!.*|[[:space:]]*' | grep -E '^[[:space:]]*#' | wc
	cat "$@" | grep -Exv '#\!.*|[[:space:]]*' | wc
) | rs -t 3 3)

Update

Inzwischen habe ich erfahren, dass die Befehle apply und rs unter den gängigen GNU/Linux-Systemen nicht verfügbar sind. Also erkläre ich hier mal was sie machen:

rs -t 3 3
Betrachtet die eingehenden Daten als 3x3 Matrix und transformiert sie.
apply -3
Führt einen Befehl mit jeweils 3 der Parameter die nach dem Befehl kommen aus. Bei 9 Parametern wird der Befehl also 3 mal ausgeführt.

Benutzer:Nomeata

Für L-seed gabs dieses „Alle Twit zu einem Thema suchen und eines nach dem anderen eine Minute lang in eine Datei schreib“-Skript. Braucht libwww-perl, libxml-xpath-perl und lynx.

while sleep 60;
do
GET "http://search.twitter.com/search.atom?q=%23GPN8&since_id=$(cat msg.id)" > msg.atom 
if xpath -q -e "//entry" msg.atom |grep -q .
then
	xpath -q -e "//entry[last()]/id/text()" msg.atom |cut -d: -f3 > msg.id
	echo -n \
	$(echo $(
		xpath -q -e '//entry[last()]/author/name/text()' msg.atom  |
		lynx -dump -stdin|lynx -dump -stdin -nolist |
		cut -d\( -f1
	))"@twitter:" \
	$(
		xpath -q -e '//entry[last()]/content/text()' msg.atom  |
		lynx -dump -stdin|lynx -dump -stdin -nolist
	) \
	 > msg.txt
else
	echo -n > msg.txt
fi
done