\HeaderA{system}{Invoke a System Command}{system}
\aliasA{unix}{system}{unix}
\keyword{interface}{system}
\keyword{file}{system}
\keyword{utilities}{system}
\begin{Description}\relax
\code{system} invokes the OS command specified by \code{command}.
\end{Description}
\begin{Usage}
\begin{verbatim}
system(command, intern = FALSE, ignore.stderr = FALSE)
\end{verbatim}
\end{Usage}
\begin{Arguments}
\begin{ldescription}
\item[\code{command}] the system command to be invoked, as a string.
\item[\code{intern}] a logical, indicates whether to make the output of the
command an \R{} object.
\item[\code{ignore.stderr}] a logical indicating whether error messages (written
to \file{stderr}) should be ignored.
\end{ldescription}
\end{Arguments}
\begin{Details}\relax
If \code{intern} is \code{TRUE} then \code{popen} is used to invoke the
command and the output collected, line by line, into an \R{}
\code{\LinkA{character}{character}} vector which is returned as the value of
\code{system}.  Output lines of more than 8095 characters will be split.

If \code{intern} is \code{FALSE} then the C function \code{system}
is used to invoke the command and the value returned by \code{system}
is the exit status of this function.

\code{unix} is a \emph{deprecated} alternative, available for
backwards compatibility.
\end{Details}
\begin{Value}
If \code{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.

If \code{intern=FALSE}, the return value is an error code.
\end{Value}
\begin{SeeAlso}\relax
\code{\LinkA{.Platform}{.Platform}} for platform specific variables.
\end{SeeAlso}
\begin{Examples}
\begin{ExampleCode}
# list all files in the current directory using the -F flag
## Not run: system("ls -F")

# t1 is a character vector, each one
# representing a separate line of output from who
t1 <- system("who", TRUE)

system("ls fizzlipuzzli", TRUE, TRUE)# empty since file doesn't exist
\end{ExampleCode}
\end{Examples}

