shell-command) reads a line of text using the
minibuffer and creates an inferior shell to execute the line as a command.
Standard input from the command comes from the null device. If the shell
command produces any output, the output goes to an SXEmacs buffer named
‘*Shell Command Output*’, which is displayed in another window but not
selected. A numeric argument, as in M-1 M-!, directs this command to
insert any output into the current buffer. In that case, point is left
before the output and the mark is set after the output.
shell-command-on-region) is like M-! but passes
the contents of the region as input to the shell command, instead of no
input. If a numeric argument is used to direct output to the current
buffer, then the old region is deleted first and the output replaces it as
the contents of the region.
Both M-! and M-| use
shell-file-name to specify the
shell to use. This variable is initialized based on your
environment variable when you start SXEmacs. If the file name does not
specify a directory, the directories in the list
searched; this list is initialized based on the
variable when you start SXEmacs. You can override either or both of these
default initializations in your init file. See Init File.
When you use M-! and M-|, SXEmacs has to wait until the shell command completes. You can quit with C-g; that terminates the shell command.