Mit Hilfe von comm lassen sich die identischen Zeilen zweier Dateien anzeigen. Dazu müssen beide Dateien sortiert sein:
# cat datei1
1099
2001
3434
4002
# cat datei2
3434
4002
7098
8567
Führt man nun comm mit den beiden Dateien aus, werden in der ersten Spalte alle Zeilen angezeigt, welche nur in der ersten Datei vorkommen, in der zweiten Spalte die der zweiten Datei und in der dritten Spalte jene Zeilen welche in beiden Dateien vorkommen:
# comm datei1 datei2
1099
2001
3434
4002
7098
8567
Sollen nur die identischen Zeilen angezeigt werden, kann die Ausgabe der ersten beiden Zeilen durch die -1 und -2 Option verhindert werden:
# comm -12 datei1 datei2
3434
4002
Soll die Gross-/Kleinschreibung beim Vergleichen ignoriert werden, kann dies mit der -i Option gemacht werden:
# cat datei1
1099
2001
a3434
b4002
# cat datei2
A3434
B4002
7098
8567
# comm datei1 datei2
1099
2001
A3434
B4002
7098
8567
a3434
b4002
# comm -i datei1 datei2
1099
2001
a3434
b4002
7098
8567
Auf FreeBSD ist comm standardmässig im Basissystem vorhanden. Mehr Informationen zu comm findet man in der Manpage comm(1).
Mit Hilfe con cloc lassen sich die Anzahl Codezeilen eines Programms oder Projektes gezählt werden. Im FreeBSD-Portbaum findet man cloc unter misc/cloc:
# cd /usr/ports/misc/cloc && make install clean
Nun können einzelne Dateien oder auch gleich ein Tarball an cloc übergeben werden und cloc zeigt nun die Anzahl Dateien, in welcher Sprache programmiert wurde und wieviel Linien Code und Kommentare darin enthalten sind. Im folgenden Beispiel werden die Anzahl Codezeilen von der Tinderbox und Firefox gezählt:
# cloc tinderbox-3.4.tar
152 text files.
144 unique files.
70 files ignored.
http://cloc.sourceforge.net v 1.53 T=1.0 s (76.0 files/s, 17577.0 lines/s)
-------------------------------------------------------------------------------
Language files blank comment code
-------------------------------------------------------------------------------
Perl 16 1414 500 5689
Bourne Shell 15 739 486 3581
PHP 28 652 767 3034
CSS 2 53 2 318
SQL 12 1 0 113
C 1 13 20 84
Javascript 1 14 12 62
ASP.Net 1 1 5 17
-------------------------------------------------------------------------------
SUM: 76 2887 1792 12898
-------------------------------------------------------------------------------
# cloc firefox-8.0b6.source.tar
47536 text files.
46192 unique files.
10413 files ignored.
http://cloc.sourceforge.net v 1.53 T=287.0 s (127.0 files/s, 26538.4 lines/s)
--------------------------------------------------------------------------------
Language files blank comment code
--------------------------------------------------------------------------------
C++ 3870 293823 318264 1475693
C 1940 177517 275465 1000436
Javascript 8013 205654 272616 815038
HTML 13669 98489 16681 745324
C/C++ Header 5104 135879 378341 585016
Bourne Shell 226 22193 25651 143820
IDL 1257 12490 0 123888
Assembly 267 15318 11806 99121
XML 661 6633 3027 52983
Python 288 12048 20652 49905
CSS 513 11115 10893 46880
m4 39 4711 675 39842
Java 51 2733 6946 23000
Perl 168 4191 8657 19751
DTD 161 2438 2970 8925
Teamcenter def 33 23 4 4377
make 104 1644 4893 3982
SKILL 7 89 3 2838
Objective C 10 683 659 2767
yacc 2 188 54 1972
lex 3 148 77 691
Expect 7 105 177 451
Bourne Again Shell 7 109 349 378
XSLT 13 61 84 322
Korn Shell 4 44 249 303
PHP 2 75 126 248
awk 4 53 46 213
Pascal 3 41 28 206
Ada 1 5 0 49
DOS Batch 5 4 36 29
ASP.Net 1 2 0 16
C Shell 1 1 0 11
D 2 7 90 10
sed 2 1 0 10
--------------------------------------------------------------------------------
SUM: 36438 1008515 1359519 5248495
--------------------------------------------------------------------------------
Alle Optionen von cloc erhält man mit der --help Option.
Mit Hilfe von scr2png können die aktuell in einer Konsole angezeigten Ausgaben in einem PNG-Bild gespeichert werden. Im FreeBSD-Portbaum findet man scr2png unter graphics/scr2png:
# cd /usr/ports/graphics/scr2png && make install clean
Im folgenden Beispiel wird die Ausgabe des ersten virtuellen Terminals in der Datei /tmp/shot.png gespeichert:
# vidcontrol -p < /dev/ttyv0 | scr2png > /tmp/shot.png
Mehr Informationen zu scr2png findet man in der Manpage scr2png(1).
Mit Hilfe von ipaggcreate lassen sich Statistiken über den Netzwerkverkehr erstellen. Im FreeBSD-Portbaum findet man ipaggcreate unter net/ipsumdump:
# cd /usr/ports/net/ipsumdump && make install clean
Möchte man zum Beispiel anzeigen wieviele IP-Pakete von einer IP-Source-Adresse versendet wurden, kann die -s Option verwendet werden. Mit der -i Option wird die Netzwerkschnittstelle angegeben von welcher der Verkehr aufgezeichnet werden soll. Das Aufzeichnen des Netzwerkverkehrs kann mit Ctrl+c abgebrochen werden und danach werden die Statistiken ausgegeben:
# ipaggcreate -i em0 -s
^C!IPAggregate 1.0
!creator "ipaggcreate -i em0 -s"
!counts packets
!times 1298051744.381225 1298051768.726735 24.345510
!num_nonzero 6
!ip
192.168.1.1 4
195.186.xxx.xxx 20
212.243.xxx.xxx 2073
212.243.xxx.xxx 4
212.243.xxx.xxx 11
217.150.xxx.xxx 68
Sollen die Anzahl IP-Pakete anhand ihrer Länge angezeigt werden, so kann die -l Option verwendet werden:
# ipaggcreate -i em0 -l
^C!IPAggregate 1.0
!creator "ipaggcreate -i em0 -l"
!counts packets
!times 1298050969.486125 1298051060.762474 91.276349
!num_nonzero 438
36 1
52 6
53 1
58 2
60 2
66 1
69 1
71 2
72 1
81 2
84 288
[...]
1442 1
1446 1
1448 6581
Alle Optionen und mehr Information zu ipaggcreate findet man in der Manpage ipaggcreate(1).
Mit Hilfe von scr2txt können die aktuell in einer Konsole angezeigten Ausgaben in einer Textdatei gespeichert werden. Im FreeBSD-Portbaum findet man scr2txt unter textproc/scr2txt:
# cd /usr/ports/textproc/scr2txt && make install clean
Im folgenden Beispiel wird die Ausgabe des ersten virtuellen Terminals in der Datei /tmp/shot.txt gespeichert:
# vidcontrol -p < /dev/ttyv0 | scr2txt > /tmp/shot.txt
Mehr Informationen zu scr2txt findet man in der Manpage scr2txt(1).
Mit Hilfe von Shell In A Box kann mit einem Browser auf eine Shell zugegriffen werden. Die Verbindung wird dabei über HTTPS hergestellt. Im FreeBSD-Portbaum findet man Shell In A Box unter www/shellinabox:
# cd /usr/ports/www/shellinabox && make install clean
Nach der Installation muss Shell In A Box in der /etc/rc.conf eingetragen und der Daemon gestartet werden:
# echo 'shellinaboxd_enable="YES"' >> /etc/rc.conf
# /usr/local/etc/rc.d/shellinaboxd start
Danach kann mit einem Browser auf TCP-Port 4200 zugegriffen werden, worauf man sich mit einem Benutzernamen und Passwort anmelden kann. Möchte man einen anderen TCP-Port verwenden, so kann dies durch das Setzen der shellinaboxd_port-Variable in der /etc/rc.conf gemacht werden. Mehr Informationen zu Shell In A Box findet man in der Manpage shellinaboxd(1).
Mit Hilfe von swiggle lassen sich Fotogalerien für das Web auf der Kommandozeile erstellen. Im FreeBSD -Portbaum findet man swiggle unter www/swiggle:
# cd /usr/ports/www/swiggle && make install clean
Die Fotogalerie wird nun in einem bestehenden Verzeichnisbaum erstellt und dabei werden die Alben durch Verzeichnisse gruppiert:
# find ~/gallery
~/gallery
~/gallery/album1
~/gallery/album1/Bild1.JPG
~/gallery/album1/Bild2.JPG
~/gallery/album1/Bild3.JPG
[...]
~/gallery/album2
~/gallery/album2/Bild1.JPG
~/gallery/album2/Bild2.JPG
~/gallery/album2/Bild3.JPG
[...]
Nun kann der Verzeichnisbaum mit den Alben und den Bilden an swiggle übergeben werden, damit die Fotogalerie erstellt wird:
# swiggle ~/gallery
Directory ~/gallery/album1
Image ~/gallery/album1/Bild1.JPG
Image ~/gallery/album1/Bild2.JPG
Image ~/gallery/album1/Bild3.JPG
[...]
10 thumbnail index pages created.
148 images processed in album '~gallery/album1'.
Directory ~/gallery/album2
Image ~/gallery/album2/Bild1.JPG
Image ~/gallery/album2/Bild2.JPG
Image ~/gallery/album2/Bild3.JPG
[...]
11 thumbnail index pages created.
156 images processed in album '~/gallery/album2'.
5 albums processed.
Die generierten HTML-Dateien und die Thumbnails wurden nun im bestehenden Verzeichnisbaum erstellt und dieser kann danach auf einen Webserver geladen werden:
# find ~/gallery
~/gallery
~/gallery/album1
~/gallery/album1/Bild1.JPG
[...]
~/gallery/album1/.scaled
~/gallery/album1/.scaled/Bild1.JPG
[...]
~/gallery/album1/.thumbs
~/gallery/album1/.thumbs/Bild1.JPG
[...]
~/gallery/album1/Bild1.JPG.html
[...]
~/gallery/album1/index.html
~/gallery/album1/index2.html
[...]
~/gallery/index.html
Mehr Informationen und alle Optionen von swiggle erhält man, wenn man swiggle ohne Optionen aufruft.
Mit Hilfe von rl lassen sich die Zeilen einer Datei in zufälliger Reihenfolge wiedergeben. Im FreeBSD-Portbaum findet man rl unter textproc/rl:
# cd /usr/ports/textproc/rl && make install clean
Nun kann der Inhalt einer Datei verwürfelt dargestellt werden:
# cat datei
1
2
3
4
5
# rl datei
2
1
5
3
4
Mit der -c Option kann angegeben werden wieviele Zeilen ausgegeben werden sollten. Im folgenden Beispiel wird zufällig eine MP3 Datei aus der Musiksammlung angezeigt:
# find ~/Music -name "*mp3" | rl -c 1
Mehr Informationen zu rl findet man in der Manpage rl(1).
Möchte man einen SSH Public-Key auf einen anderen Rechner kopieren so dass man sich danach mit Public Key Authentifizierung anmelden kann, kann dazu ssh-copy-id verwendet werden. Im FreeBSD-Portbaum findet man ssh-copy-id unter security/ssh-copy-id:
# cd /usr/ports/security/ssh-copy-id && make install clean
Damit der Schlüssel kopiert werden kann, muss man sich mit einem Password auf dem anderen Rechner anmelden können. Standardmässig wird der ~/.ssh/id_rsa.pub Schlüssel kopiert. Möchte man einen anderen Schlüssel kopieren, kann dieser mit der -i Option angegeben werden:
# ssh-copy-id test@test.chruetertee.ch
Password:
Now try logging into the machine, with "ssh 'test@test.chruetertee.ch'", and check in:
~/.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
Existiert schon eine ~/.ssh/authorized_keys Datei, so wird der neue Schlüssel an die existierende Datei angehängt. Mehr Informationen zu ssh-copy-id findet man in der Manpage ssh-copy-id(1).
Mit Hilfe von pslist können alle Kind-Prozesse eines Prozesses angezeigt werden und allenfalls ein Signal an alle diese Prozesse gesendet werden. Im FreeBSD-Portbaum findet manpslist unter sysutils/pslist:
# cd /usr/ports/sysutils/pslist && make install clean
Übergibt man eine Prozess-ID an pslist, so werden die Prozess-IDs aller Kind-Prozesse angezeigt:
# pslist 4816
4816 sh 4817 4818 4819
# pstree -p 4816
-+= 00001 root /sbin/init --
\-+- 02761 root /usr/local/bin/xdm -nodaemon ttyv8
\-+= 02817 root xdm: :0 (xdm)
\-+= 02829 beat fluxbox
\-+= 03854 beat /bin/csh -c xterm
\-+- 03861 beat xterm
\-+= 03863 beat csh
\-+= 04816 beat /bin/sh ./test
\-+- 04817 beat /bin/sh ./test
\-+- 04818 beat /bin/sh ./test
\--- 04819 beat sleep 60
Sendet man nun ein SIGTERM-Signal an den Prozess welcher die Kind-Prozesse gestartet hat, so laufen die Kind-Prozesse weiter, werden jedoch Kind-Prozesse des init Prozesses:
# kill 4816
# pstree
-+= 00001 root /sbin/init --
[...]
\-+- 04817 beat /bin/sh ./test
\-+- 04818 beat /bin/sh ./test
\--- 04819 beat sleep 60
Soll das SIGTERM-Signal an einen Prozess und allen seinen Kind-Prozessen gesendet werden kann rkill verwendet werden:
# rkill 4816
Möchte man ein anderes Signal als das SIGTERM-Signal verwenden, so kann auch dies an rkill übergeben werden. Im folgenden Beispiel wid das SIGKILL-Signal an alle Prozesse gesendet:
# rkill -9 4816
Mehr Informationen zu pslist und rkill findet man in der Manpage pslist(1).