跳过正文
  1. 惊鸿一瞥/

快速概览

838 字·2 分钟
目录

交互
#

  • 自动补全
    • 可执行命令补全
    • 路径补全
    • 历史命令补全
complete
complete
  • 细致的错误提示
语法错误提示运行错误提示
complete
complete

语法高亮
#

highlight
highlight

按键绑定
#

用户可自定义快捷键绑定命令,例如:

alt + m 保存命令书签alt + x 用fzf搜索并执行书签
highlight
highlight

性能
#

  • 内存使用
lumefish
mem_lume
mem_fish
bashdash
mem_bash
mem_dash
  • 循环测试
lumefish
time_lume
time_fish
bashdash
time_bash
time_dash

其中fish无法成功完成百万次循环

  • 软件包大小(安装后)
lumebashdashfish
版本v0.3.8v5.2.037v0.5.12v4.0.2
体积4.3 MB9.2 MB153.8 KiB21.64 MB
  • 测试结果
highlight
highlight

由于fish无法完成百万次任务,我们取值它完成一半任务的时间

语法
#

语法友好易用。

  • 直接数学运算
1 6 / 3
2 5 - 1
3 1+2^3*2
  • 变量
1let a = (2+3)*5
2print "a=" a
3
4let b,c = 1,2     # 支持多变量赋值
5println b c
6println(b,c)      # 也可以
  • 数组/列表
 1let arr = [10, "a", True]
 2let arr_b = 0..10
 3
 4arr[0]       # → 10
 5arr_b.1
 6
 7# 切片操作
 8arr[1:3]     # → ["a", True](左闭右开)
 9arr[::2]     # → [10, True](步长2)
10arr[-1:]      # → True(切片支持负数索引)
11
12# 复杂嵌套
13[1,24,5,[5,6,8]][3][1]     # 显示6
  • 映射/字典
1let dict = {name: "Alice", age: 30}
2
3# 基础访问
4dict.name
5dict[name]
  • if条件语句
1if a>0 && b==0 {
2   print OK
3}else{
4   print BAD
5}
  • match匹配语句
1match a {
2 10 => print "ten",
3 20 => print "twenty"     # 逗号是可选的
4 _ => print other
5}
  • 其他语句 同时支持 For, While, Loop 等循环语句. 条件赋值语句 a?b:c 延迟赋值语句 let a := b + c

  • lambda表达式

1let addone = x -> x+1
2let add = (x,y) -> x+y
3
4addone(2)
5add(3,4)
  • function函数

    支持高阶函数 支持函数嵌套 支持默认参数 支持剩余参数收集

1fn add(x,y=0,*other){     # =提供默认参数,*收集剩余参数
2 x+y+len(other)
3}
4
5add(3)
6add(3,4)
7add(3,4,5,6,7)
  • error catch
1let e = x -> print x
2
33 / 0 ?: e # 你可以使用函数来捕获和处理错误
4
53 / 0 ?. # 你也可以选择忽略它。
63 / 0 ?? # 你也可以选择在 错误输出 上显示它。
73 / 0 ?+ # 你也可以选择将其合并到 标准输出。
83 / 0 ?! # 你也可以选择将错误作为结果使用,这对错误重定向很有用
93 / 0 ?: 0 # 在失败时给出默认值

错误捕获可以在表达式和整个函数声明中使用。

  • 智能管道

智能管道可以自动适应输入和输出格式,智能支持字节管道和 结构化数据管道

结构化管道示例 :

1
2ls -l | From.cmd() | where( int C4 > 4000 )            # 使用系统ls命令
3
4let thead = [mode,i,user,group,size,mday,mtime,name]
5ls -l | From.cmd(thead)  | where(int size > 400) | select([name,size,mtime])   # 自定义转换表头
6
7Fs.ls -l | where(mode==420) | select(name)              # 使用内置ls命令

更多详细信息,请参见手册。

手册
#

测试脚本
#

相关文章