KoaHub.JS用于Node.js的可移植Unix shell命令程序代码
shelljs
Portable Unix shell commands for Node.js
ShellJS - Unix shell commands for Node.js
ShellJS is a portable (Windows/Linux/OS X) implementation of Unix shell commands on top of the Node.js API. You can use it to eliminate your shell script's dependency on Unix while still keeping its familiar and powerful commands. You can also install it globally so you can run it from outside Node projects - say goodbye to those gnarly Bash scripts!
ShellJS supports node v0.11
, v0.12
, v4
, v5
, v6
, and all releases of iojs.
The project is unit-tested and battled-tested in projects like:
- PDF.js - Firefox's next-gen PDF reader
- Firebug - Firefox's infamous debugger
- JSHint - Most popular JavaScript linter
- Zepto - jQuery-compatible JavaScript library for modern browsers
- Yeoman - Web application stack and development tool
- Deployd.com - Open source PaaS for quick API backend generation
- And many more.
If you have feedback, suggestions, or need help, feel free to post in our issue tracker.
Think ShellJS is cool? Check out some related projects (like cash--a javascript-based POSIX shell) in our Wiki page!
Upgrading from an older version? Check out our breaking changes page to see what changes to watch out for while upgrading.
Command line use
If you just want cross platform UNIX commands, checkout our new project shelljs/shx, a utility to expose shelljs
to the command line.
For example:
$ shx mkdir -p foo $ shx touch foo/bar.txt $ shx rm -rf foo
A quick note about the docs
For documentation on all the latest features, check out our README. To read docs that are consistent with the latest release, check out the npm page or shelljs.org.
Installing
Via npm:
$ npm install [-g] shelljs
If the global option -g
is specified, the binary shjs
will be installed. This makes it possible to run ShellJS scripts much like any shell script from the command line, i.e. without requiring a node_modules
folder:
$ shjs my_script
JavaScript
require('shelljs/global'); if (!which('git')) { echo('Sorry, this script requires git'); exit(1); } // Copy files to release dir rm('-rf', 'out/Release'); cp('-R', 'stuff/', 'out/Release'); // Replace macros in each .js file cd('lib'); ls('*.js').forEach(function(file) { sed('-i', 'BUILD_VERSION', 'v0.1.2', file); sed('-i', /^.*REMOVE_THIS_LINE.*$/, '', file); sed('-i', /.*REPLACE_LINE_WITH_MACRO.*\n/, cat('macro.js'), file); }); cd('..'); // Run external tool synchronously if (exec('git commit -am "Auto-commit"').code !== 0) { echo('Error: Git commit failed'); exit(1); }
CoffeeScript
CoffeeScript is also supported automatically:
require 'shelljs/global' if not which 'git' echo 'Sorry, this script requires git' exit 1 # Copy files to release dir rm '-rf', 'out/Release' cp '-R', 'stuff/', 'out/Release' # Replace macros in each .js file cd 'lib' for file in ls '*.js' sed '-i', 'BUILD_VERSION', 'v0.1.2', file sed '-i', /^.*REMOVE_THIS_LINE.*$/, '', file sed '-i', /.*REPLACE_LINE_WITH_MACRO.*\n/, cat('macro.js'), file cd '..' # Run external tool synchronously if (exec 'git commit -am "Auto-commit"').code != 0 echo 'Error: Git commit failed' exit 1
Global vs. Local
The example above uses the convenience script shelljs/global
to reduce verbosity. If polluting your global namespace is not desirable, simply requireshelljs
.
Example:
var shell = require('shelljs'); shell.echo('hello world');
Command reference
All commands run synchronously, unless otherwise stated. All commands accept standard bash globbing characters (*
, ?
, etc.), compatible with thenode glob module.
For less-commonly used commands and features, please check out our wiki page.
cd([dir])
Changes to directory dir
for the duration of the script. Changes to home directory if no argument is supplied.
pwd()
Returns the current directory.
ls([options,] [path, ...])
ls([options,] path_array)
Available options:
-R
: recursive-A
: all files (include files beginning with.
, except for.
and..
)-d
: list directories themselves, not their contents-l
: list objects representing each file, each with fields containingls -l
output fields. See fs.Stats for more info
Examples:
ls('projs/*.js'); ls('-R', '/users/me', '/tmp'); ls('-R', ['/users/me', '/tmp']); // same as above ls('-l', 'file.txt'); // { name: 'file.txt', mode: 33188, nlink: 1, ...}
Returns array of files in the given path, or in current directory if no path provided.
find(path [, path ...])
find(path_array)
Examples:
find('src', 'lib'); find(['src', 'lib']); // same as above find('.').filter(function(file) { return file.match(/\.js$/); });
Returns array of all files (however deep) in the given paths.
The main difference from ls('-R', path)
is that the resulting file names include the base directories, e.g. lib/resources/file1
instead of just file1
.
cp([options,] source [, source ...], dest)
cp([options,] source_array, dest)
Available options:
-f
: force (default behavior)-n
: no-clobber-r
,-R
: recursive-L
: follow symlinks-P
: don't follow symlinks
Examples:
cp('file1', 'dir1'); cp('-R', 'path/to/dir/', '~/newCopy/'); cp('-Rf', '/tmp/*', '/usr/local/*', '/home/tmp'); cp('-Rf', ['/tmp/*', '/usr/local/*'], '/home/tmp'); // same as above
Copies files.
rm([options,] file [, file ...])
rm([options,] file_array)
Available options:
-f
: force-r, -R
: recursive
Examples:
rm('-rf', '/tmp/*'); rm('some_file.txt', 'another_file.txt'); rm(['some_file.txt', 'another_file.txt']); // same as above
Removes files.
mv([options ,] source [, source ...], dest')
mv([options ,] source_array, dest')
Available options:
-f
: force (default behavior)-n
: no-clobber
Examples:
mv('-n', 'file', 'dir/'); mv('file1', 'file2', 'dir/'); mv(['file1', 'file2'], 'dir/'); // same as above
Moves files.
mkdir([options,] dir [, dir ...])
mkdir([options,] dir_array)
Available options:
-p
: full path (will create intermediate dirs if necessary)
Examples:
mkdir('-p', '/tmp/a/b/c/d', '/tmp/e/f/g'); mkdir('-p', ['/tmp/a/b/c/d', '/tmp/e/f/g']); // same as above
Creates directories.
test(expression)
Available expression primaries:
'-b', 'path'
: true if path is a block device'-c', 'path'
: true if path is a character device'-d', 'path'
: true if path is a directory'-e', 'path'
: true if path exists'-f', 'path'
: true if path is a regular file'-L', 'path'
: true if path is a symbolic link'-p', 'path'
: true if path is a pipe (FIFO)'-S', 'path'
: true if path is a socket
Examples:
if (test('-d', path)) { /* do something with dir */ };
wemall 开源微商城 ,微信商城,商城源码,三级分销,微生鲜,微水果,微外卖,微订餐---专业的o2o系统
wemall地址:http://www.wemallshop.com
代码地址:http://js.koahub.com/home/feature/shelljs
KoaHub.JS用于Node.js的可移植Unix shell命令程序代码的更多相关文章
- KoaHub.JS用于Node.js的cron作业调度程序代码
node-schedule A cron-like and not-cron-like job scheduler for Node. Node Schedule Announcement: ...
- KoaHub平台基于Node.js开发的Koa 连接支付宝插件代码信息详情
KoaHub平台基于Node.js开发的Koa 链接支付宝插件代码信息详情 easy-alipay alipay payment & notification APIs easy-alipay ...
- .NET程序员也学Node.js——初识Node.js
清明在石门休了八天假,一眨眼,4月又到中旬了...看到.NET在天朝彻底沦陷而又无能为力,我开始尝试去学习一些新的东西来充实自己,我自然是打死不会去学java的,没有为什么,于是乎,最近开始学习一些前 ...
- 如何在vscode里面调试js和node.js
一般大家调试都是在浏览器端调试js的,不过有些时候也想和后台一样在代码工具里面调试js或者node.js,下面介绍下怎样在vscode里面走断点. 1,用来调试js 一:在左侧扩展中搜索Debugge ...
- KoaHub.JS基于Node.js开发的mysql的node.js驱动程序代码
mysql A node.js driver for mysql. It is written in JavaScript, does not require compiling, and is 10 ...
- KoaHub平台基于Node.js开发的Koa的简单包装到请求库的类似接口
co-request co-request promisify wrapper for request co-request Simple wrapper to the request library ...
- KoaHub平台基于Node.js开发的Koa的调试实用程序
debug small debugging utility debug tiny node.js debugging utility modelled after node core's debugg ...
- KoaHub.JS基于Node.js开发的Koa 生成验证码插件代
ccap node.js generate captcha using c++ library CImg without install any other lib or software node- ...
- KoaHub平台基于Node.js开发的Koa JWT认证插件代码信息详情
koa-jwt Koa JWT authentication middleware. koa-jwt Koa middleware that validates JSON Web Tokens and ...
随机推荐
- 结合social relationship的推荐系统(持续更新)
最近看了一些结合社会关系的推荐系统,把论文罗列一下: (TidalTrust) Generating predictive movie recommendations from trust in so ...
- #图# #最大生成树# #kruskal# ----- OpenJudge 799:Heavy Transportation
OpenJudge 799:Heavy Transportation 总时间限制: 3000ms 内存限制: 65536kB 描述BackgroundHugo Heavy is happy. Afte ...
- Javascript数据类型共有六种
Javascript数据类型共有六种 /* var box; alert(typeof box); // box是Undefined类型,值是undefined,类型返回的字符串是undefined ...
- Servlet RequestDispatcher需要注意的情况
Servlet RequestDispatcher需要注意的情况: 如果使用getServletContext().getRequestDispatcher("/a.do")得到R ...
- Spring内部bean无法通过id获取
内部Bean注入正常,但是直接在context中getBean是得不到的: <?xml version="1.0" encoding="UTF-8"?&g ...
- 游戏开发之在UE4中编写C++代码控制角色
当你运行我们上次做完的项目,你可能会意识到我们移动的摄像机还是默认的那个摄像机,这个默认的摄像机可以自由飞翔.这一节,我们要使得开始的角色是我们的一个Avatar类的实例对象,并且使用键盘控制我们的角 ...
- 30万奖金!还带你奔赴加拿大相约KDD!?阿里聚安全算法挑战赛带你飞起!
KDD(Knowledge Discovery and Data Mining,知识发现与数据挖掘)会议,作为数据挖掘届的顶会,一直是算法爱好者心中的圣地麦加. 想去?有点难. 给你奖金和差旅赞助 ...
- [TPYBoard-Micropython之会python就能做硬件 3] 制作电子时钟
转载请注明:@小五义 http://www.cnblogs.com/xiaowuyi 欢迎加入讨论群 64770604 一.本次实验所需器材 1.TPYboard V102板 一块 2.DS3231 ...
- ArcGIS API for JavaScript 4.2学习笔记[1] 显示地图
ArcGIS API for JavaScript 4.2直接从官网的Sample中学习,API Reference也是从官网翻译理解过来,鉴于网上截稿前还没有人发布过4.2的学习笔记,我就试试吧. ...
- Google HTML/CSS 编码规范
Google HTML/CSS 规范 本文介绍了 Google 推荐的 HTML 和 CSS 编写格式规范,以建立良好的个人编码习惯. 1.通用样式规范 省略图片.样式.脚本以及其他媒体文件 URL ...