V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
vitalis
V2EX  ›  程序员

分享一个在 Windows 平台运行 Linux 命令的新方式

  •  
  •   vitalis · 2018-06-11 11:35:06 +08:00 · 7195 次点击
    这是一个创建于 2360 天前的主题,其中的信息可能已经有所发展或是发生改变。

    用过 Linux 命令的人无不被他的强大折服,回头再也瞧不上 Windows 的命令行。甚至有人编译半天,折腾出了 cygwin。今天给大家介绍一个超简单的工具 Cash,直接用纯 ES6 实现的跨平台的 Linux 命令集。

    Cash 的实现没有任何原生编译和其他额外依赖,在 Windows 上通过 JS 环境提供一个跟 Linux 体验一致的跨平台 bash 脚本终端。

    npm 即可安装:

    > npm install cash -g
    > cash
    $
    

    cash.gif

    而且还能混合 Windows 和 Unix 命令:

    $ ipconfig | grep IPv4 | sort
    IPv4 Address. . . . . . . . . . . : 10.10.40.50
    IPv4 Address. . . . . . . . . . . : 192.168.100.11
    $
    

    如果不想输入 cash 直接全局安装所有命令即可:

    > npm install cash-global -g
    > ls -lah
    

    当然,也可以只安装指定命令

    > npm install cash-ls -g
    > npm install cash-grep -g
    

    什么,居然还能在代码里直接用?

    const $ = require('cash');
    const out = $.ls('.', {l: true});
    

    还可以这样:

    const out = $('ls -lah');
    

    Cash 已经支持的命令清单,如下:

    • alias
    • cat
    • clear
    • cd
    • cp
    • echo
    • export
    • false
    • grep
    • head
    • kill
    • less
    • ls
    • mkdir
    • mv
    • pwd
    • rm
    • sort
    • source
    • tail
    • touch
    • true
    • unalias

    想支持更多命令?看看 cash 下一步的规划

    更多Node.js 精彩命令行应用

    更多Node.js 开脑洞的命令行开发模式

    第 1 条附言  ·  2018-06-11 13:46:24 +08:00

    标题可能有点歧义,如果追求完整的Linux体验,用Linux发行版是最好的。这是一个Linux命令ES6实现,跟Powershell不一回事,没可比性。至于WSL那种在Windows里套一个Ubuntu的做法也不一样,喜欢Linux环境又不得不用Windows的可以选择WSL,甚至vmware、virtualbox之类的虚拟机。

    再强调一下:这是一个纯ES6实现的,兼容Node.js开发的,轻量级Linux命令行库。不相干的对比,就不再一一回复了。

    30 条回复    2018-06-12 10:23:11 +08:00
    kingname
        1
    kingname  
       2018-06-11 11:36:47 +08:00   ❤️ 3
    我现在用 wsl,非常好用。
    vitalis
        2
    vitalis  
    OP
       2018-06-11 11:41:38 +08:00
    jiangnanyanyu
        3
    jiangnanyanyu  
       2018-06-11 11:51:58 +08:00 via Android
    安装了 gjtbash 会不会有冲突
    vitalis
        4
    vitalis  
    OP
       2018-06-11 11:53:06 +08:00
    @jiangnanyanyu 重名的命令会按系统 PATH 变量的先后识别
    wxkvEX
        5
    wxkvEX  
       2018-06-11 11:54:53 +08:00 via iPhone
    Ubuntu 子系统了解一下?
    visitantzj
        6
    visitantzj  
       2018-06-11 11:56:03 +08:00   ❤️ 1
    了解一下强大的 powershell 先 o(∩_∩)o
    leonme
        7
    leonme  
       2018-06-11 12:05:39 +08:00 via Android
    wsl 了解一下+1
    vitalis
        8
    vitalis  
    OP
       2018-06-11 12:20:04 +08:00
    @wxkvEX
    @visitantzj
    @leonme
    PowerShell 理论上足够强大,但是过于复杂(除了 Windows 偏好者之外不知道有多少 NIX 用户能接受),对于适应 bash 的人来说不如 Windows Subsystem for Linux。
    Cash 是一个轻量级、无任何系统原生编译的、可在代码里使用的 Linux 命令行。
    AllOfMe
        9
    AllOfMe  
       2018-06-11 12:30:43 +08:00
    这 npm 包有创意
    jiangnanyanyu
        10
    jiangnanyanyu  
       2018-06-11 12:30:51 +08:00 via Android
    比如 nodejs 的 path 和 gitbash 的 path 的先后顺序么?
    Cooky
        11
    Cooky  
       2018-06-11 12:31:25 +08:00
    cygwin,msys2,wsl
    des
        12
    des  
       2018-06-11 12:34:16 +08:00 via Android   ❤️ 1
    意义不大,用 linux 用的是生态不,是这几个 shell 命令

    还有 cygwin 是需要编译安装的吗?
    黑人问号.jpg
    pexcn
        13
    pexcn  
       2018-06-11 12:56:06 +08:00
    MSYS2 更好
    shijingshijing
        14
    shijingshijing  
       2018-06-11 12:59:38 +08:00 via iPhone
    gitbash 自带的就已经很厉害了,不折腾其他的幺蛾子了
    kingname
        15
    kingname  
       2018-06-11 13:00:32 +08:00
    @vitalis windows 10 自带的 Linux 子系统。是真正的 Linux,不是楼主发的这种模拟器可以比的。
    kingname
        16
    kingname  
       2018-06-11 13:01:59 +08:00
    wsl 配合 Visual Studio Code 自带的终端。简直完美。
    r7st
        17
    r7st  
       2018-06-11 13:05:15 +08:00
    PowerShell 完美解决
    congeec
        18
    congeec  
       2018-06-11 13:08:10 +08:00 via iPhone
    Is it posix compatible? Why not busybox?
    vitalis
        19
    vitalis  
    OP
       2018-06-11 13:34:42 +08:00
    vitalis
        20
    vitalis  
    OP
       2018-06-11 13:37:39 +08:00
    @des 你可以用别人编译好的,用 Linux 系统自然更好。如果在 Node.js 环境或做相关开发,这个包就有价值了。
    wtks1
        21
    wtks1  
       2018-06-11 13:50:23 +08:00 via Android
    问一下,这个支持 win7 或者 win8 系统吗?
    vitalis
        22
    vitalis  
    OP
       2018-06-11 13:55:58 +08:00
    @wtks1 支持,只要有 Node.js 环境就行。
    sengle
        23
    sengle  
       2018-06-11 14:42:34 +08:00
    cmder?
    vitalis
        24
    vitalis  
    OP
       2018-06-11 14:55:43 +08:00
    @sengle linuxer & programer & node.js
    kexxxfeng
        25
    kexxxfeng  
       2018-06-11 14:58:12 +08:00 via iPhone
    如何在 Windows 中直接调用 WSL 中的程序,例如 git, node, ssh 等等
    creanme
        26
    creanme  
       2018-06-11 18:30:02 +08:00
    @kexxxfeng 估计直接调不了,只能在命令行或者图形界面中调。
    RalphHuang
        27
    RalphHuang  
       2018-06-11 23:13:38 +08:00
    还是 WSL 用着顺手
    Qzier
        28
    Qzier  
       2018-06-12 02:28:45 +08:00 via iPhone
    wsl + hyper 挺好的
    laogui
        29
    laogui  
       2018-06-12 08:37:42 +08:00 via Android
    每次看到 Win10 上 wsl 不用折腾其他的命令行环境真为他们惋惜。
    wssy921
        30
    wssy921  
       2018-06-12 10:23:11 +08:00
    是一种新思路,也可以,支持一下
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2951 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 15:02 · PVG 23:02 · LAX 07:02 · JFK 10:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.