You might have followed the instructions in Part Two of this book and consider yourself an expert in Linux. But the real measure of a Linux user comes from his or her abilities at the shell.
In our modern age, the GUI is mistakenly considered "progress." We've been led to believe by companies like Microsoft and Apple that using a mouse and clicking on icons is always the most efficient way of using a computer. While it's handy in certain situations—it would be difficult to imagine image editing without a mouse, for example—in many other situations, such as when manipulating files, directly typing commands is far better.
Most modern Linux distributions prefer you to use the GUI to do nearly everything. This is because they acknowledge the dominance of Windows and realize they need to cater to mouse users who might not even know the shell exists. To this end, they provide GUI tools for just about every task you might wish to undertake. SUSE Linux is particularly strong in this regard, and you can configure virtually everything using the YaST2 program.
However, it's well worth developing at least some command-line shell skills, for a number of reasons:
It's simple and fast. The shell is the simplest and fastest way of working with SUSE Linux. As just one example, consider the task of changing the IP address of your network card. You could click on the K menu, and then on Control Center, and then on YaST2 Modules, and then on Network Devices, and then follow the wizard interface through several screens where you can change settings. That will take at least a minute or two if you know what you're doing, and perhaps longer if it's new to you. Alternatively, you could simply open a shell and type ifconfig eth0 192.168.0.15 up.
It's versatile. Everything can be done via the shell—from deleting files, to configuring hardware, to creating MP3s. A lot of GUI programs actually make use of programs you can access via the shell.
It's consistent among distributions. All Linux systems have shells and understand the same commands (broadly speaking). However, not all Linux systems will have YaST2. Red Hat Linux uses its own GUI configuration tools, as does Mandrake Linux. Therefore, if you ever need to use another system, or decide to switch distributions, a reliance on GUI tools will mean learning everything from scratch. Knowing a few shell commands will let you get started instantly.
It's crucial for troubleshooting. The shell offers a vital way of fixing your system should it go wrong. Your Linux installation might be damaged to the extent that it cannot boot to the GUI, but you'll almost certainly be able to boot into a shell. A shell doesn't require much of the system other than the ability to display characters on the screen and take input from the keyboard, which most PCs can do, even when they're in a sorry state. This is why most rescue floppies offer shells to let you fix your system.
It's useful for remote access. One handy thing about the shell is that you don't need to be in front of your PC to use it. Programs like ssh let you log in to your PC across the Internet and use the shell to control your PC (as described in Chapter 34). This is invaluable in accessing data on a remote machine, or even fixing it when you're unable to attend the machine's location. This is why Linux is preferred on many server systems when the system administrator isn't always present on the site.
It's respected in the community. Using a shell earns you enormous brownie points when speaking to other Linux users. It separates the wheat from the chaff and the men from the boys (or women from the girls). If you intend to use Linux professionally, you will most certainly need to be a master at the shell.
Seen in this light, learning at least a handful of shell commands is vital to truly mastering your PC.
The drawback when using a command-line shell is that it's not entirely intuitive. Take the command to change the network card's IP address:
ifconfig eth0 192.168.0.15 up
If you've never used the shell before, it might as well be Sanskrit. What on Earth does ifconfig mean? And why is there the word up at the end?
Learning to use the shell involves learning terms like these. There are hundreds of commands available, but you really need to learn only around 10 or 20 for everyday use. The comparison with a new language is apt because, although you might think it daunting to learn new terminology, with a bit of practice, it will all become second nature. Once you've used a command a few times, you'll know how to use it in the future.
The main thing to realize is that the shell is your friend. It's there to help you get stuff done as quickly as possible. When you become familiar with it, you'll see that it is a beautiful concept. The shell is simple, elegant, and powerful.