什么是nushell?
nushell 是一个用Rust语言开发的,非常易于上手的shell.
简单、好用、现代。先看一个小例子。记得先使用nu命令进入nushell。
nushell真的很牛很好用。其最大的问题(我认为)是:扩展性。一个基于Rust语言,却不支持直接使用Rust语言写脚本,还要通过开发plugin来扩展。这样的扩展性最终会阻碍它被更广泛的使用。“扩展”是一个构建生态的核心点。
上面的例子,是不是很好用。where 很强大,也很方便。ls输出也很直观。多希望有一个各个命令的cheat sheet。使用help commands, 友好的nushell预先提供了这个"小抄"指令。
2 json/md/bson/yaml等数据的处理:
参考 help from 和 help to。提示,对json做更定制化的查询,还是要使用其它linux命令,譬如jq和jsawk。
3. 和bash通过管道协同使用:
nu -c 'ls' 在shell中调用nushell并执行指令;
nu my_nu_script.sh在shell中调用nushell, 执行nushell的脚本。
核心的指令有两个。lines把文字转换为表格,to tsv 把表格转换为纯文本。
在使用过程中有几个痛点。
其一,安装时,在Ubuntu 18.04上会报错(如下),因为nushell依赖的GLIBC的版本不正确。在更早期的、Ubuntu版本中还会报open_ssh版本错误。
nu: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.29' not found (required by nu)
归根结底是它有依赖。推荐安装cargo (Rust语言常用的工具,类似nodejs的npm, python的pip), 通过cargo 安装编译nushell, cargo install nu。更多方式,参考下面的文档。
其二,nushell可以基于自己的指令定义函数、基于函数定义脚本。但,这些和Rust语言没啥关系,你甭想用你熟悉的Rust语法写点啥,请nushell帮你执行。除非你开发自己的nushell的plugin。
其三,nushell安装后除了nu这个执行文件外还有15个plugin文件和其它文件,footprint有点大。如果是单文件,是不是更酷一点点。
喜欢nushell是因为指令简单、管道方便、非常易于上手。(我猜)20%的拒绝使用的人是因为安装问题。如果还有20%,就是因为它不能随心所欲的嵌入Rust语法,于是就没有动力把熟悉的bash/zsh换成nushell了。
项目地址: https://github.com/nushell/nushell
原作者:michael
源链接:
https://zhuanlan.zhihu.com/p/446582737
编辑:IT运维技术圈