Defining rules for `ah-tty':
Levels are a list of digits (0-7) marking which "help level" this rule will match. The idea behind help levels is that as users gain more experience they will increase their help level and cut down the number of patronizing messages they receive. Currently, the supplied `ah-tty.conf' only uses levels 0 and 1.
Regexp is the extended POSIX regular expression that the command typed by the user must match before the hint is displayed.
In the case where more than one rule matches the current line, only one hint at a time will be displayed, in the order they appear in the file. Each hint will only be displayed once per prompt, that is, it won't match again until the user hits Return.
There are typically 4 types of entries:
I recommend that you go from the most general to the most specific
The start of the regex pattern for a command should be something like:
(^|[|\;])[[:space:]]*
This makes sure to match the start of the a command line, after a pipe or a start of a new command. It also recognizes spaces that the user may use for readability. But it makes sure that it is a command, not some option or file name used as part of another command. (Yes, that regular expression prefix is hideous, ugly, and generally silly looking.)
:= (^|[|\;])[[:space:]]*mv[[:space:]]+([^-|\;&[:space:]][^|\;&[:space:]]*)[^-|\;&]*[[:space:]][^-|\;&]*\2([|;&)]|$)
That is the most complicated rule in `ah-tty''s database, atleast at this moment. Laboratory animals contracted several new forms of extreme indigestion during testing of that rule.
For all its bluster, the rule is meant to catch a fairly straight forward type of command line. Here are some examples:
mv foobar.c foobar.bak mv foobar.c -i foobar.bak mv -i foobar.c foobar.bak
The rule watches for the `mv' command, ignores the commnand flags and other options. It does notice the file names, especially when the filenames are very similar.
If `ah-tty' spots a command that matches this rule, it will print the following helpful hint:
Using `mv' and braces to renaming files: `mv' fixbold{5,6} Renames the file `fixbold5' to `fixbold6'. Useful to fix typos `mv' fixbold{,bak} Renames `fixbold' to `fixbold.bak'
There are some simple markup rules that are used to provide visual hints to the user
|