
Command Line and User Friendliness - reacocard
http://www.terminally-incoherent.com/blog/2012/05/30/command-line-and-user-friendliness/
======
saraid216
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 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.)

~~~
dllthomas
This 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).

------
muyyatin
Typing 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
In 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.

------
Scene_Cast
I 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.

~~~
ori_b
> _I can't even count the number of times I wanted to pipe an output of one
> program to multiple others_
    
    
          ls | tee >(frob x) | grep y
    

should output the output of ls to both 'grep x' and 'grep y'. The '>(foo)'
syntax in bash will create a subshell to run the pipeline in the parens, and
evaluate to the name of the FD for the pipeline (eg, /dev/fd/42).

For multiple inputs, similarly:

    
    
         grep foo <(ls dir1) <(cat somefile)

~~~
Scene_Cast
Thanks! I didn't know about tee. My gripes were from working with something
like this ( <http://i.imgur.com/LnAvV.jpg> ), and then trying to emulate that
in CLI. (The picture shows a graph-based image processing system, Blender's
compositing mode) \--- Source:
<http://www.blender.org/typo3temp/pics/ca33eb4833.png>

~~~
ori_b
That should probably get a domain-specific tool regardless; Generalizing the
command line UI is probably going to end up getting too hairy for the common
case.

------
marknadal
But you are missing something...

Try photo manipulation with a CLI. Art requires spatial interaction, not
merely "conversational" expressions.

~~~
jasomill
Not 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
Interestingly, 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.

------
ori_b
The 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.

------
jeremysmyth
What 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.

------
underwater
The 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.

~~~
dllthomas
How 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.

------
kevinconroy
Agree 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
Who's going to make a lighttable for the CLI?

------
kevinconroy
Twitter 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-
comman...](http://support.twitter.com/articles/14020-twitter-sms-commands)

~~~
robbiemitchell
It'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
There 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.

------
grannyg00se
"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.

~~~
unimpressive
>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

------
dllthomas
Good, 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.

------
h84ru3a
TOPS-20

Autocomplete.

