-
Notifications
You must be signed in to change notification settings - Fork 235
Description
Allright y'all. We're reinventing the command line, and we should do it right - with human-readable and -rememberable command names. Let's add a new goal to the project goals: to finally address Donald Norman's criticism in his classic article "The trouble with UNIX" (http://www.linux.org.uk/~dan/rumor/rumor.shrink). Along this line, I suggested to Steven on Twitter that TermKit could have an optional layer that replaces standard command names (cp, mv, etc) with human-readable versions (copy, rename, and so on); he suggested I compile a list of replacement names.
The aim, I think, is to eliminate the need for manuals (and Googling) in 80% of cases. Obviously, manuals will never become obsolete, but we need to make a system where a casual user can simply type in what they want and get the right result in most cases.
Here are some ideas for command names:
showshould do whatcatdoes in Steven's current screenshots - ie., display a file - when applied to a file; this might be implemented withless. When applied to a directory, it should bels. It should still have the functionality oflswhen passed multiple files as arguments - ie., it should list them - because it isn't cat: it won't combine files. Combining files is a much less popular action than showing them.copyforcp -r. I think being able to move directories should be the default, and thedir/syntax for moving all the files in a directory (see http://en.wikipedia.org/wiki/Cp_(Unix)) should be removed; users should have to typedir/*to do that.renameandmovefor the two different functions ofmvdeleteforrm -r. Users shouldn't have to remember a separate option for directories here, either.gotoforcdandhomeforcd ~nowfordateandhereforpwdset-system-timefor the system-time-changing functionality ofdatelinkforln. Remove the reallink.- possibly
waitforsleep, though as @hach-que points out below this conflicts with another command. as-adminforsudoopenforopenon Mac OS X, and something similar on other platforms.edit, which would be likeopenis on OS X, but geared towards editing rather than viewing - eg. it would open your text editor for HTML files, your image editor for JPGs, and so on.
I think most commands should be verbose when in user-facing mode: for example, rename should show the new file(s), wait should have a countdown, etc.
Keep in mind this layer will be optional, so please don't comment pointing out that this would be annoying for experienced users. A nice user experience might be to have TermKit ask whether the user would like traditional or user-friendly commands when first launched, and to have the option be toggle-able in the Preferences thereafter. Per @cafarm below, it would also be nice to have an option that echos the underlying commands being performed, which you could toggle on for debugging and/or learning the old commands.
Two challenges that I'm not sure how best to handle are 1) creating files and directories (perhaps create dir/ for mkdir and create file (without the trailing slash) for touch?) and 2) searching for things: the problem is that grep and find are distinctly different, but both are expressed by the concept of 'search' or 'find'. What's the best way to distinguish between the two?