Linux Resources

Bash (readline) Hints

If you use bash, are as bad a typist as I am, and especially if you came up in the DOS/Windows world, there is one thing that probably drives you nuts---the way bash's file/path completion works. I hate that bash either complains or just gives you a list of the possibilities on an ambiguous completion. I'd much rather have it cycle through the possibilities each time you hit TAB the way (shudder) cmd.exe/4NT.exe does. (See this tweak to enable this in cmd.exe.)

So how can you get bash to cycle though files or directory completion the way 4NT does? It turns out this is possible in bash since 2.02, but it's amazingly obscure. The feature is called "menu-complete", and you can enable it in the /etc/inputrc file by binding it to TAB.

Here are the tweaks I add to the top of my /etc/inputrc file in Linux (note second to last):

set completion-ignore-case on # Ignore case when doing completion
set mark-directories on       # Completed dir names have a slash appended
set visible-stats on          # List ls -F for completion
"\C-i": menu-complete         # Cycle through ambiguous completions instead of list
#set show-all-if-ambiguous on # List possible completions instead of ringing bell

You can edit the file and test it using bind -f /etc/inputrc to activate your changes immediately.


Why Use Open Source Software?

The two best papers I've seen on the subject are the following:

OSS/FS has significant market share, is often the most reliable software, and in many cases has the best performance. OSS/FS scales, both in problem size and project size. OSS/FS software generally has far better security, particularly when compared to Windows. Total cost of ownership for OSS/FS is often far less than proprietary software, particularly as the number of platforms increases. These statements are not merely opinions; these effects can be shown quantitatively, using a wide variety of measures. This doesn't even consider other issues that are hard to measure, such as freedom from control by a single source, freedom from licensing management (with its accompanying litigation), and increased flexibility. I believe OSS/FS options should be carefully considered any time software or computer hardware is needed.


Linux RPM Packages

The RedHat Package Manager (RPM) is an Open Source "package manager" for Linux. Developed by RedHat, it is the defacto standard used by a majority of Linux developers and distributions. It offers far better modularity, manageability and ease-of-use than the more traditional "tarball" distribution method. It's slightly easier to use than Solaris' package manager, in that there is only one program to deal with. And it is vastly superior to any of the Microsoft installers because a) it wasn't written by Microsoft, b) it was written for a decent OS, c) merely installing a simple application (such as a web browser) will not 1) crash the OS completely or 2) make fundamental changes to underlying OS services and/or functionality, d) you can actually completely and cleanly uninstall applications, e) you can easily get a definitive list of what packages are installed on the system (rpm -qa).

If you do not understand item c above, go install IE 5.5 on an NT server and see what happens. Hint, check the "AT" service.


Linux Backups

See my OnStream DI-30 + RedHat Backup mini-HOWTO.


Keeping Linux Up-to-Date

I never liked Red Hat's "Up to date" service. I never really got it to work, and I just don't like the idea of how it works. It's also a pain to have a local repository.

I used to use a Perl based RPM updated called autoupdate. It worked very well for me. It is highly configurable and supports a distributed architecture where I can have one server download updates, then all my other machines get the updates from that local server. I found autoupdate needed an hour or two's time investment to get set up and working, but it was well worth it. It's not too complicated, it's just that there are quite a few options and it may take some reading and experimentation before you find a setup that works the way you want.

But now I'm using cAos Linux, which uses Yum (Yellow dog Updater, Modified), which rules! A simple yum update updates every single installed application from my local repository, which I rsync daily. If I need to install an application, such as NTP, yum -y install ntp does the trick, resolving any dependencies along the way. Yum uses a simple web site for repositories making it drop-dead simple. Fedora is even using Yum. Yum Just Works, and is awesome!


Links