System CommandsSystem commands are commands that interface in some way to the operating system, including coupling to external tools such as compilers.
The command shell-command is used to invoke any arbitrary shell command. Communication is one-way only. A command invoked in this way may not read from standard input. The output from this command is placed in buffer *shell*, which is made undeletable for the duration of the command.
The commands compile and grep invoke external tools. The output from these commands is placed in the buffer *compilation* and is expected to be in a format that can be subsequently processed using next-error or this-error. The *compilation* buffer is made undeletable for the duration of the command.
When invoked interactively, system commands place their output in buffers asynchronously: the editor user can proceed with other activities while the command is active. No more than one command of this type may be active at a time. When invoked from a script, these commands are synchronous: the command must finish before the script can continue.
The system commands are: