6 ms·
Command Line and User Friendliness
- marknadal 14y agoBut you are missing something... Try photo manipulation with a CLI. Art requires spatial interaction, not merely "conversational" expressions.
- deleted 14y ago[deleted]
- lukeschlather 14y agoThere have been quite a few times I've gotten hopelessly frustrated trying to do simple photo manipulation tasks with GUI software and just jumped back to ImageMagick. There's a lot to be said for the quiet simplicity of `convert -scale 25% foo.jpg smallfoo.jpg`.
- jasomill 14y agoNot just art. Try writing and editing text with nothing but shell tools. One thing that I'd love to see in all GUIs is a unified "search box" for commands, settings, and tasks. The OS X help menu comes close (but it only searches help and menu bar items); the "Control-Q" box in the Visual Studio 11 beta comes even closer (but it only works in Visual Studio). Neither, however, go beyond basic substring matching, and they really should. As an example, help searching for "disable Flash" in Safari could easily point me to the appropriate preference pane and the Safari extensions Web site before falling back to a general Web search as a last resort.
- NeutronBoy 14y agoInterestingly, this is what Unity tries to achieve but has been overshadowed for other reasons.The search box in the Windows 7 Start Menu also does a great job at searching programs, files, and the control panel.
- maigret 14y agoRight. Even Vim and Emacs in the terminal are actually GUIs.
- Scene_Cast 14y agoI am one of those people who thing that CLIs are not user friendly. The premise - giving a computer instructions via Natural Language (NL) - is very sound. However, the way CLI is done right now (from the ground up) - is broken. The most obvious example - why are CLIs ASCII-based? I want to pass around objects - "ls" should only give me just that, an array of objects (which can be serialized for output in any graphical way, including ASCII). There shouldn't be any ASCII flags or switches - those (if really needed) should be an array of objects as well. Another example, piping, something that UNIX proponents are quite proud of, is a good concept, but it isn't perfect. I can't even count the number of times I wanted to pipe an output of one program to multiple others, or pipe multiple programs into one. The list goes on and on. CLI is the best tool that exists at the moment for a few things, but I definitely see how there could be a superior, semi-graphical, non-"scrolling-ASCII-buffer" alternative. Note: I have tried Linux as my main OS for almost a year, I've done extensive dev under Linux, customized the hell out of my .profiles and *rcs, etc. Still, I see it as flawed. If someone comes up with a sane CLI, I'll be the first in line.
- spc476 14y ago"I can't even count the number of times I wanted to pipe an output of one program into multiple others ... " There's nothing stopping you from doing that. Back in college I wrote a Unix shell (as part of a class project in Unix Systems Programming) that, in theory, could do that but I lacked a decent syntax for doing so. Perhaps that's an argument for a GUI, but what you ask for is certainly possible (although the semantics of piping multiple programs into one is hard to resolve, at least in my mind. Do you interleave by characters? By line? User specified? How?). Also, writing an "ls" that output "objects" is also quite trivial, but the tooling required to convert (or write from scratch) existing command line tools is large. Also, the semantics can get quite rough. "There shouldn't be any ASCII flags or switches-those (if really needed) should be an array of objects ... " Again, I can go back to the shell I wrote in college. The arguments to a program were stored in an array. In fact, that's how you had to specify the arguments, as an array. It was an interesting shell, enough to get me an A in the class, but I never used it as an interactive shell. Typing commands (which were first class objects, by the way) was a pain. But boy could I sure could pipe stderr to more and stdout to a file. Perhaps what you need to do is try to implement your own shell that works the way you think it should work. You could be the one to implement a sane CLI ...
- muyyatin 14y agoTyping in a particular phrase in the Google search box won't delete all of your mail and files, so you could think of it as a "safer" or "immutable" shell. CLI in contrast can modify things, not just give you back information.
- kevinconroy 14y agoIn some sense, the omnibar in Chrome is the CLI interface for Google. It both manipulates your browser and does searches. Probably wouldn't take much for Google to expand on this and add commands to help you send emails, interact on G+, and more.
- kevinconroy 14y agoTwitter is effectively a CLI. Posts that start with "D" form a direct message rather than normal status update. You can also issue other commands which follow people, edit your profile, and more. http://support.twitter.com/articles/14020-twitter-sms-commands http://support.twitter.com/articles/14020-twitter-sms-comman...
- robbiemitchell 14y agoIt's a CLI with terrible feedback. So many people (including people whose jobs are in some way related to Twitter) don't know that when you start a message with an @reply, only your followers who also follow that other person will see it. A few years back, when more people used the SMS interface to post, it was common to see people occasionally slip and post what was supposed to be a direct message. I don't see that anymore now that people use GUIs.
- saraid216 14y agoThere was a lovely gaffe last year when @neilhimself accidentally did a public tweet of his hotel phone number in what was supposed to be a DM to his wife. Also, I did not know that about the @reply. Twitter needs to come with a --help.
- kevinconroy 14y agoAgree that CLI are powerful but also scary to novice users. So who's going to make cliacademy.com to ensure that everyone learns how to use a CLI?
- minikomi 14y agoWho's going to make a lighttable for the CLI?
- ori_b 14y agoThe biggest difference between, bash and, for example, Google, Quicksilver, etc, is the level of fuzziness that they will accept. With Google, you can enter damn near anything you want, and it will accept it and try to do something sensible. With the shell, you get cryptic errors if you have a small typo. ls foo(bar) doesn't list files that look like foo(bar), it says "bash: syntax error near unexpected token `('". It has no method of easily discovering that 'ls' means 'list files'. And typos can potentially harm data. None of this means that the command line is useless or a bad idea, but it does make it relatively unfriendly towards newbies. Even if the concept is more intuitive, the current incarnation can be scary.
- h84ru3a 14y agoTOPS-20 Autocomplete.
- grannyg00se 14y ago"You type something in, and the machine either executes your command, or goes “I have no clue what you just said, did you by any chance mean XYZ?”" What sort of wizardry is this? My shell (BASH) does not say "did you by any chance mean XYZ?" It stops after saying "I have no clue what you just said" and then stares at me like I'm an idiot.
- christianmann 14y agoHave you considered zsh? Much better autocomplete options available (and enabled by default).
- dgoodlad 14y agoZsh has an autocorrect feature that suggests different spellings of your command if it can't find anything exactly matching it. I'm sure that I recall hearing of similar functionality available for bash, too. Also, recent versions of Ubuntu include shell aliases that will search for packages related to missing commands. I'm sure that if you don't use Ubuntu, you could rip this functionality out and port it to whatever packaging system you use.
- unimpressive 14y ago>What sort of wizardry is this? [Redacted]@[Redacted]:~$ nncat No command 'nncat' found, did you mean: Command 'sncat' from package 'sn' (universe) Command 'ncat' from package 'nmap' (main) Command 'uncat' from package 'socklog' (universe) nncat: command not found
- underwater 14y agoThe command line may be efficient, but it is far from intuitive. I work with command line tools every day, and I am still constantly searching Google and man pages whenever I need to do something outside of my normal flow.
- jonathansizz 14y agoThat's also what happens to me quite frequently -- when I'm using a GUI.
- dllthomas 14y agoHow is checking a man page logically different than digging through menus? Either you know how to do what you want to do, or you need to find out how, regardless of your interface.
- saraid216 14y agoWhat I think would be interesting would be some strongly-coupled CLI-GUI interactions. For instance, let's take Word as a start. What if you could swap to your CLI and say "load letter template" and it would walk over to Word and do that for you in the GUI? Or in Excel, instead of clicking through the charting wizard, instead have a CLI that lets you configure the options at will? I think that would be the next greatest thing in non-mobile What I think would be interesting would be some strongly-coupled CLI-GUI interactions. For instance, let's take Word as a start. What if you could swap to your CLI and say "load letter template" and it would walk over to Word and do that for you in the GUI? Or in Excel, instead of clicking through the charting wizard, instead have a CLI that lets you configure the options at will? I think that would be the next greatest thing in non-mobile UI design. (But I'm a heavy CLI user, so I'm kinda biased.)
- ricardobeat 14y agoAppleScript?
- dave1010uk 14y agoI believe this is the idea behind Ubuntu's HUD: http://www.markshuttleworth.com/archives/939 http://www.markshuttleworth.com/archives/939
- dllthomas 14y agoThis is supported by some individual applications. For instance, firefox will let you open a new tab in a running browser, ratpoison will let you run a bunch of commands against it, etc. I'm still not thrilled because it's usually still difficult to move data the other way (although xclip or xsel can certainly help).
- quesera 14y agoAutoCAD has a simultaneous GUI and CLI. SketchUp has a partial implementation of a similar model. You could argue that Vi and emacs do both. Certainly the primary mode is a (curses-based) GUI, and the command modes operate on the same data. They're not quite always-on, but close enough. I often wish more applications would do this!
- dllthomas 14y agoGood, as far as it goes, but misses (IMHO) the biggest advantage of the shell, which is composability. In the shell, you can interleave and connect any actions you have access to. In the GUI, programs can typically only interact in ways explicitly supported.
- jeremysmyth 14y agoWhat seems to be getting lost is that "user-friendly" has the word "user" in it. And "user" is relative to the situation. A Formula 1 car is not designed for novices, but it gives the driver maximum control in a very high-stress situation. I would suggest that the interface is as "friendly" to the intended user as millions of $cash and hours of research can possibly make it. The CLI is the result of 30-40 years of similar evolution, and the fact that it has survived this long, and mutated in the helpful ways mentioned by the article, would similarly suggest that many users find it useful. I know I do, and I'm a user.