Node在shell中執行命令
Shell編程是一種構建工具類腳本和命令行程序的最常見的方式。你或許已經用過類似的腳本語言,如Bash或者Python腳本,Node本身也是使用JavaScript的一種腳本編程語言。儘管你可以使用execFile和spawn手動執行一個子命令,但Node還是為你提供了一種更加方便的、跨平台的方式。想通過一些系統已有的基礎命令(如管道、重定向、大對象文件相關的命令)得到相應的結果?通過使用exec來解決見下圖
如果需要在命令解析器里執行命令,你可以選擇使用exec。exec方法實際上也是調用/bin/sh(在Unix/Linux下)或者cmd.exe(在Windows下)來執行命令的。當然,這種方法可行的前提是,你必須擁有其他需要被執行的命令的許可權。
與execFile和spawn不一樣,exec方法沒有一個專門的參數來設置命令名稱,因為它可以在命令解析器上一次執行多個命令。通過管道的方式串起來,以生成一個排過序的沒有重複名字的內容。但是,這次我們要用的是Unix自身的管道機制,而不是使用流的方式。
cp.exec("cat messy.txt | sort | uniq",
function (err, stdout, stderr) {
console.log(stdout);
});
就像我們在命令行中一樣,使用管道把cat,sort,uniq命令串連在一起;如果成功的話,輸出會包括排序好且不重複的messy.txt版本。
如果你是Unix用戶,那麼時刻要注意一點,Node始終是使用/bin/sh來執行命令的,在現代操作系統中通常是使用Bash命令解析器,當然也可以選擇其他你喜歡的命令解析器。對於Windows用戶,你可以使用管道的功能,具體使用技巧57里討論的spawn以流的方式來實現。


※Node的流和外部應用程序
※Node執行外部程序時候出現的異常
※Node中的UDP客戶端服務應用
※Node通過UDP傳輸文件
※Node創建TCP服務端和客戶端的方法
TAG:行家匯 |
※RPM命令的——nodeps 和——force參數解釋
※NodePort,LoadBalancer還是Ingress?我該如何選擇
※詳解node + mongoDb(mongoDb安裝、運行,在node中連接增刪改查)
※DOM探索之-DOM的nodeType、nodeName、nodeValue
※nodejs+mongodb 編寫 restful 風格博客 api
※blogfoster-scripts:一款簡化 Node.js 項目初始化的工具
※川崎病:小兒皮膚黏膜淋巴結綜合征(mucocutaneous lymph node syndrome,MCLS)
※node整合webstorm
※Shader Graph著色器視圖自定義節點API:Code Function Node
※node+pm2+express+mysql+sequelize來搭建網站和寫介面
※NodeJS反序列化漏洞利用getshell
※nodejs連接mongodb,對數據增刪改查操作(跳過坑)Windows版
※Diss掉FileCoin,Hero Node 致力於成為 IPFS 生態的頭號玩家
※node+express+mongoDB寫簡單介面,Vue獲取介面
※Google發布Knative,IBM發布雲原生Node.js應用的資源
※Node.js之express框架
※大規模集群下的Hadoop NameNode
※徹底理解 Node.js 中的回調(Callback)函數
※在node上奔跑的mysql
※基於 node.js 的自動路由組件-HttpPostman