Originally posted by: drag
Ok there is another way to look at GUI vs Command line that I like sometimes.
With the GUI the system is always offering you posibilities. It's like one of those 'choose your own adventure' books were you are given a choice of turn to page 56 or turn to page 76 for instance. So your restricted to realy only being able to do what the original creator of that application thought you would want to do. So it's inherently limiting. If the guy that wrote the app didn't invision what you would want you simply can not do it.
Very good application designers will be able to create pretty flexible interfaces that will probably do most of what you'd ever want. But still it's limiting. GUI systems limit what you can do, limit your thinking and all sorts of stuff like that.
But if well designed they are easy to do and can be very powerfull in what they can accomplish easily. If your doing routine tasks that don't lend themselves to automation such as surfing the web, listening to music, or looking at pictures or whatnot then they are very good.
Also there are tasks that inherently lend themselves to being done through GUIs.. Such as image editing. Although for automating things like image sizes, resolution changes and such command line is still usefull.
And for things that usually would otherwise require a good understanding of the system your working in they can be used to make relatively common administrative tasks easy.. Such as setting up a printer.
However the command line is very good in other ways.
In a command line you have tools and you use these tools to instruct the computer on what you want to accomplish. So instead of being presented by a list of opertunities with a GUI your actually now going in and writing your own book. A good command line environment can be user friendly and is actually a rudementary way to do programming with powerfull, but simple tools.
In this way your able to move beyond the limitations of another programmer's imagination and use your own creativity to solve problems and accomplish tasks without having to setup a whole proper program to do it for you.
Command line also lends itself to scripting and automation. Automating things like checking for updates or clearing out log files. Scripts are good for doing system scripts and backing up files.
If you think about it in terms of lines of code each tool is probably several thousand lines of code. Your shell is several thousand lines of code with it's built-in functions. So when you craft a bash script that can do things like download files and unzip them and give them proper file names and move them to your file server archive and compress them again your actually making a program with up to millions of lines of code with just 20-30 or so lines of bash commands.
So command line is a much more elegant, flexible, and powerfull operating environment then what even the most complex GUI can provide. And a modern Unix shell is as every bit advanced as any modern GUI. I mean they didn't stop developing it back in MS-DOS days... It's more powerfull and more user friendly then anything that every existed before.
The best however is a marraige between the GUI and the Command line. By combining the two enviroments you can create a complex and more dynamic environment then is ever possible with either.
Some examples of what you can do with this in Linux:
- Drag and drop files and folders from Nautilus into gnome-terminal
- using wmctrl to control complaint window managers from the command line
http://sweb.cz/tripie/utils/wmctrl/
- using gnome-osd or xosd to display pop up notifications from command line
- Zenity (gnome) or kdialog (kde) to launch dialog boxes from command line
- various music cdrom ripping GUI front ends for cdparanioa and qdvdauthor for dvdauthor
- xbindkeys to bind commands/scripts whatever to mouse or keyboard buttons
- using application launching icons from your desktop or taskbar to run scripts
- running X over ssh from your terminal
And there are probably other things I can't think of right now. So you can see if you combine command line with gui stuff you can get some pretty powerfull things going.