>  기사  >  웹 프론트엔드  >  이 기사에서는 zx 라이브러리를 사용하여 Nodejs에서 Shell 스크립트를 작성하는 방법에 대해 설명합니다.

이 기사에서는 zx 라이브러리를 사용하여 Nodejs에서 Shell 스크립트를 작성하는 방법에 대해 설명합니다.

青灯夜游
青灯夜游앞으로
2022-01-19 19:42:233480검색

노드에서 쉘 스크립트를 작성하는 방법은 무엇입니까? 다음 글은 zx 라이브러리를 사용하여 Node에서 쉘 스크립트를 작성하는 방법을 소개합니다. 도움이 되길 바랍니다!

이 기사에서는 zx 라이브러리를 사용하여 Nodejs에서 Shell 스크립트를 작성하는 방법에 대해 설명합니다.

셸 스크립트

셸 스크립트, 즉 Bash나 zsh와 같은 셸에서 실행되는 스크립트를 만드는 것은 특히 운영 및 유지 관리 담당자의 경우 반복 작업을 자동화하는 데 사용되는 일반적인 방법입니다. . 프런트엔드 엔지니어의 경우 Node.js를 사용하여 셸 스크립트를 작성하는 것은 많은 핵심 모듈을 제공하고 다른 프런트엔드 스크립트 라이브러리를 가져올 수 있어 학습 비용을 줄일 수 있기 때문에 좋은 선택입니다.

zx.js를 사용하지 않고 Node.js에서 실행되는 셸 스크립트를 작성하려고 하면 원하는 만큼 원활하지 않을 수 있습니다. 하위 프로세스에 대한 특수 처리를 작성하고 명령줄 매개변수를 이스케이프하도록 주의한 다음 표준 출력 stdout 및 표준 오류 stderr를 사용해야 합니다. 이는 특별히 직관적이지 않습니다. , 그리고 쉘 스크립트를 사용하여 변수를 작성합니다. 매우 서투릅니다. zx.js 想尝试编写一个在 Node.js 下运行的 shell 脚本,可能会发现它并不像希望的那样流畅。需要为子进程编写特殊处理,注意转义命令行参数,然后使用标准输出 stdout 和标准错误 stderr,它不是特别直观,并且使用 shell 脚本编写变得非常笨拙。

Bash shell 脚本语言是编写 shell 脚本的最佳选择,不需要编写代码来处理子进程,并且它具有用于处理 stdoutstderr 的内置语言特性。但是用Bash编写 shell 脚本也不是那么容易,语法可能相当混乱,使得实现逻辑或处理提示用户输入之类的事情变得不那么方便。

Google 的 zx.js 库有助于使用 Node.js 高效且愉快地编写 shell 脚本。

官方网站:https://github.com/google/zx#-zx

安装

对于前端工程师来说,安装一个依赖是家常便饭,运行以下脚本:

npm install zx

使用

Google 的 zx.js 提供了封装子进程的创建以及从这些进程处理 stdoutstderr 的函数。下面将使用的主要函数是 $ 函数,使用 zx.js  规定脚本写入扩展名为 .mjs 的文件中,以便能够在顶层使用 await。如果习惯于 .js 扩展名,请将脚本包装在类似 void async function () {...}() 中。

下面先来使用扩展名 .mjs,每个 .mjs 文件都将以下代码作为开头:

#! /usr/bin/env node

下面就来实现一个 shell 脚本中 ls 的功能,创建文件 ls.mjs ,完整代码如下:

#! /usr/bin/env node

import { $ } from "zx";
$.verbose = false;
const output = (await $`ls`).stdout.trim();
console.log(output);

shell 脚本文件一样,需要将其转为可执行文件:

chmod +x ./ls.mjs

下面就来执行这个 Node.js 编写的 shell 脚本,执行:

./ls.mjs

이 기사에서는 zx 라이브러리를 사용하여 Nodejs에서 Shell 스크립트를 작성하는 방법에 대해 설명합니다.

