system {base} | R Documentation

## Invoke a System Command

### Description

`system` invokes the system command specified by `command`.

### Usage

    system(command, intern = FALSE, wait = TRUE, input = NULL,
           show.output.on.console = FALSE,
           minimized = FALSE, invisible = FALSE)

### Arguments

`command` | the system command to be invoked, as a string.
`intern` | a logical, indicates whether to make the output of the command an R object.
`wait` | should the R interpreter wait for the command to finish? The default is to wait, and the interpreter will always wait if `intern = TRUE`.
`input` | if a character vector is supplied, this is copied one string per line to a temporary file, and the standard input of `command` is redirected to the file.
`show.output.on.console` | a logical, indicates whether to capture the output of the command and show it on the R console (not used by `Rterm`, which captures the output unless `wait` is false).
`minimized` | a logical, indicates whether the command window should be initially displayed as a minimized window.
`invisible` | a logical, indicates whether the command window should be visible on the screen.

### Details

`cmd` is parsed as a command plus arguments separated by spaces. So if the path to the command contains spaces, it must be (double-)quoted. See the examples. (Note: a Windows path name cannot contain a double quote, so we do not need to worry about escaping embedded quotes.)

The command is run directly as a Windows command by the Windows API call `CreateProcess`: extensions of `.exe`, `.com`, `.cmd` and `.bat` are tried in turn if none is supplied. (To use DOS internal commands use `paste(Sys.getenv("COMSPEC"),"/c",cmd)`.) The search path for `command` may be system-dependent: it will include the R `bin` directory, the working directory and the Windows system directories before `PATH`.

Precisely what is seen by the user depends on whether `Rgui` or `Rterm` is being used. For `Rgui` a new console will always be used, so a commands window will appear for the duration of console applications unless `invisible` is true. For `Rterm` a separate commands window will appear for console applications only if `wait = FALSE`.

`unix` is a deprecated alternative, available for backwards compatibility.

### Value

If `intern = TRUE`, a character vector giving the output of the command, one line per character string. If the command could not be run or gives an error a R error is generated. (Output lines of more than 8095 characters will be split.)
If `intern = FALSE`, the return value is an error code, given the invisible attribute (so needs to be printed explicitly). If the command could not be run for any reason, the value is `-1` and an R warning is generated. Otherwise if `wait = FALSE` the value is the error code returned by the command, and if `wait = TRUE` it is the zero (the conventional success value),
If `intern = FALSE` and `show.output.on.console = TRUE` the text output from a command that is a console application will appear in the R console (`Rgui`) or the window running R (`Rterm`).

### Warning

The command cannot be interrupted by the R process.

Do not run console applications that require user input from `Rgui` setting `intern = TRUE` and/or `show.output.on.console = TRUE`. They will not work, may hang and then will probably hang `Rgui` too.

### See Also

`shell` or `shell.exec` for a less raw interface.

### Examples

    # launch an editor, wait for it to quit
    ## Not run: system("notepad myfile.txt")
    # launch a Windows 9x process monitor (from Win9x KernelToys)
    ## Not run: system("wintop", wait = FALSE)
    # launch your favourite shell:
    ## Not run: system(Sys.getenv("COMSPEC"))
    ## Not run:
    ## note the two sets of quotes here:
    system(paste('"c:/Program Files/Mozilla Firefox/firefox.exe"',
                 '-url cran.r-project.org'), wait = FALSE)
    ## End(Not run)

[Package base version 2.3.1 Index]