首页 > 系统相关 >Nushell 使用说明及总结

Nushell 使用说明及总结

时间:2023-10-18 20:12:14浏览次数:32  
标签:总结 10k Nushell 数据类型 说明 ls 字符串 where size

介绍

作为 Shell 语言, 我特别喜欢 Nushell 的如下几个特点:

  • 来自 UNIX Shell 的管道, 把多个命令连接在一起
  • 函数式编程风格

   事实上, 管道操作符 (|) 也是很多函数式编程的操作符

  • 丰富的对象化的数据结构
  • 对结构化文件的处理, 比如 JSON, XML, CSV, TOML 等
  • 基于模板的字符串解析
  • 在线帮助
  • 输出结果是彩色的, 而且是表格化的, 还自带编号 ! 真贴心 !
  • Footprint 很小, 安装后 < 30M (0.85 版本)

本文内容大多数来自 http://www.nushell.sh/zh-CN/book/ (文中简称 book), 但是也有很多我自己的理解.

鉴于 book 中, 已经把 Nushell 的介绍和使用说的非常详细了, 本文不打算重复或抄录其内容, 更多是补充和总结.

 

基础知识

 

1. 数据类型

关于 Nushell 的数据类型, 这里强调和补充几个要点:

  • 可以用 describe 命令来获得前一个管道输出的数据类型描述

比如 ls | describe, 就可以知道 ls 输出的 table 的表头的名称和类型, 在编写后面的语句时, 能参考这些名字

  • 可以用 into <type> 来把前一个管道输出的数据类型转换成当前引用的数据类型
  • 字符串可以用单引号, 也可以用双引号, 两者稍有不同
  • 字符串也可以不用任何引号, 这叫裸字符串. 比引号更好的地方在于, 裸串不需要转义

例如:

open d:\tmp\aa.txt

 对比: 

open "d:\\tmp\\aa.txt"

 

  • null 是特殊的,内定的数据, 表示 "没数据/未定义", 类似 C 中的 void, C# 中的 null, 或 Python 中的 None.

例如下面语句中的 null

[[meal size]; [arepa, null] ] | is-empty meal # false

 对比: 

  • 区间还可以用负数表示, 但是需要加上括号, 否则容易引起编译器误解. 例如下面的语句: 
'abcd12345678' | str substring (-5..-2)  #456

(-5..-2) 的意思是, 从倒数第五开始, 到倒数第二结束.

也可以省略区间的结尾. 比如:

(-3..)   意思是, 从倒数第三个位置开始取, 直到末尾. 即等于 (-3, -2, -1)

这个设计理念应该是从 Python 借用过来的.

负数区间在切片时非常有用

  • 用字符串的 parse 命令, 可以把一个字符串解释成若干列. 这个 "按模式切片" 的功能, 真是日志分析的利器.

2. 变量

 

  • Nu 中的变量,其实是 "常量", 一旦赋值后就不允许修改
  • 与常规编程语言类似, 变量有作用域, 子域可以使用同名变量, 不会覆盖父域的同名变量
  • 变量支持路径.

比如

 

prrint $val.name

 

print $val.name

 

3) 子表达式
* 可以通过圆括号 () 来执行一个子表达式并使用其结果.
例如 (ls)
* 子表达式也支持路径
例如 (ls).name
* 子表达式可以简化
ls | where size > 10kb
其实是简化的子表达式. 完整的语法应该是
ls | where {|it| $it.size > 10k}
上述语法也可以部分简化成:
ls | where $it.size > 10k
ls | where ($it.size > 10k)
* 简化后的子表达式, 路径名必须写在前面.
以下语句非法:
ls | where size > 10k
但以下语句合法:
ls | where 10k < $it.size
ls | where (10k < $it.size)

 

ls 命令介绍

 

列表 (list) 及处理

 

字符串及处理

 

path 命令

 

系统命令

 

常用的 Filter 命令

 

 

系统或平台相关的命令

 

核心命令

 

几个综合应用的例子

 

