精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

能用Js實(shí)現(xiàn)的最終用Js實(shí)現(xiàn),Shell腳本也不例外

開(kāi)發(fā) 前端
ash 用來(lái)寫(xiě)腳本非常棒,但是大家通常還是會(huì)去選擇一種更方便方式去編寫(xiě)腳本,例如使用像 JavaScript 這種編程語(yǔ)言。但是 Node.js 在使用之前需要很多額外的操作,比如裝包、引庫(kù)等。但是zx 提供更多便捷的功能并且還對(duì) child_process 進(jìn)行了簡(jiǎn)化封裝,從而能夠直接調(diào)用一些命令。

大家好,我是秋風(fēng)。

今天來(lái)討論一個(gè)牛逼的項(xiàng)目 ——zx ,1個(gè)月增長(zhǎng)15000 star, 成為了2021年度明星項(xiàng)目排行榜第一。

zx 到底是什么呢?

我們可以從官網(wǎng)的介紹看到,一個(gè)能更方便地寫(xiě)腳本的工具。(A tool for writing better scripts)

Bash is great, but when it comes to writing scripts, people usually choose a more convenient programming language. JavaScript is a perfect choice, but standard Node.js library requires additional hassle before using. The zx package provides useful wrappers around child_process, escapes arguments and gives sensible defaults.

翻譯:

Bash 用來(lái)寫(xiě)腳本非常棒,但是大家通常還是會(huì)去選擇一種更方便方式去編寫(xiě)腳本,例如使用像 JavaScript 這種編程語(yǔ)言。但是 Node.js 在使用之前需要很多額外的操作,比如裝包、引庫(kù)等。但是zx 提供更多便捷的功能并且還對(duì) child_process 進(jìn)行了簡(jiǎn)化封裝,從而能夠直接調(diào)用一些命令。

通過(guò)閱讀摘要和描述,我們可以知道雖然 Bash 很棒,但是沒(méi)有 Node.js 簡(jiǎn)單。雖然 Node.js 編寫(xiě)起來(lái)簡(jiǎn)單,但是在使用前還是有一些麻煩的操作。而zx 沒(méi)有以上兩種方式的缺點(diǎn),能夠化繁為簡(jiǎn),提供簡(jiǎn)單又方便操作。

在繼續(xù)深入了解 zx 前,我們先來(lái)屢清楚目前提到的一些概念,了解這些概念有助于我們更好地去寫(xiě)腳本。

Shell、Shell腳本、Bash、zx、Node

首先來(lái)說(shuō)說(shuō)什么是Shell,Shell的中文意思是貝殼,是指與操作內(nèi)核連接的外殼。

狹義的Shell指的是命令行方面的軟件,大多指Bash(Bash全稱(chēng)為 Bourne Again SHell ,是linux標(biāo)準(zhǔn)的默認(rèn)Shell,它基于Bourne Shell,吸收了C Shell和Korn Shell );廣義的Shell則包括圖形界面。

因此 Shell 是一個(gè)大概念,包含了 Bash 等這些命令行工具,而利用這些工具寫(xiě)的腳本叫做Shell 腳本;而 Node 屬于編程語(yǔ)言,可以編寫(xiě) js 文件來(lái)執(zhí)行一些命令, zx 是基于 Node 開(kāi)發(fā)的工具,因此也能通過(guò)編寫(xiě)腳本來(lái)執(zhí)行命令。

他們之間的關(guān)系我用一張圖進(jìn)行了描述,標(biāo)題的概念用紅色字樣進(jìn)行了加重。

腳本可以做那些事情?

最為簡(jiǎn)單的就是重復(fù)的事情、處理數(shù)據(jù)格式,數(shù)據(jù)導(dǎo)入導(dǎo)出以及各種簡(jiǎn)單常用小工具的制作,環(huán)境配置等等。

舉一些具體的例子就是:

下載視頻

https://www.jianshu.com/p/0a013fa5a250

下載音樂(lè)

