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 -loutput 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 ...
随机推荐
- 使用(Drawable)资源——图片资源
图片资源是最简单的Drawable资源,只要把*.png.*.jpg.*.gif等格式的图片放入/res/drawble-xxx目录下,Android SDK就会在编译应用中自动加载该图片,并在R资源 ...
- C的memcpy和strcpy的区别
strcpy是拷贝字符串,以\0为标志结束(即一旦遇到数据值为0的内存地址拷贝过程即停止) strcpy的原型为 char *strcpy(char *dest, const char *src) 而 ...
- 理解 Objective-C Runtime
初学 Objective-C(以下简称ObjC) 的人很容易忽略一个 ObjC 特性 —— ObjC Runtime.这是因为这门语言很容易上手,几个小时就能学会怎么使用,所以程序员们往往会把时间都花 ...
- Canvas 图片灰度
我们可以通过下面几种方法,将其转换为灰度: 1.浮点算法:Gray=R*0.3+G*0.59+B*0.11 2.整数方法:Gray=(R*30+G*59+B*11)/100 3.移位方法:Gray = ...
- rf对时间控件的操作
1.如何去掉readonly属性 前端对于时间控件的设置,有时是为了限制用户不能进行手动输入方式进行选择时间,避免在手动输入的时候超限或者输入格式不正确,导致一些不必要的验证麻烦,这是前端开发工程师就 ...
- 实现jul 日志重定向到 slf4j
需求背景 jul 指的是java.util.logging,是 java 内置的日志模块,目前流行的Java日志组件还包括 jcl(common-logging).slf4j/log4j/logbac ...
- ArcGIS API for JavaScript 4.2学习笔记[2] 显示3D地图
3D地图又叫场景. 由上一篇可知, require入口函数的第一个参数是字符串数组 ["esri/Map", "esri/views/MapView", &qu ...
- [No0000B7]If else 与 三元表达式? : 效率对比
先看 if else 一段代码 using System; class Program { private static void Main() { ; ) i = -; ; Console.Writ ...
- oracle sql 知识小结
Oracle_sql : 第一单元:select 语句: ①:字符串连接操作符: || ②:去除重复行:distinct 第二单元:条件限制和排序 ①:关键字:where ②:比较操作符:=,&g ...
- C# 6 与 .NET Core 1.0 高级编程 - C# 6 改进
个人原创译文,转载请注明出处.有不对的地方欢迎指出与交流. 英文原文:Professional C# 6 and .NET Core 1.0 - What's New in C# 6 C# 6 改进 ...