Command history There is a command line editor and history mechanism built into calc, which is active when stdin is a terminal. When stdin is not a terminal, then the command line editor is disabled. Lines of input to calc are always terminated by the return (or enter) key. When the return key is typed, then the current line is executed and is also saved into a command history list for future recall. Before the return key is typed, the current line can be edited using emacs-like editing commands. As examples, ^A moves to the beginning of the line, ^F moves forwards through the line, backspace removes characters from the line, and ^K kills the rest of the line. Previously entered commands can be recalled by using the history list. The history list functions in a LRU manner, with no duplicated lines. This means that the most recently entered lines are always at the end of the history list where they are easiest to recall. Typing <esc>h lists all of the commands in the command history and numbers the lines. The most recently executed line is always number 1, the next most recent number 2, and so on. The numbering for a particular command therefore changes as lines are entered. Typing a number at the beginning of a line followed by <esc>g will recall that numbered line. So that for example, 2<esc>g will recall the second most recent line that was entered. The ^P and ^N keys move up and down the lines in the history list. If they attempt to go off the top or bottom of the list, then a blank line is shown to indicate this, and then they wrap around to the other end of the list. Typing a string followed by a ^R will search backwards through the history and recall the most recent command which begins with that string. Typing ^O inserts the current line at the end of the history list without executing it, and starts a new line. This is useful to rearrange old history lines to become recent, or to save a partially completed command so that another command can be typed ahead of it. If your terminal has arrow keys which generate escape sequences of a particular kind (<esc>[A and so on), then you can use those arrow keys in place of the ^B, ^F, ^P, and ^N keys. The actual keys used for editing are defined in a bindings file, called /usr/lib/calc/bindings. Changing the entries in this file will change the key bindings used for editing. If the file is not readable, then a message will be output and command line editing is disabled. In this case you can only edit each line as provided by the terminal driver in the operating system. A shell command can be executed by typing '!cmd', where cmd is the command to execute. If cmd is not given, then a shell command level is started.