class Deno.Command
Create a child process.
If any stdio options are not set to `"piped"`, accessing the corresponding
field on the `Command` or its `CommandOutput` will throw a `TypeError`.
If `stdin` is set to `"piped"`, the `stdin` `WritableStream`
needs to be closed manually.
`Command` acts as a builder. Each call to `Command.spawn` or
`Command.output` will spawn a new subprocess.
Spawn a subprocess and pipe the output to a file
```ts
const command = new Deno.Command(Deno.execPath(), {
args: [
"eval",
"console.log('Hello World')",
],
stdin: "piped",
stdout: "piped",
});
const child = command.spawn();
// open a file and pipe the subprocess output to it.
child.stdout.pipeTo(
Deno.openSync("output", { write: true, create: true }).writable,
);
// manually close stdin
child.stdin.close();
const status = await child.status;
```
Spawn a subprocess and collect its output
```ts
const command = new Deno.Command(Deno.execPath(), {
args: [
"eval",
"console.log('hello'); console.error('world')",
],
});
const { code, stdout, stderr } = await command.output();
console.assert(code === 0);
console.assert("hello\n" === new TextDecoder().decode(stdout));
console.assert("world\n" === new TextDecoder().decode(stderr));
```
Spawn a subprocess and collect its output synchronously
```ts
const command = new Deno.Command(Deno.execPath(), {
args: [
"eval",
"console.log('hello'); console.error('world')",
],
});
const { code, stdout, stderr } = command.outputSync();
console.assert(code === 0);
console.assert("hello\n" === new TextDecoder().decode(stdout));
console.assert("world\n" === new TextDecoder().decode(stderr));
```
new
Command(command: string | URL,options?: CommandOptions,)
output(): Promise<CommandOutput>
Executes the [`Deno.Command`](../././~/Deno.Command), waiting for it to finish and
collecting all of its output.
Will throw an error if `stdin: "piped"` is set.
If options `stdout` or `stderr` are not set to `"piped"`, accessing the
corresponding field on [`Deno.CommandOutput`](../././~/Deno.CommandOutput) will throw a `TypeError`.
Synchronously executes the [`Deno.Command`](../././~/Deno.Command), waiting for it to
finish and collecting all of its output.
Will throw an error if `stdin: "piped"` is set.
If options `stdout` or `stderr` are not set to `"piped"`, accessing the
corresponding field on [`Deno.CommandOutput`](../././~/Deno.CommandOutput) will throw a `TypeError`.
Spawns a streamable subprocess, allowing to use the other methods.