乐闻世界logo
搜索文章和话题

How do I run an arbitrary shell command from Deno?

4 个月前提问
4 个月前修改
浏览次数20

1个答案

1

在Deno中运行任意shell命令可以通过使用标准库中的Deno.run方法来实现。这个方法允许你指定要运行的命令及其参数,并控制命令如何执行。下面是一个具体的示例:

示例代码

假设我们想在Deno中运行一个简单的shell命令,例如echo "Hello, World!"

typescript
// 首先,需要确保在运行Deno脚本时,脚本有执行命令的权限。 // 可以在命令行中使用--allow-run标志来给予权限。 // deno run --allow-run=echo index.ts // 脚本内容如下: const cmd = "echo"; const args = ["Hello, World!"]; const process = Deno.run({ cmd: [cmd, ...args], // 将命令和参数数组结合 }); await process.status(); // 等待命令执行完成 process.close(); // 关闭进程资源

详细解释

  1. 权限控制:

    • 使用Deno.run前,必须确保脚本有足够的权限去运行外部命令。这是通过在运行时添加--allow-run标志来实现的。安全性考虑,具体的命令也可以在--allow-run后指定,比如--allow-run=echo只允许运行echo命令。
  2. 创建命令:

    • Deno.run方法接受一个对象,其中cmd属性是一个包含命令及其参数的数组。
  3. 执行与资源管理:

    • await process.status()是一个异步操作,等待命令执行完毕。
    • 执行完毕后,使用process.close()来确保释放由这个进程占用的资源。

安全性提示

  • 在使用Deno.run执行shell命令时,应当小心处理输入参数,避免注入攻击。
  • 限制命令执行权限只给必要的命令可以减少安全风险。

通过这种方式,Deno提供了一个比较安全且灵活的方式来运行外部命令,同时保持了对资源的精细控制。

2024年7月20日 18:56 回复

你的答案