https://binaryify.github.io/NeteaseCloudMusicApi/#/

統(tǒng)計(jì)字?jǐn)?shù)

https://geek-docs.com/shell/shell-examples/the-shell-counts-the-number-of-lines-words-and-characters-in-the-file.html

自動(dòng)簽到

https://github.com/RWoxiN/Qiandao

...

功能太多了列舉不過(guò)來(lái),反正你會(huì)的操作能幫你簡(jiǎn)化,你不會(huì)的操作能幫你實(shí)現(xiàn)。

哪些人可以使用?

腳本不僅僅可以幫助開(kāi)發(fā)人員還能幫助非開(kāi)發(fā)人員。

例如很多人都喜歡在個(gè)人博客上面寫(xiě)文章,這時(shí)就可以用WordPress 快速搭建一個(gè)博客,然后我們就用腳本一鍵來(lái)安裝WordPress,下面以 Shell 腳本為例:

https://gist.github.com/dessibelle/2666478

zx、Node、Shell(Bash) 功能評(píng)測(cè)

上面聊了腳本的一些概念以及腳本能幫助我們做什么。那么既然腳本這么強(qiáng)大,且腳本種類(lèi)也非常多,為什么 zx 一經(jīng)推出就這么收歡迎呢?

我們就以實(shí)際的功能為例來(lái)體驗(yàn)一下,分別使用了zx、Node、Shell(Bash,以下都稱(chēng)作Bash )三種腳本寫(xiě)一個(gè)批量壓縮音視頻的腳本。

實(shí)現(xiàn)一個(gè)音頻功能主要分成四個(gè)步驟

1.遍歷當(dāng)前目錄

2.判斷當(dāng)前文件類(lèi)型

3.執(zhí)行壓縮音頻視腳本

首先我們先來(lái)看遍歷當(dāng)前目錄三種腳本的寫(xiě)法:

Bash

  1. #!bin/bash 
  2. for file in `(ls)`; 
  3. do 
  4.     ... 
  5. done 

