Skip to main content
Deno.Command - Deno documentation
class Deno.Command
allow-run
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.

Examples

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)); ```

Constructors

new
Command(
command: string | URL,
options?: CommandOptions,
)

Methods

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.