My first computer course was in high school. It was Fortran IV, and we utilized a mainframe on the other side of town. Programs were handwritten on paper that provided multiple rows of single-character blocks. Someone else turned them into punchcards that ran through the system. A few days later, we received printouts on greenbar paper. For us, there was direct interaction with the system. I had some direct interaction with a DEC PDP-8 in college. Among other things, it included bootstrapping the system which consisted of setting a binary address with one group of switches and setting a value with another. Placing the correct value in two addresses rebooted the machine.
It was 2 or 3 years later when I accessed another computer, and it was a Timex/Sinclair 1000 that I built from a $99 kit. It had a whopping 2K of RAM. That was followed by a Commodore 64 and ultimately a PC (286). Shortly after getting the PC, I loaded Windows 3.1. Once I got to Windows, it seemed nearly all my interaction with computers was with the GUI. The command line interface (CLI) was only used for troubleshooting. Then a colleague introduced me to Linux. Since then, I have found the CLI far more useful. I remember talking about Linux with the local SBE Certification Chair when I was taking my CBTE exam. He wasn’t too excited about it, referring to it as the OS du jour. That was 10 years ago.
Since then, I have used *nix almost daily. While I have tried several of the Xwindows interfaces, I have found the *nix command line interface far more useful. Now that Linux is commonly found as the embedded operating system in a variety of equipment, practical knowledge of Linux is job security. If you have not tried it, I heartily recommend it. If you have an old computer lying around there are plenty of versions available for free or low cost. Many offer ‘Live CDs’ that allow you to boot an existing computer into Linux running from the CD without overwriting your hard drive. This is an easy way to take several versions for test drives. I have also installed Cygwin in every non-*nix machine I use. The Cygwin interface provides a command line *nix interface on Windows machines that truly provides the best of both worlds.
The CLI really shines when I need to do scripting. I find a lot of operations are repetitive and can be scripted. Operations such as specific file backups, log rotation and creation of files for metrics all lend themselves to scripting. For BroadcastBuyerGuide.com, I have several housekeeping scripts that run daily. One cleans out unneeded info from the database. Another does a full backup of the database, while a third copies the database to a development machine. A fourth script (on the dev. machine) rotates and deletes the databases so I always have 5 or more recent database backups but do not fill the hard drive with copies of old databases. In this manner, I have a disaster recovery plan that is simple, automatic and fairly foolproof.
The CLI also provides a way to look around the ‘insides’ of many of today’s devices. It also helps to have a root level password. However, root-level access gives you complete control of the system. Having that control means using it responsibly. Don’t change files without making a backup. Use delete with extreme caution – I prefer renaming files and deleting them days or weeks later when I know they won’t cause problems. Keep good notes. Keep changes to a minimum until you develop an understanding of potential effects.
On the GUI side, many of today’s systems just would not be the same without one. No, I wouldn’t want to go back to a CLI-only interface. Whether it is graphics functions, games, or even web browsing, a GUI, or touch-screen is the only way to go. But just like those that still prefer driving a stick over an automatic transmission, each interface offers advantages. Both will be with us for a long time, and those that are proficient in both have the advantage.
