노드에서 쉘 스크립트를 작성하는 방법은 무엇입니까? 다음 글은 zx 라이브러리를 사용하여 Node에서 쉘 스크립트를 작성하는 방법을 소개합니다. 도움이 되길 바랍니다!
셸 스크립트
셸 스크립트, 즉 Bash나 zsh와 같은 셸에서 실행되는 스크립트를 만드는 것은 특히 운영 및 유지 관리 담당자의 경우 반복 작업을 자동화하는 데 사용되는 일반적인 방법입니다. . 프런트엔드 엔지니어의 경우 Node.js를 사용하여 셸 스크립트를 작성하는 것은 많은 핵심 모듈을 제공하고 다른 프런트엔드 스크립트 라이브러리를 가져올 수 있어 학습 비용을 줄일 수 있기 때문에 좋은 선택입니다.
zx.js
를 사용하지 않고 Node.js에서 실행되는 셸 스크립트를 작성하려고 하면 원하는 만큼 원활하지 않을 수 있습니다. 하위 프로세스에 대한 특수 처리를 작성하고 명령줄 매개변수를 이스케이프하도록 주의한 다음 표준 출력 stdout
및 표준 오류 stderr
를 사용해야 합니다. 이는 특별히 직관적이지 않습니다. , 그리고 쉘 스크립트를 사용하여 변수를 작성합니다. 매우 서투릅니다. zx.js
想尝试编写一个在 Node.js 下运行的 shell 脚本,可能会发现它并不像希望的那样流畅。需要为子进程编写特殊处理,注意转义命令行参数,然后使用标准输出 stdout
和标准错误 stderr
,它不是特别直观,并且使用 shell 脚本编写变得非常笨拙。
Bash shell 脚本语言是编写 shell
脚本的最佳选择,不需要编写代码来处理子进程,并且它具有用于处理 stdout
和 stderr
的内置语言特性。但是用Bash编写 shell
脚本也不是那么容易,语法可能相当混乱,使得实现逻辑或处理提示用户输入之类的事情变得不那么方便。
Google 的 zx.js
库有助于使用 Node.js 高效且愉快地编写 shell
脚本。
官方网站:https://github.com/google/zx#-zx
安装
对于前端工程师来说,安装一个依赖是家常便饭,运行以下脚本:
npm install zx
使用
Google 的 zx.js
提供了封装子进程的创建以及从这些进程处理 stdout
和 stderr
的函数。下面将使用的主要函数是 $
函数,使用 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
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
提供的实用功能外,它还提供了几个流行的脚本库,例如:
argv
对象下。fs
쉘
스크립트 작성을 위한 최선의 선택입니다. 하위 프로세스를 처리하기 위해 코드를 작성할 필요가 없으며 stdout
및 처리 기능이 있습니다. stderr
의 내장 언어 기능입니다. 그러나 Bash에서 셸
스크립트를 작성하는 것은 그리 쉽지 않으며 구문이 상당히 혼란스러울 수 있으므로 논리를 구현하거나 사용자 입력 요청과 같은 작업을 처리하는 것이 불편할 수 있습니다. Google의 zx.js
라이브러리는 Node.js를 사용하여 shell
스크립트를 효율적이고 즐겁게 작성하는 데 도움이 됩니다.
zx.js
를 사용하면 하위 프로세스 생성을 캡슐화하고 이러한 프로세스에서 stdout
및 stderr
를 처리하는 기능을 제공합니다. 아래에서 사용할 주요 함수는 $
함수입니다. zx.js
를 사용하여 스크립트가 확장자가 .mjs를 사용하여 최상위 수준에서 <code>await
를 사용할 수 있습니다. .js
확장에 익숙하다면 void async function () {...}()
와 같은 것으로 스크립트를 래핑하세요. 🎜🎜먼저 .mjs
확장자를 사용해 보겠습니다. 각 .mjs
파일은 다음 코드로 시작합니다: 🎜rrreee🎜 shell
을 구현해 보겠습니다. 스크립트의 ls
함수는 ls.mjs
파일을 생성합니다. 전체 코드는 다음과 같습니다. 🎜rrreee🎜쉘
과 동일합니다. > 스크립트 파일을 실행 파일로 변환해야 합니다: 🎜rrreee🎜 Node.js로 작성된 이 shell
스크립트를 실행해 보겠습니다. 실행: 🎜rrreee🎜🎜🎜Google의 zx.js
는 또한 다른 유용한 기능도 제공합니다. 기능 쉘 스크립팅을 단순화하는 함수, 예: 🎜🎜cd()
: 현재 작업 디렉터리 변경 허용 question()
: Node.js의 readline 모듈에 대한 래퍼 , 사용자에게 직접 입력하라는 메시지를 표시할 수 있습니다. 🎜rrreee🎜 zx.js
에서 제공하는 실용적인 기능 외에도 다음과 같은 여러 인기 스크립트 라이브러리도 제공합니다. 🎜argv
개체 아래에 노출합니다. 🎜fs
모듈과 함께 파일 시스템 작업을 더 쉽게 만드는 다양한 방법을 공개합니다. 🎜🎜🎜노드 관련 지식을 더 보려면 🎜nodejs 튜토리얼🎜을 방문하세요! ! 🎜위 내용은 이 기사에서는 zx 라이브러리를 사용하여 Nodejs에서 Shell 스크립트를 작성하는 방법에 대해 설명합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!