Google 的  zx.js  还提供了其他实用函数来简化 shell 脚本编写,例如:

cd():允许更改当前的工作目录question():Node.js 的 readline 模块的包装器,可以直接提示用户输入。

#! /usr/bin/env node

import { $, cd } from "zx";
$.verbose = false; // 默认为true,以详细模式运行
const output = (await $`ls`).stdout.trim();
console.log(output);

const dirName = "zx-mkdir-tmp";
await $`mkdir ${dirName}`; // 创建目录

cd(`./${dirName}`);
const pwdOutput = (await $`pwd`).stdout.trim();
console.log(pwdOutput); // zx-mkdir-tmp

除了 zx.js 提供的实用功能外,它还提供了几个流行的脚本库,例如:

  • chalk:允许为脚本的输出添加颜色。
  • minimist:解析命令行参数的库,将它们暴露在 argv 对象下。
  • fetch:可以使用它来发出 HTTP 请求。
  • fs-extra:公开了 Node.js 核心 fs
  • Bash 쉘 스크립팅 언어는 스크립트 작성을 위한 최선의 선택입니다. 하위 프로세스를 처리하기 위해 코드를 작성할 필요가 없으며 stdout 처리 기능이 있습니다. stderr 의 내장 언어 기능입니다. 그러나 Bash에서 스크립트를 작성하는 것은 그리 쉽지 않으며 구문이 상당히 혼란스러울 수 있으므로 논리를 구현하거나 사용자 입력 요청과 같은 작업을 처리하는 것이 불편할 수 있습니다.

Google의 zx.js 라이브러리는 Node.js를 사용하여 shell 스크립트를 효율적이고 즐겁게 작성하는 데 도움이 됩니다.

🎜공식 웹사이트: https://github.com/google/zx#-zx🎜🎜🎜🎜Installation🎜🎜🎜🎜프론트 엔드 엔지니어의 경우 종속성을 설치하는 것이 일반적입니다. 다음 스크립트를 실행하세요.🎜rrreee🎜🎜🎜 🎜🎜🎜🎜Google의 zx.js를 사용하면 하위 프로세스 생성을 캡슐화하고 이러한 프로세스에서 stdoutstderr를 처리하는 기능을 제공합니다. 아래에서 사용할 주요 함수는 $ 함수입니다. zx.js를 사용하여 스크립트가 확장자가 .mjs를 사용하여 최상위 수준에서 <code>await를 사용할 수 있습니다. .js 확장에 익숙하다면 void async function () {...}()와 같은 것으로 스크립트를 래핑하세요. 🎜🎜먼저 .mjs 확장자를 사용해 보겠습니다. 각 .mjs 파일은 다음 코드로 시작합니다: 🎜rrreee🎜 shell을 구현해 보겠습니다. 스크립트의 ls 함수는 ls.mjs 파일을 생성합니다. 전체 코드는 다음과 같습니다. 🎜rrreee🎜과 동일합니다. > 스크립트 파일을 실행 파일로 변환해야 합니다: 🎜rrreee🎜 Node.js로 작성된 이 shell 스크립트를 실행해 보겠습니다. 실행: 🎜rrreee🎜이 기사에서는 zx 라이브러리를 사용하여 Nodejs에서 Shell 스크립트를 작성하는 방법에 대해 설명합니다.🎜🎜Google의 zx.js는 또한 다른 유용한 기능도 제공합니다. 기능 쉘 스크립팅을 단순화하는 함수, 예: 🎜🎜cd(): 현재 작업 디렉터리 변경 허용 question(): Node.js의 readline 모듈에 대한 래퍼 , 사용자에게 직접 입력하라는 메시지를 표시할 수 있습니다. 🎜rrreee🎜 zx.js에서 제공하는 실용적인 기능 외에도 다음과 같은 여러 인기 스크립트 라이브러리도 제공합니다. 🎜

위 내용은 이 기사에서는 zx 라이브러리를 사용하여 Nodejs에서 Shell 스크립트를 작성하는 방법에 대해 설명합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 juejin.cn에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제