Jump to content



Recommended Posts

During my holidays in which I had very little contact with any kind of computers, I realised the following:


You can do things with a computer with a graphical user interface (GUI), whereas a computer with a command line interface (CLI) can do things for you.



A GUI system needs to be babysitted, told at every moment what to do. You can use it, sure, and in some cases it's the natural choice (certain image manipulations, drawing, etc). But a CLI system can be instructed to do things for you, automated, anything you do repeatedly.


Today I discussed this with a friend, and during the discussion I likened the CLI to a butler that can do things for you, and the GUI is like being abroad where they speak a different language, nothing you know, and you're trying to get an icecream, so you just point at what you want. But it may well be that they don't have your favourite flavour on display, or they just don't get it that you really want only half a scoop of vanilla, and 1.5 of chocolate ... etcetc.


Or, the GUI is going shopping at a supermarket, whereas the CLI is handing the list to the butler. So my friend commented: yeah, but I only know what I want by browsing through the isles and seeing what's on offer and so on...

Or you may not know what kind of products are actually available.


So in such cases, it's not possible to hand the butler a note with instructions or a shopping list, because it would be (mostly) empty.



In other words, for less experienced users, the GUI saves the day, whereas for more experienced users (of perhaps very limited functionality, so let's say often-repeat users) the CLI can help avoid repetitiveness.



Discuss if you feel like, ignore if you don't.


Link to comment
Share on other sites

CLI is for me faster, safer, more flexible. But the user does have to know a few things about basic bash scripting (nothing dramatic- just the basics), and whatever configuration files need editing with it have to be properly commented. Else, it can turn out being a major annoyance.

I'm not considering myself being a nerd, or even an experienced user. I'm just an average Linux user, who wants control over the OS, and I've found out that in most cases the funky GUI'ed apps are lacking.

Link to comment
Share on other sites

I use them both. CLI is faster and can do more. The GUI's are not intended to have the same features as CLI (I don't understand why). So I'll use the GUI to get an idea, and then the CLI to do the rest. Personally, I think GUI's should offer all the same features and options that is available via the CLI. Then it'd be a matter of speed and eye candy.

Link to comment
Share on other sites

GUI should abstract the CLI operations and provide a way to automate repetitive and monotonous invocation (instead of specifying 3 options, you click 3 check boxes). CLI will always be the king when it comes to scripting or batch processing inputs that may or may not exist.


While the CLI has the steep learning curve before it becomes efficient to use, the GUI has the burden of figuring out the balance between abstracting too little or too much of the feature. The latter will become a criteria for failure if the user still gets the "duhh" look when looking at the interface.


i have a case in point right now. i use mp3gain to adjust the volume of my audio files but the linux version is only CLI. the soundkonvert application provides an interface to the mp3gain most notably providing a window to collate all the files to be "gained" regardless if they are in different directories. this is already leaps and bounds over the usability of the CLI but for the life of me I cannot find an option in the whole soundkonvert interface to set the desired volume. it defaults to somewhere around 90% but most of my audio files are above 100%.


i can script the CLI version to recursively process all the directories and all files found within but that is the sledgehammer approach. i want to tweak only a certain number of files that resides in different directories and i dont want to create temporary copies just to process them.



Link to comment
Share on other sites

I also use both and I think you're missing something when it comes to GUI; with a user interface you can find functionality that you wouldn't have known about before. With the CLI you can only do things you already know how to do. So many times I'll be using a new program's GUI and see a button that does x - which I wouldn't have known about otherwise.


I love using the CLI, but I swing both ways, depending on what I'm trying to do.

Link to comment
Share on other sites

The GUI's are not intended to have the same features as CLI (I don't understand why)

In my opinion, it mostly comes from ergonomy considerations: you just can't present all options to the user! Just think about the kind of dialogs that would be needed to present ALL possible mencoder parameters in a GUI!


On the technical side, I think the main difference between non-interactive CLI and GUI is the pipe. stdin and stdout are a powerfull feature that GUI applications mostly «lack».


That being said, all cannot be done using non-interactive CLI; some things just have to be interactive, be it within X (Gimp, avidemux…) or in the console (mc, vi…).



Link to comment
Share on other sites

Sometimes, GUI's cannot have the multitude of features of the CLI.

The first program that comes to mind is mkisofs. Just name me one GUI'ed disk mastering/burning application which is utilizing one fifth of the mkisofs switches.

Feel free to search for that program under windows, as well... but you won't find it.

Link to comment
Share on other sites

IWith the CLI you can only do things you already know how to do. So many times I'll be using a new program's GUI and see a button that does x - which I wouldn't have known about otherwise.


Ehm, not so IMHO, I learn CLI commands by reading the man page as well as from other people / scripts I come across and more.

Of course for my job I have to, I work with Linux/Unix quite a bit (though less and less lately, jobs changing somewhat), and some colleagues are true aces when it comes to scripting (bash, ksh, perl, tcl, ...).


I guess in some cases it makes no sense to try to do things with a cli (drawing an image in OOo impress, GIMPing a photo, etc), whereas some things are just awkward with a GUI, such as renaming a whole folder of files, where you want to strip some part of the name, or modify something...


Example: Mdv installation screenshots start with 1.png and I tend to have around 40 or so, and sorting them you'll get 1.png 10.png .... 19.png 2.png 20.png etc - so a simple

rename "" "0" ?.png

sets that right. I can't for the life of me imagine having to do that with a GUI...


Another example: copy a half full memory card from a photo camera to some place on your harddrive. Then take more pictures, without deleting the old ones from the card or formatting it. Then copy those again to your harddrive - the system will see that folders in the dcim/ directory already exist, and ask you to overwrite it or use a new name, etc.

Whereas cp with the right options will just do what you want, or else you can use rsync.



I'm tempted to take the position that novice users (of whatever program / functionality they're new to, so they may well be experts elsewhere) may well waste time by trying to use the CLI for something, whereas experienced / repeat users may well be wasting time using the GUI where automation through CLI and scripting is easily doable.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Create New...