BSD DevCenter
oreilly.comSafari Books Online.Conferences.


Browsing through the Ports Collection
Pages: 1, 2

My second stop in the ports collection is usually the /usr/ports/sysutils directory, as it contains many small but useful utilities. One such useful utility is symlinks, which will find and identify all symlinks on your system. This utility comes with a short little manpage showing all of its switches. I decided to see all the symlinks on my system, so I became the superuser (so I would have permission to scan all directories) and ran the utility like so:

symlinks -vr /

relative: /dev/vga -> ttyv0
relative: /dev/mixer -> mixer0
relative: /dev/sequencer -> sequencer0
relative: /dev/dsp -> dsp0
relative: /dev/audio -> audio0
relative: /dev/dspW -> dspW0
relative: /dev/music -> music0
relative: /dev/pss -> pss0
relative: /dev/dsp0 -> dsp0.0
relative: /dev/audio0 -> audio0.0
relative: /dev/dspW0 -> dspW0.0
absolute: /dev/mouse -> /dev/sysmouse
other_fs: /dev/log -> /var/run/log
absolute: /dev/modem -> /dev/cuaa1
other_fs: /etc/termcap -> /usr/share/misc/termcap
other_fs: /etc/rmt -> /usr/sbin/rmt
relative: /etc/aliases -> mail/aliases
other_fs: /etc/apsfilter/basedir -> /usr/local/share/apsfilter
other_fs: /sys -> usr/src/sys
other_fs: /compat -> /usr/compat
other_fs: /home -> /usr/home

In less than a second, every symlink on my system had been listed. Very handy utility for this purpose.

Another handy utility in the "sysutils" section is pkg_tree, which will list all of the ports and packages installed on your system in a tree-like structure, so you can see their dependencies.

If you've built more than a couple of packages or have built a mega-port such as Gnome or KDE, you'll definitely want to page the output like so:

pkg_tree | more
pkg_tree | less

Just to give you an example of its output, I'll show the first ten lines of mine:

pkg_tree | head

|\__ pkgconfig-0.8.0
|\__ glib-1.2.10_4
|      \__ pkgconfig-0.8.0
 \__ gettext-0.10.35
 \__ linux_base-6.1

The last utility I'll mention today in the "sysutils" section is fortunelock. This is a short and sweet program with a short little manpage. If you need to leave a terminal and don't want to log out first, type:


It will prompt you for a password and ask you to repeat it. Once you've done so, it will repeat random fortunes until you return and re-enter the password. Passersby will at least be entertained by your terminal, even if they don't know the password to access it.

One of my favorite ports is in the /usr/ports/textproc directory and is called glimpse. I have a lot of articles and whitepapers stashed away in my home directory, and this utility is indispensible for finding a certain line of text. It is similar to the locate utility in that it builds a database; because of this database, searches are blazingly fast, almost instantaneous.

The first time you want to use glimpse, go to your home directory (I'm assuming the information you want to find is somewhere in your home directory and its subdirectories) and build the database like so:

glimpseindex -o 

This is glimpseindex version 4.12, 1999.
Indexing "/home/genisis" ...
Size of files being indexed = 6437564 B, Total #of files = 850
Index-directory: "/usr/home/genisis"
Glimpse-files created here:
-rw-------  1 genisis  wheel   35658 Jan 13 19:52 .glimpse_filenames
-rw-------  1 genisis  wheel    3400 Jan 13 19:52 .glimpse_filenames_index
-rw-------  1 genisis  wheel       0 Jan 13 19:51 .glimpse_filetimes
-rw-------  1 genisis  wheel  510659 Jan 13 19:52 .glimpse_index
-rw-------  1 genisis  wheel     863 Jan 13 19:52 .glimpse_messages
-rw-------  1 genisis  wheel  342572 Jan 13 19:52 .glimpse_partitions
-rw-------  1 genisis  wheel     130 Jan 13 19:52 .glimpse_statistics
-rw-------  1 genisis  wheel  262144 Jan 13 19:52 .glimpse_turbo

The indexing will churn along for a few minutes, depending on how large your home directory is. You'll note that it will make several hidden files in your home directory that all begin with ".glimpse". Once you've made the database, try to find something. As an example, I know that somewhere I have a file that tells me the modem code for "auto answer," but I can't remember which file, so I'll try:

glimpse "auto answer"

/home/genisis/unix:     no result codes (Q1), and auto answer (&S0=1).     Then write the
/home/genisis/unix:     at&s0=1     turn on auto answer

Not only is the modem code located in /home/genisis/unix, I don't even have to read the file as, it also returned the modem code I was looking for. See why this is one of my favorite utilities?

The manpage for glimpse has several examples on how to fine-tune your search. If you use this utility often and are constantly creating and removing files from your home directory, you may want to consider running glimpseindex as a cron job. I'm pretty lazy, so I usually just rerun glimpseindex whenever I can't find what I'm looking for.

While I was in the "textproc" section, I also came across an interesting utility known as dadadodo. Even if you decide not to build this port, I highly recommend checking out the homepage of this utility's creator; it's well worth a visit.

To run the utility, simply type:

dadadodo name_of_a_file

I've found that saved emails, especially boring, overly technical ones, make great input files. With a utility like this, one could quit their day job to become either a poet or a fortuneteller.

The last port I built from the "textproc" section really impressed me. It was the gutenbook port. If you haven't heard about the Gutenberg Project, you can check it out here.

A separate project, known as the Gutenbook project, is a very user-friendly utility for accessing and reading the etexts available at Project Gutenberg. You may also want to check out the URL for Gutenbook and see the screenshots for yourself.

Once you've built this port, start it from an X Windows session. If you click on the "Browse Gutenberg (L)ibrary" button and wait a few seconds, you'll get a list of all of the available etexts. The titles are in alphabetical order and there are tabs so you can go to the section you are interested in. Or, use the "Search in Title/Author" section to search for a specific etext. Once you find one you're interested in, highlight it, click "Read Selected Etext," and wait a few seconds as it downloads it for you. You know it's finished when a zip file appears under the "Local Copy" column. Close that window and your selected etext will be loaded and ready for you to read. Not only can you read it, but you can jump to a certain page or search for a specific bit of text. You may never want to read a book the old-fashioned way again. One last note: you'll notice that a new directory named "Gutenberg_Library" will be created in your home directory to store your downloaded etexts.

The last port I'll mention today is a Keyboard Practicer found in /usr/ports/misc/kp.

This is a very user-friendly GUI interface to practice your typing skills. Run it from an X Windows session and it will look like this:

Screen shot.

The default mode is to show a Dvorak layout; if you're using a regular keyboard, go to "Options-->Keyboard" and choose "Qwerty".

Then, just start typing what you see in the top section without looking at your fingers. If you're not sure where the key is located, don't look at your fingers; instead, notice which key is highlighted on your monitor. This program will keep track of your mistakes and your speed in wpm. If you want to practice typing another file, go to "File-->Load file" which will show you all of the files in your home directory. Highlight one to practice typing and to see if you can improve your speed.

I hope you enjoyed this latest tour through the ports collection and will check out some ports yourself to make your own discoveries.

Dru Lavigne is a network and systems administrator, IT instructor, author and international speaker. She has over a decade of experience administering and teaching Netware, Microsoft, Cisco, Checkpoint, SCO, Solaris, Linux, and BSD systems. A prolific author, she pens the popular FreeBSD Basics column for O'Reilly and is author of BSD Hacks and The Best of FreeBSD Basics.

Read more FreeBSD Basics columns.

Return to the BSD DevCenter.

Sponsored by: