TOPS-20 like command recognition for unix
utzoo!decvax!yale-com!mp
utzoo!decvax!yale-com!mp
Fri Jan 8 16:50:36 AEST 1982
Here at Yale we have added some modifications to the Berkeley shell,
to provide TOPS-20 style command/filename completion. There are some
observations of a practical nature, on its acceptance by the user community,
that I would like to make:
(i) The list of possible commands one could use is usually so large that
it becomes an annoyance instead of a help. Here is a list of
commands that might start with an `l' (with the typical PATH people use
here).
(1) yshell ==> l?
One of the following :
l last lastcomm ld learn
leave lex limit lint lisp
liszt ln lnall lock login
logout look lookbib lorder lpq
lpr lprm ls lt lxref
lyacc
Contrast this with the TOPS-20
@l? Command, one of the following:
LATTACH LCOPY LOAD LOGIN LOGOUT
or system program name
On the TOPS-20, people often type just a question mark to get the
list of ALL commands, when they have forgotten the name of a
particular command. That, on unix, would produce a listing of more
than three screen-fulls. The trouble is, any way of deciding
upon an adequate subset is likely to make users limited to that
subset, thereby having them miss out on what I consider the best
feature of unix (i.e. the abundance of tools) from a user's
point of view.
This also causes problems when trying to complete a command using
<ESC>, since in a lot of cases one has to type a good part of
the command before it is uniquely recognizable. In a lot of other
(rather most) cases, there is hardly anything to be completed!
(ii) In the modified shell (which we call yshell), there is a provision
to provide one's own list of commands to recognize. Turns out, there
are a few of people using yshell, who are more familiar with
one of our 20's. They use yshell and a suitable list of aliasing
(usually set up for them by someone upon asking, "How can I use this
system just like the 20?") to produce names and environment resembling
TOPS-20. I am not sure this is very desirable. This is just a special
case of chosing a supposedly adequate subset of commands.
(iii) The regular unix users rarely tend to use the recognition features.
Certainly NEVER for completing a command. Even I myself rarely use it,
and then only to find out and/or complete file names (e.g. when I
have typed /usr/src/cmd but have forgotten the file name in that
directory that I want to use).
(iv) There is the problem of providing help for possible arguments to
a command. Yshell does not attempt to do this, and assumes that
an argument has to be a file name. To make it better, one might
have to :
(a) Modify all the existing programs to use some form
of COMND JSYS.
or,
(b) Provide some system table, where each program's
author, (or some maintainer) puts, in some form,
the expectations the program has.
The first, of course, is unthinkable. The second is very likely
to run into high administrative problems, with the way unix systems
tend to change and evolve.
As a matter of fact, the reason most people use yshell usually is not the
command recognition features, but some other features which slowly got
added on upon user suggestions. (E.g. history editing with cursor motions,
using syntax similar to the local screen editors.)
Given the fact that for good or for bad (for bad in my personal opinion),
the short unix commands are here to stay, it seems like any 20-style
command recognition will be more or less a waste of time. The only people
likely to use it are those who are well familiar with the 20 (or similar)
style to begin with. For others, while learning the super-un-mnemonic
names is a pain, once learnt, typing them out is easy enough, and no
one is likely to use much of any command completion. The recognition
features on the 20 are good precisely because the command names are
long enough to be meaningful to a beginner, but could be annoying to
an experienced user, if he/she had to type out all of it. (Or even a
unique abbreviation, since in a lot of cases one would not be sure how
little is enough for uniqueness. The command completion is helpful there.)
Perhaps the manual by the terminal is a necessity. Or a better
online documentation scheme. How about a general HELP command which
would list the major subsections of programs, and let you interactively
walk down the subsections (which might have more subsections), until you
find out what you wanted to ? What I mean is something like `learn' but
where on picking a certain subsection, you get short descriptions of commands
or of further subsections. This could be very helpful when you have just
forgotten a command name ( just remember the days when you were starting with
unix ) or know the command name, but need a short description of flags,
or don't know if anything already exists to do what you want done.
( Something like that has been done at Yale for documenting the local tools
on the TOPS-20. ) Does anyone have, or know of, such a help system for unix?
-- Mukesh Prasad
(decvax!yale-comix!mp)
More information about the Comp.unix.wizards
mailing list