A command shell is a command-line interface to interact with and manipulate a computer's operating system.
[43] The fish shell additionally supports parsing of man pages to extract parameter information that can be used to improve completions/suggestions.
This metadata is used by PowerShell to automatically support argument name and value completion for built-in commands/functions, user-defined commands/functions as well as for script files.
Having the shell prompt for missing values will allow the author of a script, command or function to mark a parameter as mandatory instead of creating script code to either prompt for the missing values (after determining that it is being run interactively) or fail with a message.
Shells featuring automatic suggestions display optional command-line completions as the user types.
The PowerShell and fish shells natively support this feature; pressing the Tab ↹ key inserts the completion.
There are two approaches to this; the shell can either suggest probable corrections upon command invocation, or this can happen earlier as part of a completion or autosuggestion.
The feature is therefore not in the way when typing out the whole command and pressing enter, whereas extensive use of the tab and right-arrow keys makes the shell mostly case insensitive.
The PSReadLine[31] PowerShell module (which is shipped with version 5.0) provides the option to specify a CommandValidationHandler ScriptBlock which runs before submitting the command.
A shell script (or job) can report progress of long running tasks to the interactive user.
Unix/Linux systems may offer other tools support using progress indicators from scripts or as standalone-commands, such as the program "pv".
The command line processors in DOS Plus, Multiuser DOS, REAL/32 and in all versions of DR-DOS support a number of optional environment variables to define escape sequences allowing to control text highlighting, reversion or colorization for display or print purposes in commands like TYPE.
A defining feature of the fish shell is built-in syntax highlighting, As the user types, text is colored to represent whether the input is a valid command or not (the executable exists and the user has permissions to run it), and valid file paths are underlined.
PowerShell provides customizable syntax highlighting on the command line through the PSReadLine[31] module.
In anticipation of what a given running application may accept as keyboard input, the user of the shell instructs the shell to generate a sequence of simulated keystrokes, which the application will interpret as a keyboard input from an interactive user.
Shells executing on a Unix/Linux operating system can use the stty external command to switch off/on echoing of input characters.
POSIX specifies that the exec family of functions shall fail with EACCESS (permission denied) if the file denies execution permission (see execve – System Interfaces Reference, The Single UNIX Specification, Version 4 from The Open Group).
A session configuration file can define visible (available) cmdlets, aliases, functions, path providers and more.
[75] One way to address this risk is for the shell to offer a safe subset of commands which can be executed by an included script.