标签:总结,10k,Nushell,数据类型,说明,ls,字符串,where,size
From: https://www.cnblogs.com/yun-dicom/p/17772956.html

相关文章

  • 每日总结20231018
    代码时间(包括上课)3h代码量(行):80行博客数量(篇):1篇相关事项:1、今天上午上的是软件构造,这节课首先是播放的是人工智能方向的未来发展,通过百度的各项研究表明IT行业发展迅速,不能局限于上课的知识。2、后两节讲的是如何用面向对象的知识去写四则运算的程序,然后讲了debug的重要性。3......
  • 2023.10.17 测试总结
    预计得分:145实际得分:148T1考场上没有想出来,打了一个高精度暴力。问题大概在:1.对哈希算法不熟悉。2.数学上对对数的计算不熟悉。耗时:1hT2暴力。没有挂分,正解属于是难以想到的。耗时:1hT3极为接近正解,但是挂分过多。问题有:1.没有检查出来数组开小了。2.......
  • 10.18每日总结
    将数据库作业写完了,巩固了hive的相关知识;学习了软考的相关知识点;重新捋了捋自己的逻辑;学习了springboot的相关内容;背单词;明天预计将逻辑实现;将部门留下的一篇推文写了;背单词;学习软考;学习新的技术;规划一下;......
  • Linux课堂知识总结
    这是学习Linux的第二节课,老师跟我们讲述了Linux的文件管理操作。用户可以通过mkdir命令创建一个空白目录,添加-p参数还可以创建一个多层目录。通过pwd命令可以显示当前所在的目录,添加-p参数还可以显示实际工作目录。ls-a可以查看隐藏的目录与文件,ls-l可以查看目录与文件的属性。c......
  • Linux课堂总结
    这是学习Linux的第一节课,老师介绍了Linux的由来:Linux,一般指GNU/Linux(单独的Linux内核并不可直接使用,一般搭配GNU套件,故得此称呼),是一种免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹(LinusBenedictTorvalds)于1991年10月5日首次发布,它主要受到Minix和Unix......
  • 2023.10.13NOIPSIM3总结
    T1卡牌赛时打了一个\(\Omicron(nm)\)的暴力,拿到30分。我们发现第\(i\)张牌对BOSS造成的伤害为$att_i*\lceil\frac{hp_i}{Att}\rceil$,那么考虑以卡牌血量值域为下标开一个桶,储存相同血量的卡牌的\(\sumatt\)。对于每一级BOSS的攻击力,我们都可以在桶上根据\(\lceil......
  • Linux课堂知识总结
    这是学习Linux的第一节课,我们跟随老师学习了VMwareWorkstation的安装和CentOS虚拟机的安装还有各项虚拟机的配置,学习的知识点相对来说比较少,但是很考验我们在网上搜索资源的能力。在经过网上资源的筛选和软件的下载安装后,我学到了如何安装虚拟机。很幸运在网上资源的寻找上我并没......
  • 开源协议说明
    GPL协议:即通用性公开许可证(GeneralPublicLicense,简称GPL)。GPL同其它的自由软件许可证一样,许可社会公众享有:运行、复制软件的自由,发行传播软件的自由,获得软件源码的自由,改进软件并将自己作出的改进版本向社会发行传播的自由。 GPL还规定:只要这种修改文本在整体上或者其......
  • PMP项目章程和项目范围说明书区别
     项目章程是由项目启动者或发起人发布的,正式批准项目成立,授权项目经理使用组织资源开展项目活动的文件。记录了关于项目和项目预期交付的产品、服务或成果的高层级信息。项目章程是对项目经理的授权书,是项目团队成员的护身符。对项目章程有疑问时,项目经理应与项目发起人商谈。......
  • 架构应用总结
    天带来的是架构活动中的常见原则,在我们平时做技术方案,非功能设计时一定需要铭记于心这些方法论。架构目标高可用性整体系统可用性最低99.9%,目标99.99%。全年故障时间整个系统不超过500分钟,单个系统故障不超过50分钟。高可扩展性系统架构简单清晰,应用系统间耦合低,容......