Logbuch
Galerie
Programme
Favoriten
Archiv
Spielplatz
Impressum
Freitag
27. Feb. 2009
um 20:34 Uhr

Weg damit!

Version 0.0.1 herunterladen!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#!/bin/bash
 
# Dieses kleine Werkzeug entfernt laestige "Dinge" wie nicht mehr
# benoetigte Dateien oder Prozesse "in einem Schwung". Es ist erfuellt
# meine persoenlichen Anforderungen, ist aber deutlich verbesserungs-
# wuerdig.
 
# Nicht vergessen: Programm ausfuerbar machen (chmod +x "programmname")!
 
# Autor:		Andrej Stieben, stieben.de
# Aktuelle Version:	0.0.1
# Letzte Aenderung:	27. Februar 2009
# Historie:
#	27.02.09	Erste Version; "rm" und "kill" funktionieren.
 
hilfetext()
{
  echo
  echo "Dieses Programm entfernt Dinge aus einer Liste, z.B. Dateien"
  echo "und Prozesse."
  echo
  echo "Syntax:"
  echo "	./\"programmname\" kriterium kommando [argumente]"
  echo
  echo "\"kriterium\": Der Teil, nach dem gefiltert werden soll."
  echo "\"kommando\" : Unterstuetzt momentan \"rm\" und \"kill\"."
  echo "\"argumente\":"
  echo "- Bei \"rm\" Angabe darueber, in welchem Verzeichnis"
  echo "  geloescht werden soll. Wenn keine Angabe vorliegt, wird vom"
  echo "  aktuellen Verzeichnis ausgegangen."
  echo "- Bei \"kill\" Angabe ueber das zu sendende Signal. Standard-"
  echo "  signal ist SIGKILL bzw. \"-9\", falls die Angabe fehlt."
  echo
  echo "Weitere (sinnlose) Argumente werden ignoriert."
  echo
  echo "Beispiele:"
  echo "	(1) ./wegdamit \"~\" rm perl/"
  echo "	==> Entfernt alle temporaeren Dateien (mit der"
  echo "	    Endung \"~\") aus dem Unterverzeichnis perl."
  echo "	(2) ./wegdamit firefox kill -9"
  echo "	==> Toetet alle Firefox-Prozesse."
  exit
}
 
if [ $# = 0 ] ; then
  hilfetext
fi
 
if [ $1 = "--help" -o $1 = "-h" -o $1 = "?" -o $1 = "/?" ] ; then
  hilfetext
fi
 
kriterium=$1
kommando=$2
 
if [ $kommando = "rm" ] ; then
  echo "Dateien werden geloescht (falls vorhanden)..."
  if [ $# = 3 ] ; then
    cd $3
  fi
  anzahl_zeilen=`ls -al | grep $kriterium | awk '{ print $8 }' | wc -l`
  temp_n=0
  while [ $temp_n -lt $anzahl_zeilen ] ; do
    rm `ls -al | grep $kriterium | awk '{ print $8 }' | head -1`
    temp_n=`echo $temp_n + 1 | bc`
  done
  echo "Fertig!"
  exit
fi
 
if [ $kommando = "kill" ] ; then
  echo "Prozesse werden getoetet (falls vorhanden)..."
  if [ $# = 3 ] ; then
    signal=$3
  else
    signal="-9"
  fi
  anzahl_zeilen=`ps -A | grep $kriterium | awk '{ print $1 }' | wc -l`
  temp_n=0
  while [ $temp_n -lt $anzahl_zeilen ] ; do
    kill $signal `ps -A | grep $kriterium | awk '{ print $1 }' | head -1`
    temp_n=`echo $temp_n + 1 | bc`
  done
  echo "Fertig!"
  exit
fi

Das Wahlpflichtfach "Unix und Shellprogrammierung" an der Hochschule hat sich gelohnt; ich kann nun selbst Werkzeuge schreiben, die mir die Arbeit erleichtern. Das jüngste (und eigentlich auch erste) Beispiel dafür ist "Weg damit!", eine Art Stapelverarbeitung für Dinge, die man aus dem System entfernen möchte. Bisher brauchte ich nichts anderes als die beiden Kommandos rm (für Dateien) und kill (für Prozesse). Ich bin jedoch sehr gern für Verbesserungsvorschläge offen; dass man es (viel) besser machen kann, ist mir klar.

Abonnieren · Trackback · Kategorie: Bash · Schlagwörter: , , ,

ICQ-Gesprächsverlauf IA »  

Einen Kommentar schreiben



Erlaubte Auszeichnungen im Kommentarfeld:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">



Abonnieren: Beiträge · Kommentare

Kategorien