1.["aa\n","bb\n"]输出一个列表,然后每行最后都有换行
2.["aa\n","bb\n"]|str collect其实就是str join功能;
3.netstat -anp是raw input类型,可以用netstat -anp|into string来转换为string类型;
4.["aa\n","bb\n"]|str trim是会将list每个元素都进行trim,但是不会转换(join)为string类型,也不会去掉空元素;
str trim也能对string类型做trim【但是不好的地方是它不能传要trim的参数】
str trim支持trim特定字符,如"aaa,"|str trim -c ","输出aaa
5."aa\nbb\n\n"|lines或split row "\n"将字符串转换为list,但是这个都是会trim掉两边的换行【不知道有没有不trim的】
【提了bug,这个lines可以自动trim,但是split row "\n"不应该】
6.str reverse和str trim一样如果输入是list则每个元素都reverse,但是返回的仍然是之前顺序的list,如果输入是string则将整个string reverse;
7.length是针对list的,所以"aaa"|length是返回1而不是3,要获取"aaa"的长度可以先split chars再length统计;
8.所有的管道符传递的数据都是copy语义的,不会对输入参数造成改变;
9.nushell终端支持上下文,即let kk = "uuu"按回车会到下一行,此时$kk按回车能打印uuu字符串;【所以let Path其实就类似shell里在终端上export kk = 9】
nushell和rust一样,支持对变量重新定义,即可以执行多次let kk = ..
10.str contains "pattern"可以对string和list<string>操作,对于string则是判断这个string是否包含pattern,返回值是bool类型,如果是list<stirng>则是对每个
元素都执行str contains "pattern",返回list<bool>
11.[[1,2,3],[4,5],"ss"]这种多维数组可以通过arr|flatten扁平化为一维数组;
12.nushell支持:[["aa","bb"],"ee"]|describe,返回list<any>,那么就可以实现类似[$"(ls)", $"(netstat -anp)"]|select 1只展示第二个命令【$"(ls)"可以换成(ls),但是输出类型会变成table】
13.ls|$in.name.0可以取出name的值,有cell类型;ls返回的是一个table类型;可以简化为(ls).name.0
14.shell没有void的概念,像echo、表达式之类的,它们都会返回参数本身或者表达式本身;然后就是echo没有$in,它的输入只有“函数参数”一种,因此"aa"|echo $in要这么写
15.注意,select 0不是说把list的第一个元素取出来作为一个item,select是subList的概念,即select 0仍然是list,只是里面只有之前list的第一个元素
16.只适用于list<table<...>>这种复杂item类型(table在nu看来也是一种特殊的list,因此可以扁平化,但是table也无法继续flatten),但是flatten无法将list<string>转换为string【单个元素】;用arr.0的方式取数组,用tb.column.0取cell,通过describe可以得到item/cell正确的类型;
17.nushell可以处理如string、int、list<any>、table(类似list<map>)、record等等数据类型,而bash则只能处理字符串类型
18."abcde,"|str substring $"0,(($in|split chars|length) - 2)",注意"abce"|($in|xxx)等同于"abce"|$in|xxx
19.table类似list<map>【list<record>】,但不是list;record类型就类似map
标签:脚本,总结,trim,nushell,string,list,ls,str,table From: https://www.cnblogs.com/silentdoer/p/16967137.html