[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [Debian]: Paketleichen finden



On Thu, Jan 07, 1999 at 09:52:57AM +0100, Cord Beermann wrote:
>               
> Gibts denn auch ein Skript, 
> 
> * welches Files die nicht im Packagemanagement sind findet

cruft

> * Files die im Packagemanagement sind, aber nicht auf Platte, anmaekelt

Mmmh. Du tust ja gerade so als bräuchte man dafür ein extra Debian Paket:

=========================== cut ===========================================
#!/bin/sh
#
# check-exist, written by Marcus Brinkmann. I hereby set this shell command
#              in the Public Domain. Based on an idea by Cord Beermann.

for p in /var/lib/dpkg/info/*.list
do
	for f in `cat $p`
	do
		if [ ! -e $f ] ; then
			echo -n `basename $p:` $f
			if [ -L $f ] ; then
				echo \ exists but is a broken link.
			else
				echo \ is missing.
			fi
		fi
	done
done
========================== cut ============================================

(Einfach cut&paste in die Shell, oder in eine Datei speichern und "chmod +x
dateiname")

> * und die *.dpkg-(old|new) meldet?

Geht noch einfacher:

find /etc -name \*dpkg-dist -o -name \*dpkg-old -o -name \*dpkg-new

Oder einfach nur:

find /etc -name \*dpkg-old -o -name \*dpkg-new

Kurze Einführung:
Das erste ist ein Shell Script. Die erste schleife geht durch alle Dateien
/var/lib/dpkg/info/*.list und führt das zwischen do/done aus, setzt jeweils
die envrionment variable $p auf den Dateinamen des pakets.list files.
Dadrin befindet sich eine Schleife, die für jede Zeile in der *.list Datei
ausgeführt wird (`cat` -> cat ausführen, output hier in die Schleife
einbringen), und zwar wird $f (für file) auf diesen Dateinamen, der in
der Zeile steht, ausgeführt.

[ ] sind synonyme fpr den "test" befehl. ("info test" oder "man test" sagt mehr).
 -e heißt: existiert die Datei? "!" heißt: Nimm das Gegenteil an.

"basename" gibt nur den Dateinamen zurück, ohne den kompletten Pfad. "echo -n"
heißt: Drucke, aber kein Newline, also kein Zeilenumbruch.

-L prüft, ob das vielleicht ein Link ist, der ins nichts führt (-L prüft nur
auf link, aber wir wissen bereits, die Datei ! -e = existiert nicht).

Das war's schon.

Über den "find" Befehl erfährst Du mehr mit "info find" oder "man find".

Viel Spaß beim Shell Skripten!

Marcus

-- 
"Rhubarb is no Egyptian god."        Debian GNU/Linux        finger brinkmd@ 
Marcus Brinkmann                   http://www.debian.org    master.debian.org
Marcus.Brinkmann@ruhr-uni-bochum.de                        for public  PGP Key
http://homepage.ruhr-uni-bochum.de/Marcus.Brinkmann/       PGP Key ID 36E7CD09
------------------------------------------------
Um sich aus der Liste auszutragen schicken Sie
bitte eine E-Mail an majordomo@jfl.de die im Body
"unsubscribe debian-user-de <deine emailadresse>"
enthaelt.
Bei Problemen bitte eine Mail an: Jan.Otto@jfl.de
------------------------------------------------
Anzahl der eingetragenen Mitglieder:     674


Reply to: