1

命令行工具常用bash、python、ruby等语言编写,其实用node.js和CoffeeScript编写也很方便,特别是涉及I/O相关操作的工具。本文介绍一些基本的知识。

shebang

和别的脚本一样,开头加上shebang:

#!/usr/bin/env coffee

console.log("Hello world!")

命令行参数

通过process.argv获取。

前两个会是coffee和脚本名,所以常用process.argv[2..]

复杂的命令行参数手工处理是很痛苦的,所以有很多模块做这个。最常用的是optimist

Exit Code

进程的exit code可以通过process.exit获取。

if err
  process.exit(1)
else
  process.exit(0)

管道

管道是非常强大的,node.js支持管道无压力。

process.stdin.resume()
process.stdin.setEncoding('utf8')
process.stdin.on('data', (data) ->
  process.stdout.write(data))

UNIX signals

处理UNIX signal:

process.stdin.resume()
process.on('SIGINT', ->
  console.log('Got a SIGINT. Bye.')
  process.exit(0)

从上面的例子看到用Node.js编写命令行脚本还是蛮方便的,特别是涉及到I/O的任务,可以充分发挥Node.js异步处理的优势。CoffeeScript语法非常简洁,用来编写脚本再适合不过。


撰文 SegmentFault


weakish
24.6k 声望844 粉丝

a vigorously lazy deadbeat with matured immaturity