BlogBlog ÜbersichtjailscriptportsoptFreeBSDLinksThermoskanne

Identische Dateien löschen

Mit Hilfe von samesame lassen sich Identische Dateien aufspüren und falls gewünscht löschen. Im FreeBSD-Portbaum findet man samesame unter sysutils/samesame:

# cd /usr/ports/sysutils/samesame && make install clean

Im folgenden Beispiel werden mit Hilfe von samefile identische Dateien gefunden und mit Hilfe von samerm jeweils alle bis auf eine der identischen Dateien gelöscht.

# ls -l
total 6
-rw-r--r--  1 test  wheel  8 28 Nov 13:59 a
-rw-r--r--  1 test  wheel  4 28 Nov 13:56 b
-rw-r--r--  1 test  wheel  4 28 Nov 13:58 c
# find . | samefile -i | samerm
# ls -l
total 4
-rw-r--r--  1 test  wheel  8 28 Nov 13:59 a
-rw-r--r--  1 test  wheel  4 28 Nov 13:56 b

Möchte man die Dateien nicht löschen, so kann mit sameln die Datei durch einen Hardlink ersetzt werden:

# ls -1i
16468 a
16469 b
16453 c
# find . | samefile -i | sameln
# ls -1i
16468 a
16469 b
16469 c

Mehr Informationen zu samesame findet man in den Manpages samesame(1), samefile(1) und sameln(1).

Comments (2)  Permalink

Programm mit which finden

Möchte man herausfinden ob sich ein Programm innerhalb eines Verzeichnisses befindet, welches in der PATH-Variable gesetzt ist, so kann dazu which verwendet werden:

# which portmaster
/usr/local/sbin/portmaster
# which bla
bla: Command not found.

Benutzer der csh verwenden dabei eine in der Shell eingebaute Version von which. Verwendet man eine Shell welche which nicht beinhaltet, so kann /usr/bin/which aus dem FreeBSD-Basissystem verwendet werden:

# which which
which: shell built-in command.
# /usr/bin/which which
/usr/bin/which

Zusätzlich zu which kann in der csh auch where verwendet werden, welches den Shell-eigenen und den im Dateisystem gefundenen Befehl anzeigt, sollten beide vorhanden sein:

# where which
which is a shell built-in
/usr/bin/which

Mehr Informationen zu which and where findet man in der Manpage tcsh(1) und which(1).

Related Entries:
Piepston der tcsh deaktivieren
Gespeicherte Optionen nach OptionsNG konvertieren
Ports-Subversion-Repository spiegeln
sysinstall-Ersatz für neuere FreeBSD-Versionen
Alte FreeBSD-Port Patchdateien aufsplitten
 Permalink

Dateien mit Hilfe eines Editors umbenennen

Mit Hilfe von vils lassen sich Dateien mit Hilfe des Standard-Editors umbenennen. Im FreeBSD-Portbaum findet man vils unter sysutils/vils:

# cd /usr/ports/sysutils/vils && make install clean

Zuerst wechselt man in das Verzeichnis in dem die Dateien umbenannt werden sollen und ruft danach vils auf:

# ls -1
datei1
datei2
datei3
datei4
# vils

Im Standard-Editor wird danach eine Liste mit allen Dateien des Verzeichnis angezeigt:

0001 datei1
0002 datei2
0003 datei3
0004 datei4

Diese Liste kann nun angepasst werden:

0001 datei1neu
0002 datei2
0003 datei3test
0004 datei 

Speichert man das Ergebnis und verlässt den Editor werden die Dateien umbenannt:

# ls -1
datei
datei1neu
datei2
datei3test

Mehr Informationen zu vils findet man im Skript selber:

# more /usr/local/bin/vils
 Permalink

Webseiten auf Änderungen überprüfen

Mit Hilfe von netstiff lassen sich Webseiten auf Änderungen überprüfen. Im FreeBSD-Portbaum findet man netstiff unter www/netstiff:

# cd /usr/ports/www/netstiff && make install clean

Mit der -c Option kann nun das Konfigurationsmenu aufgerufen werden. Darin werden die URLs hinzugefügt, welche überwacht werden sollen:

