对比nushell和powershell

2021-07-17 第一版

有些对比领域缺失,这篇文章会持续更新。

这是一篇对比powershell和nushell的文章。我是powerhsell专家,又是nushell新手,若某些观点有错误欢迎斧正。

为什么要对比powershell和nushell?因为它俩很像,不对比没天理!

—【操作系统支持程度和安装】—

Nushell不支持win7/8.1,和对应的win2008,win2012,我觉得是个不小的败笔。目前nushell不支持arm,但这只不过是很小的问题。Nushell和powershell,都依赖少许linux系统包。Powershell有我做的一键安装脚本。https://www.cnblogs.com/piapia/p/13509081.html

现在认为,nushell和powershell安装容易程度差不多,都很容易。不分上下。

—【语法】—

Nushell中应该没有【对象】的概念。也就没有【属性】,【方法】概念。

但是却用内部命令,实现了【属性】: (ls).name。

内部命令没有实现【方法】。而是用另外的命令,实现的功能。但有这两两个弊端:1 需要通过管道使用。2方法有重载功能,管道后的命令,我不知道怎么传递参数。我猜要写过滤器,或接收器。

刚刚添加了for语法,还没有while语法。有if,貌似却没有else?没有switch case。没有return。特别依赖管道。

Powershell数组内每个元素是对象,对象类型可以不同。每种对象类型,有自己的属性方法。哈希表也是如此。而nushell的数组,哈希表中,没有对象,数组中无类型不同的值问题还不大,但哈希表,这种键值对,套在nushell table表中,如何表示,我还比较好奇。

脚本怎么传值,写参数是否方便,我还不知道。因为没有文档可以研究。

在win的nushell中,nushell的脚本名,补全失败。参数名估计也没法补全。

—【库,命令】—

Nutshell内置sqlite,bson,这两个库,是极好的。这块nushell赢了,赢在内置和简单。Bson是一种nosql数据库的格式,芒果db使用它。Powershell也很容易使用跨平台的sqlite和bson。搜 powershell bson,就可以搜到我很久前写的powershell操作bson的帖子。若使用powershell,推荐看我的帖子,并使用litedb,这本质是一个nuget上的dll。

传统的Shell人用txt,csv,很少有人用sql,nosql数据库,且貌似powershell领域也很少人用,真是悲Y剧啊。脚本应该大力推广sqlite和bson。那些用nushell的人,会去用sqlite,和bson吗?我暂且保持悲观态度。

—【对比nushell的ps,get-process】—

我们知道,跨平台或第三方命令,永远缺少特殊的参数,和命令。永远不如系统自带的。get-process ,和python的ps,nushell的ps都是这样。get-process对于win是完美的,对于linux有时候还需要用系统自带的ps。而nushell的ps,即不是win的ps,又不是linux的ps,有些特殊情况下,还得用系统自带的ps。对于用powershell使用linux的ps,问题不大。因为ps输出是字符串,就是字符串构造对象的问题。Nushell中用powershell的get-process,我用着是有问题的,我不会从powershell到nushell格式数据的转换,也就无法继而用 “| where size >10kb”之类的命令。在nushell中,你可以试试此命令:

powershell.exe -noprofile -c “get-process” | autoview

—【扩展性】—

nushell扩展性不如powershell,甚至可以说是完败。需要json-rpc协议。具体你得去看看nushell plugin开发规范。

而powershell方便很多:

1 已经有很多支持.net和.net core的dll,如mysql-data.dll。都可以被powershell加载使用。

2 nuget中的.net的dll。所有第三方人,开发的dll,都可以看做在nuget中。

3 powershell画廊中的第三方模块。

—【nushell的中文支持】—

Nutshell 变量名,函数名,支持中文,支持数字打头。nu脚本不支持bom头,只支持utf8编码。

—【nushell现有的问题】—

可以定义带有点的变量,却无法使用,什么鬼?如:let a.a = 1 ,用$a.a ${a.a} 不能输出。

在win的nushell中,的文件名补全。可以补全目录名(支持),目录中的文件名,有时候不能自动补全。文件名补全,打一个字母后,不能补全,这个应该是个bug。

—【结论】—

1 nushell对比powershell,目前类似于低Z仿lv,2—3年以后估计能成高D仿。

现有的功能的学习难度曲线和powershell差不多。

扩展性不如powershell,没有大厂家支持,没有大的项目(比如vmware用powershell,打造的虚拟机管理工具:powercli)。没有类,对象,属性,方法。

2nushell vs python:从运维的角度,nushell比python强。因为没有python的三个癌F症。Python对于运维的三个癌G症。参见 https://www.cnblogs.com/piapia/p/14962312.html

3敌手:

对于powershell用户来讲,Nushell是powershell最大的对手,或敌手。

对于shell用户(或脚本专家)来讲,nushell是最大敌手。

似乎可以把nushell看做powershell的徒弟。它俩把【老的饭醉团E伙bash-awk-sed】,打成了【烧脑劣功法】。5—10年 后甚至或许能代替bas。

4计算机语言的对比,应该着重于语法和库。其中库占80%,学习难度差不多,不宜扩展,为什么要用?

所以我目前的结论是不建议使用nushell。

5或许恨powershell,却又喜欢powershell特性的人,会学习并使用nushell。它俩都基于mit开源协议。但即便它再好,微软也不会用它。

6 nushell目前最大的问题,是库少,不完善。但我通篇并没有提到它。我相信随着时间的推移,这个问题会逐渐改善,库将来啥样,会不会变得真香?我说不准。

