CLI junkie here, so my opinion may be biased (whose is not

.
GUI interfaces are more 'user friendly' than CLI, that's for sure, but having to trim what appears on the menus make imossible doing some specific things. Without knowing where to find the correct checkbox, hidden inside a tabbed 'option' window with 10 tabs inside (MsWord Tools->Options...).
Unfortunately, most GUI applications are designed only with a 5 minutes learning curve in mind, so if you plan to use a program intensively, you cannot do much to improve your experience apart from learning all that Alt-someKey (Photoshop users use that all the time). As you get more 'professional' with a tool, you tend to memorize the actions and their relations with keybindings, that's the way everybody does. But here, some problems arise:
- Your function does not have a predefined keybinding and you would like to have it. (I remember me doing things like Alt-i,o,Return,Tab,Tab,space,Alt-F4)
- Version changes, interface changes.
CLI apps, seem to be more robust, and the hability to script them is a great feature for me.
As CLI is made with keyboard in mind, programs seem to be more configurable, so you can say CLI is more flexible than GUI (Strange assertion,eh?)
Linux Command line may have 2500 commands, but you rarely need more than 20. If you don't use them, they don't bother you. However, GUI shows you 'all the fish', and you have to visually choose what do you want to do.
As said, at first it's intuitive and easy, but for me I prefer to minimize my usage of the mouse because I find it being the bottleneck in my Human-Computer interface. Example:
You want to start firefox.
Option1: Fetch the mouse, click the right menu button (every distro has its own 'menu logic'), glance the menu for available options,click submenu, find the right icon (if it's iceweasel, the icon will be blue, ff has the red one), click.
Option2: Alt-F2, firefox, Return
Once you get used to it, CLI is pretty fast, and once you learn it well, you can change distros without decrementing your productivity.
As said before, tab helps you a lot in the console completing files (and more if you have it properly configured), man will help you with commands and flags.
An example to pick out your interest (try to do it in a GUI):
Say you want to get every pdf file in a given url, following the links to other urls (deepness 1) , spanning domains, but without going to parent site (only go down), and leaving your files only in one directory (not spanned in the different directories it finds the files). Being a polite websurfer, we'll wait 5 seconds between our download requests.
wget -r -l1 -H -t1 -nd -N -np -A pdf -w5
www.foobar.com Credit goes to jeff veen (
http://www.veen.com ) and fravia (
http://www.fravia.com)
Obviously I don't remember this string by heart, but knowing it can do those amazing things, is good to start diving into it.
Hope it hasn't been too long .