一将功成万骨枯是褒义还是贬义(《nushell一将功成,万awk骨枯》—对比nushell和powershell(第二集))
2022-10-05 nushell版本=v0.69.1
Nushell powershell awk 对比 第二集 博客园
第一章 对比awk ,nushell ,powershell的安装
1 nushell是mit协议的 ,rust开发的 ,【单文件程序!!!】 ,所以nushell的安装真香!
2 从这点上来看awk完败 。Awk文件太多不绿色 。Awk就占个内置的先机 。
3 powershell是绿色软件 ,从github下载后 ,解压便可执行 ,但它是单目录中 ,有多个文件和子目录 。这比awk安装在多个不同的子目录要好 。我还为大家做了linux一键安装powershell的脚本 。
安装脚本在码云 ,Linux下一键安装powershell:
https://gitee.com/chuanjiao10/kasini3000_agent_linux
结论:nushell和powershell都是绿色linux软件 。
第二章 对比nushell ,powershell的功能
1 nushell
关于nushell的扩展性 ,目前我还是不看好 。和powershell对比还是不行 。
不建议powershell人学习nushell,因为学了之后 ,你会从西施变成东施 。Nushell中没有对象 ,也就没有属性,方法 。但有模仿的似是而非的东西 ,而且模仿的痕迹还特别大 。比如:
Powershell:
‘abc’.toupper()
Nutshell:
‘abc’ | str upcase
Ls | where size > 5mb | sort-by name
关于nushell的适用场景:
awk最大的竞争对手 ,敌人 ,就是nushell。它可以代替awk ,sed ,可以支持表 ,json ,xml ,bson ,sqlite等 ,支持多线程并发 ,支持特别老的linux ,和unix 。它们的战场(对比场景),就是常见的【linux本地不规范数据处理】 。
世界上90%的人 ,都用linux的默认shell ,如bash,ash等。只有不到5%的linux人把默认shell替换成了powershell 。用nushell当默认shell的人就更少了 。也就是说 ,几乎没人拿nushell当shell用 ,而拿nushell当awk用 。用nushell来处理数据 ,扣取字串 ,分行分列 ,发送接收json等 。
2 powershell:Win ,linux中 ,最强大的还属powershell 。
Powershell的强大 ,主要通过4点:
net 。powershell基于.net ,powershell目录文件中 ,90%以上是.net文件 。Powershell用的是.net对象 ,属性 ,方法 。 通过从nuget下载的.net的dll文件,给powershell各种扩展 。这些扩展是跨平台即win ,linux通用的 。如:在win 、linux中支持各种数据库 。 强大联盟 。微软在win10 ,win11,winserver ,linux ,azure。亚马逊在aws云 ,vmware在powercli中使用powershell 。 我开发的kasini3000 ,这是一个开源 ,免费 ,跨平台的 ,脚本级别的批量运维工具 。而ansible是yaml级别的。可以通过【kasini3000】同时控制多个云 。同时控制公有云 ,私有云 。同时控制win ,linux被控机 。Powershell和Kasini3000中有个功能 ,就是基于powershell的new-psssession的双向远程传对象 。请看:
$时间对象_从被控机传到主控机 = k_run_ip -ip 被控机ip地址 {get-date} $时间对象_从被控机传到主控机.addday(3) #被控机时间 + 3天powershell管道传对象被你nushell无情地山z寨了 。我想看看powershell的远程传对象 ,你怎么山z寨 。
第三章 接续第一集 ,继续探究nushell的功能 。
关于官方的,把nushell看成编译脚本:
这一个特性真的不好 。Powershell没有这个特性 。
nushell第一集中的问题:可以定义带有点的变量 ,却无法使用 ,什么鬼?如:let a.a = 1 ,用$a.a ${a.a} 不能输出 。------已经修复,现在不能定义上述变量 。
nushell第一集中的问题:在win的nushell中 ,的文件名补全 。可以补全目录名(支持) ,目录中的文件名 ,有时候不能自动补全。文件名补全 ,打一个字母后 ,不能补全 ,这个应该是个bug 。------已经修复
nutshell中 ,这一个特性很好:
let if = 1 ,let 1 = ‘a’ ,都可以定义 。并使用$if,$1。这和powershell相同 。Python中不允许这么用 ,而脚本人喜欢用 $1 , $2 。
nushell第2集发现的新问题:
管道可以和powershell联用 ,但有问题:
pwsh.exe -c "echo a" | str upcase
A
----上述好多空格
echo a | str upcase
A ----正常
ls | autoview ---不灵了,应该是autoview命令删除了
$it ---不灵了 ,没了 。
这个命令可以:
aaa 分割符 bbb | parse {a1} 分割符 {a2} | get a1
这个命令不行:让我感到难受
aaa 分割符 bbb | parse {1} 分割符 {2} | get 1 #不行
aaa 分割符 bbb | parse {$1} 分割符 {$2} | get $1 #不行
结论:
Python败在没有shell级别的命令行 ,py脚本内支持管道很麻烦 。不建议使用 。
而powershell是最简单,功能最强的 。它语法和shell 95%相同 。库随不如py强 ,但对脚本 ,运维人员来讲人足够了 。
awk是一个传统的【字符串级别】shell语言工具 。Awk是shell的架海紫金梁 。既然是【字符串级别】工具 ,那就免不了依赖正则 。
nushell是一个【半面向对象级别】的shell工具 。是通天灵宝的仿a制b品(寨c版)。Nushell通过伪对象 ,伪属性 ,伪方法来实现功能 。nushell有管道 ,而python可以看做没有管道 。它支持sql库=sqlite ,nosql库=bson ,用起来比py简单 ,它支持linux外部命令。Nushell是单文件绿色软件 ,这点让它真香!nushell目前最大的对手是awk 。但nushell扩展性不如powershell ,python 。
Shell工具本来是小众软件 。前有【饭醉团dd伙3人组awk-sed-grep】 ,后有强大的【powershell抽喝烫】 。nushell浑身都是假%z货(伪对象,伪属性 ,伪方法) ,nushell能杀出重围吗?敬请期待第3集 。
欢迎awk支持者,参与讨论 。意见不同也很正常 。
Shell用户受困于awk ,这导致excel文件=库 ,mysql库 ,sqlite库 ,bson=nosql库 ,不能方便地被shell用户使用 。Awk和txt又不方便多核cpu 。而nushell的出现 ,部分解决了这种问题 。
对比nushell和powershell(第一集)
https://www.cnblogs.com/piapia/p/15016149.html
创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!