7powershell的强大之处有很多,如多线程,多进程,(含计时器,线程安全型变量)属性,方法,管道左右传递对象,远程本地powershell之间传递对象(自动序列化,反序列化),编写脚本参数很简单(带自动补全)。是值得nushell下一步山D寨(学习模仿)的地方。

8过几年,除非它能成为某发行版的默认shell。否则,公司招聘不会以nushell作为招A聘关键字。而powershell逐渐进入公司招C聘关键字。

9nushell的靓点。就是导入表格数据容易,这给了shell用户,使用awk之外的另一个选择。会吸引到shell用户来使用吗?观望中。。。

—【讨论】—

我认为,这些年powershell对象脚本的概念,用法,和方便之处,已经随着win10的普及深入人心。并且打A得bash-awk-sed挺惨。Powershell和nushell都是采用mit协议的。5—-10年后,会有linux发行版,让他俩上位吗?

还是linux的shell永远是bash?

这只是简单对比,欢迎就这两个shell的对比,提出你感兴趣的场景,让我完善这个对比。谢谢观看。

Original: https://www.cnblogs.com/piapia/p/15016149.html
Author: PowerShell免费软件
Title: 对比nushell和powershell

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/610365/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • DML

    用来对数据库中的表的数据进行增删改 添加数据 给指定列添加数据 insert into <表名> (&#x5217;&#x540D;1, &#x…

    Linux 2023年6月7日
    097
  • 2020年12月-第02阶段-前端基础-CSS Day06

    CSS Day06 定位(position) *理解 能说出为什么要用定位能说出定位的4种分类能说出四种定位的各自特点能说出我们为什么常用子绝父相布局 *应用 能写出淘宝轮播图布局…

    Linux 2023年6月8日
    0129
  • 在 IconFont 上获取图标资源的操作方法与感悟

    如何在 IconFont 上获取图标资源 阿里巴巴矢量图标库网站(https://www.iconfont.cn/)上提供了非常丰富的图标资源,包括 SVG、AI、PNG、字体图标…

    Linux 2023年6月7日
    0110
  • PyTorch 介绍 | 快速开始

    本节介绍有关机器学习常见任务重的API。请参阅每一节的链接以深入了解。 Working with data PyTorch有两个有关数据工作的原型: torch.utils.dat…

    Linux 2023年6月16日
    092
  • CentOS系统磁盘目录空间调整

    前几天装了几台linux服务器,安装操作系统的时候,选择了默认磁盘分区,结果导致后面主目录分区空间不够用了,需要把其他分区的空间划分给主分区一点。 下面以CentOS6.5演示: …

    Linux 2023年6月6日
    0100
  • 【Example】C++ 接口概念讲解及例子演示

    C++ 和 Java 不同的是,C++ 没有 interface 关键字。对于很多新手来说,C++ 当中接口的概念不容易像 Java 当中那样被理解。 然而接口是面向对象编程当中的…

    Linux 2023年6月13日
    094
  • k8s-简介

    Kubenetes是一个针对容器应用,进行自动部署,弹性伸缩和管理的开源系统,K8s 作为缩写的结果来自计算”K”和”s”之间的八个…

    Linux 2023年6月13日
    088
  • debian与windows时间不同步的简单治疗方法

    试过几种方法, 但就这个方法好使点。hwclock -w –localtime Original: https://www.cnblogs.com/leotiger/p…

    Linux 2023年6月13日
    072
  • Shell中判断文件,目录是否存在

    一. 具体每个选项对应的判断内容: 二.常用的例子: Original: https://www.cnblogs.com/DreamDrive/p/7706585.htmlAuth…

    Linux 2023年5月28日
    090
  • MySQL实现 group_concat 排序

    MySQL支持实现group_concat() 内部自定义排序: 实例: 新建一张表 reward,表中数据如下: SQL: SELECT uid, GROUP_CONCAT(mo…

    Linux 2023年6月13日
    0116
  • jenkins自动触发构建

    bash;gutter:true; 1. 安装jenkins cat /etc/yum.repos.d/jenkins.repo [jenkins] name=Jenkins ba…

    Linux 2023年6月7日
    076
  • MySQL注入与informantion_schema库

    只可读 自动开启 和MySQL注入有关的3个表 手动注入的使用案例 表介绍 查询一个表中全部字段的过程 MySQL V5.0安装完成会默认会生成一个库(informantion_s…

    Linux 2023年6月6日
    0114
  • 超算TOP500中的Linux占比——Operating System&Operating System Family

    2022-09-18-21:28:59 老师作业说明: TOP500中国超算占比,LINUX系统占比 说明:当时使用的是bing搜索,中国超算占比其实澎湃新闻什么的都有介绍,但是我…

    Linux 2023年6月6日
    0101
  • [数据库]ACID、CAP、BASE特性

    SQL与noSQL 对比项 关系型SQL 非关系型SQL 关系表 数据集(键值/JSON文档/哈希表/其它) 结构化、提前定义表结构 动态调整模式,非结构化 纵向扩展,提高处理能力…

    Linux 2023年6月13日
    089
  • 第二周作业

    第二周作业 一、显示在/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或者目录 [root@CentOS8 / ]#!mkdir mkdir /etc/…

    Linux 2023年6月13日
    094
  • [Git专题] 环境搭建

    环境搭建 在正式使用 Git 之前,首先应当安装 Git 并完成一些基础配置,本章内容就教大家在 Ubuntu 和 CentOS 上安装 Git 的方法。 如果你使用的是基于 De…

    Linux 2023年5月27日
    096
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球