#!/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