Cross-platform Linux commands in pure ES6
Cash is a cross-platform implementation of Unix shell commands written in pure ES6.
Huh? Okay - think Cygwin, except:
- No native compiling
- No ugly DLLs
- Works in any terminal
- 1/15th of the size
- Just:
> npm install cash -g
> cash
$
Woah.
Yeah. But it gets better.
Let's mix some Windows & Unix commands together:
$ ipconfig | grep IPv4 | sort
IPv4 Address. . . . . . . . . . . : 10.10.40.50
IPv4 Address. . . . . . . . . . . : 192.168.100.11
$
But I don't want to type "cash"
No problem. Let's make all commands global on your system:
> npm install cash-global -g
> ls -lah
Nice, but I only want certain commands
You're covered!
> npm install cash-ls -g
> npm install cash-grep -g
Wow. But I want this programmatically!
Again, you're in business:
const $ = require('cash');
const out = $.ls('.', {l: true});
Not terse enough? How about this:
const out = $('ls -lah');
Not enough? Try this:
require('cash') `
cp -R ./src ./dest
ls | grep *-spec.js | cat
rm ./specResults.html
`;
For even better programmatic Unix commands, check out ShellJS.
Isn't this impossible to do in Node?
It was, before Vorpal.
Made with ❤ by dthree.
Love it? Cash is brand new! Give it a or a tweet to help spread the word!
Contents
Introduction
Cash is a project working on a cross-platform implementation of the most used Unix-based commands in pure JavaScript and with no external dependencies.
The goal of Cash is to open up these commands to the massive JavaScript community for the first time, and to provide a cleaner, simpler and flexible alternative to applications like Cygwin for those wanting the Linux feel on Windows.
Cash was built with strict attention to nearly exact implementations and excellent test coverage of over 200 unit tests.
Supported commands
The following commands are currently implemented:
- alias
- cat
- clear
- cd
- cp
- echo
- export
- false
- grep
- head
- kill
- less
- ls
- mkdir
- mv
- pwd
- rm
- sort
- source
- tail
- touch
- true
- unalias
Want more commands?
- Vote on the next commands
- Help spread the word: More knowledge of Cash equals more contributors
- Contribute
Configuration
Want to configure things to your heart's content? Just add your configurations in a .cashrc
file (_cashrc
also works, for Windows folk) and put that in your home directory. This supports anything you can do inside a cash command prompt (export
ing environmental variables, aliases, etc.).
Contributing
We are currently looking for Core Team members who can push forward Cash at a rapid rate. Are you an awesome developer up to the challenge? Send me a ping.
Awesome contributors
- @nfischer: Added
source
,export
,true
andfalse
commands, among several other contributions. - @safinn: Added
clear
andtail
commands. - @legien: Added
head
command. - @cspotcode: Implemented template literal execution.
FAQ
Why Cash?
In its very essence, Cash replaces the Windows CLI prompt (>
) with the Unix one ($
), the dollar symbol.
Cash was most fitting in this sense:
Ask and ye shall receive
> cash
$
Cash is also a play on the word bash
, and is actually[1] a recursive acronym for Cash Shell.
Shout out to @aseemk for donating the name.
Doesn't ShellJS do this?
No.
For those who don't know, ShellJS is an awesome Node package that implements UNIX shell commands programatically in JavaScript. Check it out - really. While ShellJS was tremendously helpful in figuring out how to accomplish Cash, the two do not really conflict.
ShellJS gives the feel of UNIX commands in a code environment, but aims to implement the commands in a way that makes sense for a JavaScript library. This means that many commands return JavaScript objects, and some of the rougher and more dangerous edges of bash have been softened a bit.
For example, with cash:
$('ls'); // 'node_modules\n'
$('echo foo > foo.txt');
With ShellJS:
ls(); // ['node_modules'];
echo('foo').to('foo.txt');
Team
David Caccavella | Nate Fischer |
License
MIT © David Caccavella