Node

  1. import fs from 'fs'
  2.  
  3. const dirs = fs.readdirSync('./')); 
  4. for (let i in dirs) { 
  5.    ...  

zx

  1. const dirs = (await $`ls`).stdout.split('\n'
  2.  
  3. for (let i in dirs) { 
  4.   ... 

可以看到 Bash 和 zx 差不多,但是 zx 比Node 省去了引包的代碼。

優(yōu)勢(shì):zx = Bash > Node

其次我們?cè)賮?lái)看判斷當(dāng)前文件類(lèi)型三種腳本的寫(xiě)法:

Bash

  1. if test -f $file 
  2. then 
  3.     filename=$(basename $file); 
  4.     if [ "${file##*.}"x = "mp4"x ];then 
  5.          
  6.     fi 
  7.  
  8.     if [ "${file##*.}"x = "mp3"x ]; then 
  9.  
  10.     fi 
  11. fi 

Node、zx

  1. if (dirs[i] && !fs.statSync(source).isDirectory()) {  
  2.     if (source.endsWith(".mp4")) { 
  3.          
  4.     } 
  5.     if (source.endsWith(".mp3")) { 
  6.          
  7.     } 

用Shell 來(lái)寫(xiě)整體上代碼都非常的精煉,但是對(duì)于不經(jīng)常使用的人來(lái)說(shuō),常常會(huì)遇到一些問(wèn)題,例如 if 語(yǔ)句格式非常嚴(yán)格、判斷比較的方式比較特殊、字符串操作都比較麻煩。

優(yōu)勢(shì) Node = zx > Bash

最后再來(lái)執(zhí)行壓縮音頻視腳本:

Bash

  1. ... 
  2. ffmpeg -i $file -r 30 -c copy -c:v libx264 -vf scale=720:-2 "${filename%%.*}-30-720".mp4; 
  3. ... 

Node

  1. const { spawn } = require('child_process'); 
  2.  
  3. function run(command) { 
  4.     return new Promise((rev, rej) => { 
  5.         console.log(command); 
  6.         const cmd = spawn(command.slice(0, 1)[0], command.slice(1)); 
  7.  
  8.         cmd.stdout.on('data', (data) => { 
  9.           console.log(`stdout: ${data}`); 
  10.         }); 
  11.          
  12.         cmd.stderr.on('data', (data) => { 
  13.           console.error(`stderr: ${data}`); 
  14.         }); 
  15.          
  16.         cmd.on('close', (code) => { 
  17.             console.log(`child process exited with code ${code}`); 
  18.             rev(); 
  19.         }); 
  20.     }) 
  21.  
  22. ... 
  23. await run(["ffmpeg""-i", source ,"-r","30","-c""copy","-c:v""libx264",  "-vf""scale=720:-2", `${dirs[i].replace('.mp4''')}-30-720.mp4`]); 
  24. ... 

zx

  1. $`ffmpeg -i ${file} -r 30 -c copy -c:v libx264 -vf scale=720:-2 ${file.replace(".mp4","")}-30-720.mp4;`; 

用 zx 可以做到和 Shell 一樣的精簡(jiǎn),利用內(nèi)置的一些 Node 包使得整體的代碼量大大下降。Node需要寫(xiě)一些額外的代碼,例如執(zhí)行命令run等等。

優(yōu)勢(shì) Bash = zx > Node

  上手程度 代碼復(fù)雜度
Shell 簡(jiǎn)潔
Node 簡(jiǎn)單 繁瑣
zx 簡(jiǎn)單 簡(jiǎn)潔

 

zx 上手體驗(yàn)非常好,可以說(shuō)用四個(gè)字來(lái)概括, “簡(jiǎn)潔易用”,至此你是否對(duì) zx 心動(dòng)了呢?

 

責(zé)任編輯:武曉燕 來(lái)源: 秋風(fēng)的筆記
相關(guān)推薦

2011-03-03 09:35:04

js

2022-10-08 00:07:00

JSV8調(diào)用棧

2022-09-30 00:03:03

JS斷點(diǎn)線(xiàn)程

2021-02-20 09:20:05

存儲(chǔ)

2021-02-23 09:50:42

PythonJSWeb SSH

2020-05-07 09:45:16

前端JS圖片壓縮

2021-07-22 10:25:07

JS驗(yàn)證碼前端

2011-03-14 10:47:30

HashMap

2020-05-26 08:04:24

Shell腳本單例

2020-05-26 10:28:36

shell腳本單例運(yùn)行

2022-04-25 07:36:21

組件數(shù)據(jù)函數(shù)

2022-04-12 08:08:57

watch函數(shù)options封裝

2018-10-07 08:09:03

2022-08-10 16:52:06

CSS前端

2022-07-08 08:21:26

JSbind 方法

2022-07-25 14:17:04

JS應(yīng)用開(kāi)發(fā)

2012-05-02 13:53:00

JavaScript

2017-04-05 20:00:32

ChromeObjectJS代碼

2015-03-10 11:30:01

CanvasJS簡(jiǎn)易時(shí)鐘

2020-09-23 06:00:04

ShellLinux郵件監(jiān)控
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

日韩一区二区三区免费看| 国内成人免费视频| 欧美黑人巨大videos精品| 91免费小视频| 国产日韩中文在线| 精品少妇久久久久久888优播| 成人激情自拍| 在线观看日韩电影| 欧洲xxxxx| 九色在线免费| 国产成人精品一区二区三区网站观看| 8x海外华人永久免费日韩内陆视频| 91视频在线网站| 久久久久久爱| 在线观看一区二区精品视频| 日韩亚洲欧美一区二区| 国产三级在线免费观看| 成人妖精视频yjsp地址| 国产精品流白浆视频| 日本熟妇毛耸耸xxxxxx| 99精品电影| 亚洲丝袜在线视频| 精品人妻一区二区免费| 日本亚洲欧洲无免费码在线| 亚洲成人一二三| 国产高清免费在线| 黄色片在线播放| 成人听书哪个软件好| 成人自拍性视频| 波多野结衣黄色网址| av成人激情| 欧美激情免费在线| 天天色影综合网| 欧美限制电影| 亚洲精品一区久久久久久| 性生交大片免费看l| 欧美天堂在线| 欧美伊人精品成人久久综合97 | 日本欧美中文字幕| 国产无遮挡又黄又爽在线观看| 这里只有精品免费视频| 欧美电影院免费观看| 欧美日韩三级在线| 四虎永久在线精品无码视频| 成人黄色动漫| 午夜欧美视频在线观看| 久草免费福利在线| 在线观看wwwxxxx| 亚洲欧美一区二区久久| 伊人久久大香线蕉精品| 岛国最新视频免费在线观看| 91免费版在线看| 国产一区免费| 四虎在线免费看| 91免费观看视频| 欧美精品一区二区三区在线看午夜| 国 产 黄 色 大 片| 国产成人免费网站| 不卡视频一区| 国产99999| 国产成人啪免费观看软件| 亚洲一区二区免费在线| 国产精品伊人久久| 国产一区二区伦理| 91青青草免费观看| 你懂的网站在线| 91蜜桃免费观看视频| 欧美日韩中文国产一区发布| 欧美一区二区三区少妇| 久久午夜电影网| 日韩av一区二区三区美女毛片| 超碰caoprom| 噼里啪啦国语在线观看免费版高清版| 九色在线免费| 国产精品三级电影| 综合视频在线观看| 新版中文在线官网| 五月综合激情网| 精品久久久久久无码国产| 91久久久久久白丝白浆欲热蜜臀| 欧美性xxxxxx少妇| 色综合亚洲欧洲| 欧美高清性xxxxhdvideosex| 国产小视频福利在线| 欧美国产精品一区| 经典三级在线视频| 678在线观看视频| 日本高清免费不卡视频| 国产精品区在线| 亚洲网一区二区三区| 日韩精品久久久久久福利| 欧美精品日韩在线| 欧美日韩国产一区精品一区| 欧洲永久精品大片ww免费漫画| 国产乡下妇女三片| 国产高清视频一区| 久久精品中文字幕一区二区三区| 91精品国产91久久久久游泳池| 亚洲精品视频在线观看免费| 日韩小视频在线播放| 久久精品超碰| 亚洲精品美女在线| 娇小11一12╳yⅹ╳毛片| 136国产福利精品导航网址| 国产xxx69麻豆国语对白| 国产熟女精品视频| 91片在线免费观看| 中国一级黄色录像| 桃色一区二区| 精品国产sm最大网站| 国产综合精品在线| 亚洲区国产区| 国产中文欧美精品| 青青草在线播放| 尤物av一区二区| 簧片在线免费看| 国产成人夜色高潮福利影视| www.久久久久久.com| 久久国产精品免费看| 国产一区在线看| 四虎一区二区| 中日韩脚交footjobhd| 日韩欧美一级二级三级| 日本污视频网站| 免费亚洲视频| 国产精品香蕉视屏| 久久精品无码人妻| 91涩漫在线观看| 亚洲精品乱码久久久久久| av无码精品一区二区三区| 精品视频在线你懂得| 欧美老女人xx| 国产精品久久久久久免费| 久久精品人人做| 又粗又黑又大的吊av| 亚洲日本va午夜在线电影| 日韩在线视频中文字幕| 中文字幕免费高清网站| www.欧美色图| av免费看网址| 粉嫩久久久久久久极品| 精品中文字幕在线| 99久久精品免费看国产交换| 中文字幕制服丝袜成人av| 久久久久久蜜桃一区二区| 经典一区二区| 国产精品xxx视频| av电影在线网| 欧美日韩另类一区| 国产一级淫片久久久片a级| 三级不卡在线观看| 欧美人与性禽动交精品| 极品美女一区| 一本一道久久a久久精品逆3p| 日日摸天天添天天添破| 91麻豆免费在线观看| 国产精品动漫网站| 精品毛片免费观看| 国产精品视频26uuu| av电影在线观看一区二区三区| 欧美日韩国产成人在线91| 久草福利资源在线| 久久99精品久久久久婷婷| 国产精品无码乱伦| 亚洲一区二区三区在线免费| 国产69精品久久久| 欧洲免费在线视频| 欧美视频日韩视频| 日韩在线观看免| 国产精品综合一区二区| 少妇一晚三次一区二区三区| 成人h动漫免费观看网站| 欧美有码在线视频| 91在线免费看| 欧美一级二级视频| 日韩欧美视频在线| 日韩欧美性视频| 国产日产欧美精品一区二区三区| 亚洲这里只有精品| 欧美特黄a级高清免费大片a级| 极品尤物一区二区三区| 韩国成人在线| 欧美日本在线视频中文字字幕| 日韩一级片免费观看| 欧洲一区二区三区免费视频| 在线观看成人毛片| 99久久精品国产精品久久| 中文字幕一区二区三区四区在线视频| 综合天堂久久久久久久| 久久久久久久久久久久久9999| 成人免费视频观看| 久久久女女女女999久久| 国产在线观看免费网站| 日韩欧美在线影院| 狠狠人妻久久久久久| 亚洲欧洲另类国产综合| 国产伦精品一区二区三区精品| 石原莉奈在线亚洲二区| 免费在线精品视频| 夜色77av精品影院| 亚洲mm色国产网站| 日韩免费va| 欧美极品少妇xxxxⅹ免费视频| 九色在线播放| 亚洲第一天堂av| 91精品国产乱码久久久久| 精品久久久久国产| 国产一区二区播放| 国产亚洲精品7777| 亚洲激情 欧美| 激情深爱一区二区| 熟妇人妻无乱码中文字幕真矢织江| 欧美精品网站| 永久久久久久| 国产欧美日韩一区二区三区四区| 成人在线免费观看一区| 久久不卡日韩美女| 国产成人精品午夜| 欧美gv在线观看| 欧美激情伊人电影| 黄色成年人视频在线观看| 一区二区三区久久精品| 色视频免费在线观看| 精品国产第一区二区三区观看体验| 亚洲黄色av网址| 国产视频二区在线观看| 日韩久久久久久| 91精东传媒理伦片在线观看| 在线亚洲免费视频| 天天综合天天干| 亚洲va欧美va人人爽| 久久久久久久久毛片| 国产精品久久久久婷婷| 最近中文字幕在线mv视频在线 | 精品国产免费久久久久久婷婷| 青青草成人在线观看| av动漫在线观看| 日韩午夜av| 国产在线播放观看| 国产综合自拍| 欧美在线观看视频免费| 一区二区三区网站| 大桥未久一区二区| 婷婷亚洲最大| 吴梦梦av在线| 欧美超碰在线| 日本丰满少妇黄大片在线观看| 成人羞羞网站入口免费| 午夜欧美性电影| 日韩av在线中文字幕| 亚洲精品美女久久7777777| 国产亚洲一卡2卡3卡4卡新区 | 国产精品91av| 粉嫩av一区二区三区在线播放 | 日韩欧美在线播放视频| 久久精品主播| 成人性做爰aaa片免费看不忠| 老司机精品久久| 久久午夜夜伦鲁鲁一区二区| 日韩电影一区二区三区| 亚洲欧美另类动漫| 免费观看成人鲁鲁鲁鲁鲁视频| 色一情一区二区三区| 国产在线观看免费一区| 国产精品无码自拍| 成人午夜私人影院| 极品粉嫩小仙女高潮喷水久久| 久久久99精品免费观看不卡| 欧美黄色激情视频| 国产精品不卡一区二区三区| 九九热国产在线| 红桃av永久久久| 无码人妻精品一区二区蜜桃色欲 | 色视频一区二区| 999视频在线| 欧美久久免费观看| 精品黑人一区二区三区在线观看 | 日韩黄色影院| 欧美乱妇高清无乱码| 1区2区在线| 国产成人在线精品| 日韩成人一区| 国产精品久久波多野结衣| 亚洲宅男一区| 日本女人高潮视频| 国产婷婷精品| 九九九九九国产| 成a人片亚洲日本久久| 欧美做受高潮6| 亚洲欧美国产高清| 中文字幕在线观看免费视频| 91九色最新地址| 国产成人三级一区二区在线观看一| 亚洲精品大尺度| 最新国产在线观看| 韩国美女主播一区| 国产91欧美| 精品午夜一区二区三区| 日本一本不卡| 日韩精品一区在线视频| 久久激五月天综合精品| 精品1卡二卡三卡四卡老狼| 国产视频不卡一区| 精品无码一区二区三区电影桃花| 欧美性一区二区| 国产综合视频在线| 中文字幕一区电影| 成人免费网站视频| 97超碰人人模人人爽人人看| 国产99久久精品一区二区300| 一区二区三区一级片| 久久久噜噜噜| 国模无码视频一区| 最新中文字幕一区二区三区| 久久青青草原亚洲av无码麻豆| 欧美一区二区三区小说| 国产在线视频资源| 国产最新精品视频| 日本少妇精品亚洲第一区| 日韩久久久久久久| 国产日韩亚洲| 性农村xxxxx小树林| 亚洲婷婷在线视频| 国产精华7777777| 精品亚洲一区二区三区在线观看| 青草青在线视频| 91午夜理伦私人影院| 日韩精品一区二区三区免费观影| 国产九九九九九| 成人性色生活片| 久操免费在线视频| 麻豆成人入口| 精品一区二区三区毛片| 老色鬼精品视频在线观看播放| 日韩精品卡通动漫网站| 午夜久久久久久久久久一区二区| 国产成人久久精品77777综合| 久久精品久久久久电影| 日本成人一区二区| 亚洲激情电影在线| 日日夜夜精品视频天天综合网| 免费看污黄网站在线观看| 精品国产乱码久久久久久婷婷| 日本wwwxxxx| 久久久久久久久电影| 91九色鹿精品国产综合久久香蕉| 天天想你在线观看完整版电影免费 | 国产亚洲欧洲在线| 综合毛片免费视频| 欧美日韩一区二区视频在线| 久久久999| 欧美性猛交xxxx乱| 欧美午夜电影网| jizz亚洲| 国产色视频一区| 亚洲老妇激情| 色综合久久久无码中文字幕波多| 一区二区三区四区在线播放| 性生活视频软件| 久久综合免费视频| 色播一区二区| 成人免费观看cn| 91麻豆免费看片| 久久午夜鲁丝片| 久久久精品电影| 97一区二区国产好的精华液| 妞干网在线观看视频| 91亚洲精品乱码久久久久久蜜桃| 亚洲 欧美 成人| 伊人精品在线观看| 成人在线分类| 农民人伦一区二区三区| 91在线观看下载| 在线观看中文字幕2021| 另类视频在线观看| 国产精品主播在线观看| 成人免费观看毛片| 中文字幕一区二区三区精华液| 国产草草影院ccyycom| 性欧美在线看片a免费观看| 嫩草影视亚洲| 污污网站在线观看视频| 亚洲在线成人精品| 免费福利在线视频| 91久久久在线| 国产日产高清欧美一区二区三区| 亚洲精品成人av久久| 日韩一区二区三区四区五区六区| 午夜影院一区| 手机福利在线视频| av电影天堂一区二区在线| 中文字幕在线观看欧美| 欧美激情亚洲精品| 精品久久久久久久| 中文字幕一区二区三区人妻在线视频 | 三级在线看中文字幕完整版| 日本电影一区二区三区| 国产乱人伦偷精品视频免下载| 国产微拍精品一区| 日韩性生活视频|