rembrembdocs

Skip to main content

Bun home pagelight logodark logo

[Runtime

](../../../index.md)[Package Manager

](../../../pm/cli/install/index.md)[Bundler

](../../../bundler/index.md)[Test Runner

](../../../test/index.md)[Guides

](../../index.md)[Reference

](https://bun.com/reference)[Blog

](https://bun.com/blog)[Feedback

](../../../feedback/index.md)

Bun Shell is a cross-platform bash-like shell built in to Bun. It runs shell commands in JavaScript and TypeScript. To get started, import the $ function from the bun package and use it to run shell commands.

https://mintcdn.com/bun-1dd33a4e/JUhaF6Mf68z_zHyy/icons/typescript.svg?fit=max&auto=format&n=JUhaF6Mf68z_zHyy&q=85&s=7ac549adaea8d5487d8fbd58cc3ea35bfoo.ts

import { $ } from "bun";

await $`echo Hello, world!`; // => "Hello, world!"

The $ function is a tagged template literal that runs the command and returns a promise that resolves with the command’s output.

https://mintcdn.com/bun-1dd33a4e/JUhaF6Mf68z_zHyy/icons/typescript.svg?fit=max&auto=format&n=JUhaF6Mf68z_zHyy&q=85&s=7ac549adaea8d5487d8fbd58cc3ea35bfoo.ts

import { $ } from "bun";

const output = await $`ls -l`.text();
console.log(output);

To get each line of the output as an array, use the lines method.

https://mintcdn.com/bun-1dd33a4e/JUhaF6Mf68z_zHyy/icons/typescript.svg?fit=max&auto=format&n=JUhaF6Mf68z_zHyy&q=85&s=7ac549adaea8d5487d8fbd58cc3ea35bfoo.ts

import { $ } from "bun";

for await (const line of $`ls -l`.lines()) {
  console.log(line);
}

See Docs > API > Shell for complete documentation.

Was this page helpful?

Suggest editsRaise issue

[

Get the process uptime in nanoseconds

Previous

](../../process/nanoseconds/index.md)[

Set a time zone in Bun

Next

](../timezone/index.md)