# netstiff -c
netstiff 20080331      Copyright (C) 2004, 2007-2008  Stephan Beyer, GNU GPL

This is the netstiff 20080331 interactive configuration tool.
netstiff uses a simple human-readable configuration file
        /home/beat/.netstiff/config
but you can always use this tool by executing `/usr/local/bin/netstiff -c' 
on the command line.


  [0]   Global settings
  [1]   http://www.chruetertee.ch/test.html settings
  [2]   http://tinderbox.chruetertee.ch/tb/ settings
  [3]   http://zaphod.chruetertee.ch/tb/ settings
  [n]   Add new URI

  [f]   Finished (exit & save)
  [x]   Exit without saving

  Your choice [n/f/x/0/1/2/3]: 1

  [u]   URI: http://www.chruetertee.ch/test.html
  [m]   Test method: diff
  [x]   Menu title: [not set]

  [a]   User-Agent: Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.9.1.4) Gecko/20091028 Firefox/3.5.4 [global]
  [r]   Referer: [not set]
  [l]   Accept-Language: [not set]
  [b]   Range: [not set]
  [t]   Timeout: [not set]
  [p]   Proxy: [not set]
  [ ]   Command HTML dumper: [only available w/ html]
  [s]   Start regexp: /header/
  [e]   End regexp: [not set]

  [d]   Delete URI from list.
  [f]   I have finished.

  Your choice [u/m/x/a/r/l/b/t/p/s/e/d/f]:

Beim ersten Aufruf von netstiff werden die angegebenen URLs heruntergeladen. Beim nächsten Aufruf von netstiff wird die aktuelle Version der Webseite mit der gespeicherten Version verglichen. Werden Unterschiede festgestellt so werden diese angezeigt:

# netstiff 
diff --netstiff diff http://www.chruetertee.ch/test.html
--- http://www.chruetertee.ch/test.html
+++ http://www.chruetertee.ch/test.html
@@ -1,3 +1,8 @@
-<html><head><title>Object moved</title></head><body>
-<h2>Object moved to <a href="http://www.chruetertee.ch">here</a>.</h2>
-</body></html>
+<html>
+<head>
+<meta http-equiv="refresh" content="0; url=http://www.chruetertee.ch">
+</head>
+<body>
+
+</body>
+</html>

Mehr Informationen zu netstiff findet man in der Manpage netstiff(1).

 Permalink

Reduzierte Ausgabe von make search im Portbaum

Mit Hilfe von make search kann im FreeBSD-Portbaum nach Ports gesucht werden:

# cd /usr/ports
# make search name=fluxbox
Port:   fluxbox-sid-pack-20031226_3
Path:   /usr/ports/x11-themes/fluxbox-sid-pack
Info:   Sid themes pack for fluxbox
Maint:  novel@FreeBSD.org
B-deps: 
R-deps: expat-2.0.1 fluxbox-1.1.1 fontconfig-2.6.0,1 freetype2-2.3.9_1 imlib2-1.4.1.000_2,2 jbigkit-1.6 jpeg-7 kbproto-1.0.3 libICE-1.0.4_1,1 libSM-1.1.0_1,1 libX11-1.2.1_1,1 libXau-1.0.4 libXaw-1.0.5_1,1 libXdmcp-1.0.2_1 libXext-1.0.5,1 libXft-2.1.13 libXmu-1.0.4,1 libXp-1.0.0,1 libXpm-3.5.7 libXrandr-1.3.0 libXrender-0.9.4_1 libXt-1.0.5_1 libiconv-1.13.1 libid3tag-0.15.1b libpthread-stubs-0.1 libungif-4.1.4_5 libxcb-1.4 pkg-config-0.23_1 png-1.2.40 printproto-1.0.4 python26-2.6.2_3 randrproto-1.3.0 renderproto-0.9.3 tiff-3.9.1_1 xcb-proto-1.5 xextproto-7.0.5 xmessage-1.0.2_1 xproto-7.0.15
WWW:    http://fluxbox.org/themes.php

Port:   fluxbox-tenr-styles-pack-20071215_1
Path:   /usr/ports/x11-themes/fluxbox-tenr-styles-pack
Info:   Tenner themes pack for fluxbox
Maint:  miwi@FreeBSD.org
B-deps: kbproto-1.0.3 libX11-1.2.1_1,1 libXau-1.0.4 libXdmcp-1.0.2_1 libpthread-stubs-0.1 libxcb-1.4 pkg-config-0.23_1 python26-2.6.2_3 xcb-proto-1.5 xproto-7.0.15
R-deps: expat-2.0.1 fluxbox-1.1.1 fontconfig-2.6.0,1 freetype2-2.3.9_1 imlib2-1.4.1.000_2,2 jbigkit-1.6 jpeg-7 kbproto-1.0.3 libICE-1.0.4_1,1 libSM-1.1.0_1,1 libX11-1.2.1_1,1 libXau-1.0.4 libXaw-1.0.5_1,1 libXdmcp-1.0.2_1 libXext-1.0.5,1 libXft-2.1.13 libXmu-1.0.4,1 libXp-1.0.0,1 libXpm-3.5.7 libXrandr-1.3.0 libXrender-0.9.4_1 libXt-1.0.5_1 libiconv-1.13.1 libid3tag-0.15.1b libpthread-stubs-0.1 libungif-4.1.4_5 libxcb-1.4 pkg-config-0.23_1 png-1.2.40 printproto-1.0.4 python26-2.6.2_3 randrproto-1.3.0 renderproto-0.9.3 tiff-3.9.1_1 xcb-proto-1.5 xextproto-7.0.5 xmessage-1.0.2_1 xproto-7.0.15
WWW:    http://tenr.de/styles/styles013.php?a=styles

Port:   fluxbox-1.1.1
Path:   /usr/ports/x11-wm/fluxbox
Info:   A small and fast window manager based on BlackBox
Maint:  beat@FreeBSD.org
B-deps: expat-2.0.1 fontconfig-2.6.0,1 freetype2-2.3.9_1 gettext-0.17_1 gmake-3.81_3 imlib2-1.4.1.000_2,2 jbigkit-1.6 jpeg-7 kbproto-1.0.3 libICE-1.0.4_1,1 libSM-1.1.0_1,1 libX11-1.2.1_1,1 libXau-1.0.4 libXdmcp-1.0.2_1 libXext-1.0.5,1 libXft-2.1.13 libXpm-3.5.7 libXrandr-1.3.0 libXrender-0.9.4_1 libXt-1.0.5_1 libiconv-1.13.1 libid3tag-0.15.1b libpthread-stubs-0.1 libungif-4.1.4_5 libxcb-1.4 pkg-config-0.23_1 png-1.2.40 python26-2.6.2_3 randrproto-1.3.0 renderproto-0.9.3 tiff-3.9.1_1 xcb-proto-1.5 xextproto-7.0.5 xproto-7.0.15
R-deps: expat-2.0.1 fontconfig-2.6.0,1 freetype2-2.3.9_1 imlib2-1.4.1.000_2,2 jbigkit-1.6 jpeg-7 kbproto-1.0.3 libICE-1.0.4_1,1 libSM-1.1.0_1,1 libX11-1.2.1_1,1 libXau-1.0.4 libXaw-1.0.5_1,1 libXdmcp-1.0.2_1 libXext-1.0.5,1 libXft-2.1.13 libXmu-1.0.4,1 libXp-1.0.0,1 libXpm-3.5.7 libXrandr-1.3.0 libXrender-0.9.4_1 libXt-1.0.5_1 libiconv-1.13.1 libid3tag-0.15.1b libpthread-stubs-0.1 libungif-4.1.4_5 libxcb-1.4 pkg-config-0.23_1 png-1.2.40 printproto-1.0.4 python26-2.6.2_3 randrproto-1.3.0 renderproto-0.9.3 tiff-3.9.1_1 xcb-proto-1.5 xextproto-7.0.5 xmessage-1.0.2_1 xproto-7.0.15
WWW:    http://fluxbox.org/

Port:   x11-themes/fluxbox-fluxmod
Moved:  
Date:   2005-10-07
Reason: Project has gone

Port:   x11-wm/fluxbox-devel
Moved:  x11-wm/fluxbox
Date:   2007-03-19
Reason: Merged into x11-wm/fluxbox

Möchte man nun nicht alle Informationen, wie zum Beispiel alle Abhängigkeiten, anzeigen lassen, so kann dazu make quicksearch verwendet werden:

# cd /usr/ports
# make quicksearch name=fluxbox
Port:   fluxbox-sid-pack-20031226_3
Path:   /usr/ports/x11-themes/fluxbox-sid-pack
Info:   Sid themes pack for fluxbox

Port:   fluxbox-tenr-styles-pack-20071215_1
Path:   /usr/ports/x11-themes/fluxbox-tenr-styles-pack
Info:   Tenner themes pack for fluxbox

Port:   fluxbox-1.1.1
Path:   /usr/ports/x11-wm/fluxbox
Info:   A small and fast window manager based on BlackBox

Port:   x11-themes/fluxbox-fluxmod
Moved:  
Date:   2005-10-07
Reason: Project has gone

Port:   x11-wm/fluxbox-devel
Moved:  x11-wm/fluxbox
Date:   2007-03-19
Reason: Merged into x11-wm/fluxbox

Mehr Informationen findet man in der Manpage ports(7). Vielen Dank an Lars für den Tipp und das Erstellen von make quicksearch.

 Permalink

RCS Schlüsselwörter einer Datei anzeigen

Verwaltet man Dateien zum Beispiel mit CVS so können verschiedene RCS-Schlüsselwörter in der Datei gespeichert werden. Damit kann zum Beispiel angezeigt werden, welche Version der Datei verwendet wird. Möchte man diese Informationen auslesen, so kann dazu ident verwendet werden:

# cd /usr/ports/www/firefox35
# ident Makefile
Makefile:
     $FreeBSD: ports/www/firefox35/Makefile,v 1.182 2009/10/28 15:40:12 beat Exp $

Auf FreeBSD ist ident standardmässig im Basissystem vorhanden. Mehr Informationen zu ident findet man in der Manpage ident(1).

 Permalink

mySQL-Aktivität beobachten

Mit Hilfe vom mtop können die zurzeit ausgeführten SQL-Kommandos einer mySQL-Datenbank ähnlich wie Prozesse in top(1) angezeigt werden. Im FreeBSD -Portbaum findet man mytop unter databases/mtop:

# cd /usr/ports/databases/mtop && make install clean

Startet man mtop, so wird man zuerst nach dem Benutzernamen und dem Passwort gefragt mit dem man sich an der Datenbank anmelden möchte. Danach werden die ausgeführten SQL-Kommandos angezeigt. Mit Hilfe der Leertaste kann die Ansicht manuell neu geladen werden:

# mtop
Unable to connect to  as mysqltop, enter another user user: root
Password: ****************
load averages: 0.05, 0.08, 0.06 mysqld 5.0.75-log up 16 day(s),  5:52 hrs
12 threads: 2 running, 1 cached. Queries/slow: 911/0 Cache Hit: 99.53%
Opened tables: 0  RRN: 100.4K  TLW: 0  SFJ: 0  SMP: 0  QPS: 0

ID       USER     HOST             DB           TIME   COMMAND STATE        INFO
47663    root     localhost        mail_queue   2      Query   Writing to n SELECT ... FROM `mail_queue`
47665    root     localhost        tinderbox    1      Query                CHECK TABLE `port_fail_reasons` EXTENDED
47666    root     localhost        tinderbox2   23     Query   copy to tmp  OPTIMIZE TABLE `port_dependencies`
47658    root     localhost                            Query                show full processlist

Mit Hilfe der q-Taste kann mtop wieder verlassen werden. Mehr Informationen zu mtop findet man in der Manpage mtop(1).

 Permalink

Relevante Dateien einer Kernel-Panic sichern

Mit Hilfe von bsdcrashtar können alle relevanten Dateien einer Kernelpanic gesichert werden. Diese können dann zum Beispiel auf einem anderen Rechner analysiert, einem Entwickler zur Verfügung gestellt oder archiviert werden. Im FreeBSD Portbaum findet man bsdcrashtar unter sysutils/bsdcrashtar:

# cd /usr/ports/sysutils/bsdcrashtar && make install clean

Führt man bsdcrashtar aus, werden alle relevanten Dateien (die core-Datei, der Kernel, alle geladenen Kernelmodule und alle im Backtrace erwähnten Quellcode-Dateien) der neusten Kernelpanic gesichert:

# bsdcrashtar
Archiving the crash to /var/crash/crash.15.tar.gz.

Mehr Informationen zu bsdcrashtar findet man in der Manpage bsdcrashtar(8).

 Permalink

JPEG-Dateien auf Fehler überprüfen

Mit Hilfe von jpeginfo können JPEG-Dateien auf Fehler überprüft werden. Im FreeBSD Portbaum findet man jpeginfo unter graphics/jpeginfo:

# cd /usr/ports/graphics/jpeginfo && make install clean

Ruft man jpeginfo ohne Optionen auf, werden verschiedene Informationen zum Bild, wie zum Beispiel die Grösse, angezeigt. Durch die -l Option werden diese Informationen in Spalten gruppiert. Mit der -c Option werden die Bilder auf Fehler überprüft. Sollen defekte Dateien gleich gelöscht werden, kann die -d Option verwendet werden:

# jpeginfo -cl *.jpg
1280 x 1024 24bit Exif  N  247303 1.jpg  [OK]
 100 x 75   24bit Exif  N    2050 2.jpg  [OK]
1704 x 2272 24bit Exif  N 1204099 3.jpg  Corrupt JPEG data: 68 extraneous bytes before marker 0xdb  [WARNING]
  69 x 100  24bit Exif  N    3419 4.jpg  [OK]
  80 x 60   24bit Exif  N    1499 5.jpg  [OK]
1366 x 768  24bit JFIF  N  115880 6.jpg  [OK]
1000 x 756  24bit Exif  N  111401 7.jpg  Corrupt JPEG data: 2 extraneous bytes before marker 0xd9  [WARNING]
1000 x 756  24bit Exif  N  105140 8.jpg  [OK]
  77 x 30   24bit JFIF  N     964 9.jpg  [OK]

Mehr Informationen zu jpeginfo findet man in der Manpage jpeginfo(1).

 Permalink

Wörter zweier Dateien vergleichen

Mit Hilfe von dwdiff können zwei Datei verglichen werden und es werden die geänderten, gelöschten oder hinzugefügten Wörter angezeigt. Im FreeBSD Portbaum findet man dwdiff unter textproc/dwdiff:

# cd /usr/ports/textproc/dwdiff && make install clean

Nun können die beiden zu vergleichenden Dateien an dwdiff übergeben werden. Gelöschte Wörter werden durh [-<Wort>-], hinzugefügte Wörter durch {+<Wort>+} gekennzeichnet:

# cat datei1 
das ist eine test datei
das ist die erste linie
das ist die zweite linie
das ist die dritten linie
# cat datei2
das ist eine test datei
das ist die eine linie
das ist noch die zweite linie
das war eine linie
# dwdiff datei1 datei2 
das ist eine test datei
das ist die [-erste-] {+eine+} linie
das ist {+noch+} die zweite linie
das [-ist die dritten-] {+war eine+} linie

Mit der -s Option werden Statistiken zu den beiden Dateien angezeigt:

# dwdiff -s datei1 datei2
das ist eine test datei
das ist die [-erste-] {+eine+} linie
das ist {+noch+} die zweite linie
das [-ist die dritten-] {+war eine+} linie
alt: 20 Wörter  16 80% gemeinsam  0 0% gelöscht  4 20% geändert
neu: 20 Wörter  16 80% gleich  1 5% eingefügt  3 15% geändert

Mehr Informationen zu dwdiff findet man in der Manpage dwdiff(1).

 Permalink
Prev Next11-20/84