无忧启动论坛

 找回密码
 注册
搜索
最纯净的「微PE装机优盘」UEPON大师作品系统gho:最纯净好用系统下载站数据恢复、数据保护、视频编辑
Win To Go 极致利器(IXUNCIS固态U盘)无忧启动网成立20周年!广告联系 QQ:184822951 微信:wuyouceo
查看: 4920|回复: 94

[分享] 一个cmd的靠谱替代品 yori

    [复制链接]
发表于 2020-11-25 21:16:33 | 显示全部楼层 |阅读模式
本帖最后由 CodeHz 于 2020-11-25 21:16 编辑

官网 http://www.malsmith.net/yori/
挑几个官网上介绍过的特性:
命令补全可以从中间或者开头补全命令而不会把整个命令吞掉(

支持使用bash风格的文件选择器

支持特别长的文件名

(这图是win3.1时代了吧)
跑后台任务,可以同时还拿到输出(这比一众linux的shell体验还好了)

还可以绑定快捷键

从上面的介绍来看,大家也应该能猜出这玩意兼容性如何
从MIPS架构的windows NT 3.1
到现在的(64位)windows 10 2004(build 20262)
以及aarch64的windows 10 (非IoT版本)
都可以支持
(所以大概没精简的特别厉害的pe也能用,我测试的时候server core和docker里的nano server是可以跑的!)

还有就是yori附带的一些相关工具的特性:
0.  84个exe,除开yori本体和安装器,也有接近80个是可以独立使用的,也就是你不用yori也可以用上一些好处
1. (对开发者的) 自带一个 ymake 可以取代一部分nmake的功能,还支持多线程构建(虽然GNU Makefile早就支持了,但是这玩意可比gmake小多了)
2. (对开发者的) 执行cmd批处理后会把批处理设置的环境变量导出到yori,也就是说你可以直接用 vcvarsall.bat 设置当前环境变量,而不需要另外写脚本兼容
3. 还自带一个 yui.exe 可以当作简单的桌面shell替代,当然和本站的winxshell是没法比,但是耐不住这玩意小啊(49KB!),也支持奇葩的server core(
4. 自带一个 yedit.exe 可以用作简单的文本编辑器(tui),当然这个中文支持有点问题,不过这体积(109kb)咱也别要求啥了
5. 自带一个 ycompact.exe 可以用作简单的压缩/解压器,当然用的是系统api所以支持的格式只有 lzx, ntfs, xp4k, xp8k, xp16k
6. 当然也有 cab 的相关支持
7. 还有一个包管理器 ypm.exe
8. 自带一个简单的http下载器yget.exe(虽然我通常都是用win10内置的curl.exe)
9. 剩下的自己发现(


使用提示:
1. help 命令可以看到多数内置命令的简要帮助
2. 参数用 / 或者 - 均可(双厨狂喜)
3. 所有yori内置的程序都可以用 -? 获取帮助(或者 /?)

本地编译镜像(x64 + x86,7z默认参数打包后只有1MB,如果不想从官网下载安装器然后联网安装的话,可以用我这个)
游客,如果您要查看本帖隐藏内容请回复

评分

参与人数 4无忧币 +20 收起 理由
freesoft00 + 5
whyme22 + 5
wuxin9712 + 5
9zhmke + 5 很给力!

查看全部评分

发表于 2020-11-25 21:23:00 | 显示全部楼层
比较奇怪的,作为受众这么广的 cmd.exe  这么多年都没什么变化。

无论是特性和操作都不合主流。

被各第第三方工具吊打呀。

用了蛮久的 cmder,自带了 unix工具和git ,挺方便的。

点评

junyee>比较奇怪的,作为受众这么广的 cmd.exe 这么多年都没什么变化。 比较奇怪的是 Windows X86/X64 CMD 还是有万年老问题不解决 C:\>set/a 10/3 3 C:\>set/a 2147483647+1 -2147483648  详情 回复 发表于 2020-11-25 21:55
其实那个窗口,也就是现在的conhost,倒是变化了很多(还有官方的windows terminal也算很不错),只不过cmd.exe这个shell本体,一直就没有什么改变,而且以后也不会有了,因为微软官宣不再更新 (这里一定要区分cmd  详情 回复 发表于 2020-11-25 21:41
回复

使用道具 举报

 楼主| 发表于 2020-11-25 21:41:55 | 显示全部楼层
junyee 发表于 2020-11-25 21:23
比较奇怪的,作为受众这么广的 cmd.exe  这么多年都没什么变化。

无论是特性和操作都不合主流。

其实那个窗口,也就是现在的conhost,倒是变化了很多(还有官方的windows terminal也算很不错),只不过cmd.exe这个shell本体,一直就没有什么改变,而且以后也不会有了,因为微软官宣不再更新
(这里一定要区分cmder和我这里说的工具的区别,一个是里面跑的东西,一个是界面展现的)
而powershell虽然功能强大,与系统交互性很好,但是毕竟启动速度慢,而且习惯也是很大的问题,反正cmd爱好者和linux的爱好者都用不惯(

点评

我发现 yori 启动后,也会多启动一个conhost.exe。 具体的过程暂时超出我所知范围, cmder 是套壳,不过确实蛮好用,尤其是对习惯了 linux 工具的人来说。 内置了 bash.exe 也很好用,或许还可以装装zsh 。  详情 回复 发表于 2020-11-26 12:26
>powershell虽然功能强大,与系统交互性很好,但是毕竟启动速度慢 在我十余年老 PC Windows 7 X64, 第一次运行 PowerShell 大概要等 5 秒. PowerShell 依赖 .NET 所以对老 OS 支持性不好, 原则上 1. 找网上命  详情 回复 发表于 2020-11-25 22:09
回复

使用道具 举报

发表于 2020-11-25 21:55:42 | 显示全部楼层
junyee 发表于 2020-11-25 21:23
比较奇怪的,作为受众这么广的 cmd.exe  这么多年都没什么变化。

无论是特性和操作都不合主流。

junyee>比较奇怪的,作为受众这么广的 cmd.exe  这么多年都没什么变化。

比较奇怪的是
Windows X86/X64 CMD 还是有万年老问题不解决

C:\>set/a 10/3
3

C:\>set/a 2147483647+1
-2147483648

点评

你这个问题很容易理解。也不能算是BUG, 随便用 set 输入一个大整数 [attachimg]469152[/attachimg] 提示精度为32位。他并没有说是否 无符号,事实上是有符号的。 最大的正整数即是 0x7fffffff,最小的是  详情 回复 发表于 2020-11-26 12:11
(我怎么觉得这是预期行为( 整数溢出自动回环应该是符合预期的,比js在超过最大安全整数后出现诡异的行为要好得多。。。  详情 回复 发表于 2020-11-25 22:05
回复

使用道具 举报

发表于 2020-11-25 22:01:00 | 显示全部楼层
下载试用
回复

使用道具 举报

 楼主| 发表于 2020-11-25 22:05:32 | 显示全部楼层
plusv 发表于 2020-11-25 21:55
junyee>比较奇怪的,作为受众这么广的 cmd.exe  这么多年都没什么变化。

比较奇怪的是

(我怎么觉得这是预期行为(
整数溢出自动回环应该是符合预期的,比js在超过最大安全整数后出现诡异的行为要好得多。。。

点评

我指的是最大数的支持,不是溢位的问题. UInt= 0(0) 到 4294967295(FFFFFFFF) --> (4.00 GB) (32 位 CMD) UInt64= 0(0) 到 18446744073709551615(FFFFFFFFFFFFFFFF) --> (16.00 EB) (64 位 CMD)  详情 回复 发表于 2020-11-25 22:17
回复

使用道具 举报

发表于 2020-11-25 22:09:54 | 显示全部楼层
CodeHz 发表于 2020-11-25 21:41
其实那个窗口,也就是现在的conhost,倒是变化了很多(还有官方的windows terminal也算很不错),只不过c ...

>powershell虽然功能强大,与系统交互性很好,但是毕竟启动速度慢

在我十余年老 PC Windows 7 X64,
第一次运行 PowerShell 大概要等 5 秒.
PowerShell 依赖 .NET 所以对老 OS 支持性不好,
原则上
1. 找网上命令行工具 --> 2. 找不到合用的考虑自写小工具 --> 3. 最后才会考虑用 PowerShell.



点评

我这边新的机器都有肉眼可见的延迟(虽然小于0.5秒) 怪不得微软不把ps1作为直接可执行的文件,而bat却可以。因为bat基本都是秒开  详情 回复 发表于 2020-11-25 22:21
回复

使用道具 举报

发表于 2020-11-25 22:17:26 | 显示全部楼层
CodeHz 发表于 2020-11-25 22:05
(我怎么觉得这是预期行为(
整数溢出自动回环应该是符合预期的,比js在超过最大安全整数后出现诡异的行 ...

我指的是最大数的支持,不是溢位的问题.

UInt=     0(0) 到 4294967295(FFFFFFFF) -->  (4.00 GB) (32 位 CMD)
UInt64=   0(0) 到 18446744073709551615(FFFFFFFFFFFFFFFF) --> (16.00 EB) (64 位 CMD)

点评

其实溢出也是兼容性的一部分啊。。。 你看c/c++编译器从32位到64位没见几个把int给改64位的,就是因为很多人依赖了int是32位的这个事实。 cmd这个兼容性保证就是为了让旧的批处理还能直接运行,尤其是依赖了这种溢  详情 回复 发表于 2020-11-25 22:25
回复

使用道具 举报

 楼主| 发表于 2020-11-25 22:21:06 | 显示全部楼层
plusv 发表于 2020-11-25 22:09
>powershell虽然功能强大,与系统交互性很好,但是毕竟启动速度慢

在我十余年老 PC Windows 7 X64,

我这边新的机器都有肉眼可见的延迟(虽然小于0.5秒)
怪不得微软不把ps1作为直接可执行的文件,而bat却可以。因为bat基本都是秒开

点评

我是蛮喜欢 PowerShell 的, 但基于第一次运行速度及 OS 支持度, 我最后才会使用 PowerShell. DOS/CMD BAT 或 Unix-Like Shell Script 都是工程师的玩意,运行快很重要.  详情 回复 发表于 2020-11-25 22:33
回复

使用道具 举报

发表于 2020-11-25 22:23:52 | 显示全部楼层
让我想起来多年前练悉的Norton下的NDOS

点评

Norton 真是位天才.  详情 回复 发表于 2020-11-25 22:54
回复

使用道具 举报

 楼主| 发表于 2020-11-25 22:25:18 | 显示全部楼层
plusv 发表于 2020-11-25 22:17
我指的是最大数的支持,不是溢位的问题.

UInt=     0(0) 到 4294967295(FFFFFFFF) -->  (4.00 GB) (32  ...

其实溢出也是兼容性的一部分啊。。。
你看c/c++编译器从32位到64位没见几个把int给改64位的,就是因为很多人依赖了int是32位的这个事实。
cmd这个兼容性保证就是为了让旧的批处理还能直接运行,尤其是依赖了这种溢出行为的
200x年的cmd到2020年的cmd除了版本号不同之外,微软就没更新功能,自然包括了在升级64位时保留set/a只能32位数字的特性。

点评

>64位时保留set/a只能32位数字的特性。 我不能理解 MS 为什么一定是整数. C:\>set/a 10/3 3  详情 回复 发表于 2020-11-25 22:44
回复

使用道具 举报

发表于 2020-11-25 22:33:00 | 显示全部楼层
CodeHz 发表于 2020-11-25 22:21
我这边新的机器都有肉眼可见的延迟(虽然小于0.5秒)
怪不得微软不把ps1作为直接可执行的文件,而bat却 ...

我是蛮喜欢 PowerShell 的,
但基于第一次运行速度及 OS 支持度,
最后才会使用 PowerShell.

DOS/CMD BAT 或 Unix-Like Shell Script 都是工程师的玩意,运行快很重要.
回复

使用道具 举报

发表于 2020-11-25 22:34:40 | 显示全部楼层
一个cmd的靠谱替代品 yori
回复

使用道具 举报

发表于 2020-11-25 22:36:37 | 显示全部楼层
用cmd做计算,浮点没有必要。
字符串操作也很多特殊字符限制,能调用别的就行了。

好说歹说,现在Windows 10支持CTRL+V粘帖了,WIN+V也支持。
(虽然以前用autohotkey也能解决)



透明,图片背景,多Tab,分屏,快捷键(分屏,移动光标,复制)等,Windows Terminal都可以搞定,
就是不支持History,重新打开上下键无法使用历史命令。
powershell,bash,其他三方都支持。CMD很不方便,WinTerm壳也没办法。

WindowsTerminal_CMD.png
回复

使用道具 举报

发表于 2020-11-25 22:44:15 | 显示全部楼层
CodeHz 发表于 2020-11-25 22:25
其实溢出也是兼容性的一部分啊。。。
你看c/c++编译器从32位到64位没见几个把int给改64位的,就是因为很 ...

>64位时保留set/a只能32位数字的特性。

我不能理解 MS 为什么一定是整数.

C:\>set/a 10/3
3

点评

难不成用浮点,然后 https://0.30000000000000004.com/ 这样吗 即使不考虑这种极端情况,那么32位浮点数安全表示的整数范围就-16777216 到 16777216,得用64位浮点 除此之外,浮点的文本表达也是一个问题,按照exa  详情 回复 发表于 2020-11-25 23:05
回复

使用道具 举报

发表于 2020-11-25 22:54:22 | 显示全部楼层
9zhmke 发表于 2020-11-25 22:23
让我想起来多年前练悉的Norton下的NDOS

Norton 真是位天才.

点评

天才夫妻...  详情 回复 发表于 2020-11-25 22:55
回复

使用道具 举报

发表于 2020-11-25 22:55:36 | 显示全部楼层
plusv 发表于 2020-11-25 22:54
Norton 真是位天才.

天才夫妻...
回复

使用道具 举报

发表于 2020-11-25 22:59:49 | 显示全部楼层
就像你们说的,powershell很强大却太慢,CMD又太落后,所以我干脆选用VBS,虽然仍然比不上Powershell但有些地方也比它强大,又快又方便

点评

vbs不能做shell用,只能做脚本啊*  详情 回复 发表于 2020-11-25 23:08
回复

使用道具 举报

 楼主| 发表于 2020-11-25 23:05:40 | 显示全部楼层
plusv 发表于 2020-11-25 22:44
>64位时保留set/a只能32位数字的特性。

我不能理解 MS 为什么一定是整数.

难不成用浮点,然后 https://0.30000000000000004.com/ 这样吗
即使不考虑这种极端情况,那么32位浮点数安全表示的整数范围就-16777216 到 16777216,得用64位浮点
除此之外,浮点的文本表达也是一个问题,按照exact的方式表达,那么数字大一点就得突破屏幕范围。。。
用定点数字表达那么很多计算就不精确,
即使用上了科学计数法,以64位浮点数的精度,那也得非常离谱的长度才能准确表示(无论处理还是显示都很不方便)
什么,你说为啥一定得文本表示,那你得问问环境变量是否允许。。。
于是,为了引入浮点计算,就必须得引入一个二等公民来保存浮点数值,这显而易见会大幅度增加复杂度。。


综上所述,在批处理的场景下,不适合引入浮点数乃至无限精度数字运算一类的功能
(当然要我设计的话,整一个无限精度整数运算还是可行的)

点评

+-*/ 一般实务的使用, 浮点很正常吧.  详情 回复 发表于 2020-11-25 23:13
回复

使用道具 举报

 楼主| 发表于 2020-11-25 23:08:50 | 显示全部楼层
9zhmke 发表于 2020-11-25 22:59
就像你们说的,powershell很强大却太慢,CMD又太落后,所以我干脆选用VBS,虽然仍然比不上Powershell但有些 ...

vbs不能做shell用,只能做脚本啊*
回复

使用道具 举报

发表于 2020-11-25 23:12:44 | 显示全部楼层
好东西来共享。
回复

使用道具 举报

发表于 2020-11-25 23:13:05 | 显示全部楼层
CodeHz 发表于 2020-11-25 23:05
难不成用浮点,然后 https://0.30000000000000004.com/ 这样吗
即使不考虑这种极端情况,那么32位浮点数 ...

+-*/ 一般实务的使用,
浮点很正常吧.

点评

你10/3就是无限循环小数,64位浮点的exact方式表示就得 3.3333333333333335 看着还行是吧,考虑下大数?浮点数可以弄出307位的大数,这怎么写( 浮点数还有更多的问题我前面没说( 如果不小心出现除以0,那么恭  详情 回复 发表于 2020-11-25 23:26
回复

使用道具 举报

发表于 2020-11-25 23:19:32 | 显示全部楼层
这个yori命令行工具倒是不错!谢谢推荐!
回复

使用道具 举报

 楼主| 发表于 2020-11-25 23:26:59 | 显示全部楼层
plusv 发表于 2020-11-25 23:13
+-*/ 一般实务的使用,
浮点很正常吧.

你10/3就是无限循环小数,64位浮点的exact方式表示就得
3.3333333333333335
看着还行是吧,考虑下大数?浮点数可以弄出307位的大数,这怎么写(
浮点数还有更多的问题我前面没说(
如果不小心出现除以0,那么恭喜你,现在又可以
Infinite -Infinite(考虑下怎么文本表达)
这些数字加减有限数字都不会变的
然后如果0/0或者Infinite * 0就可以触发下一个噩梦:NaN
它自身判断不相等,NaN != NaN,任何数字运算结果都会变NaN
这些就是引入浮点数的负面后果。。。
当然,最主要的问题还在于文本表达上,前面的都可以克服,但是用环境变量,文本表达是绕不过去的砍
所以真的想玩浮点数,建议用正经的编程语言,即使js这种令人诟病的,也比试图用文本化的浮点数运算靠谱。。。

点评

实务使用 你可能会看到 3333333333333333.88 3,333,333,333,333,333.88 (2.961 PB) 而不会看到 3.333333333333333 浮点数通常取 2-4 位居多.  详情 回复 发表于 2020-11-25 23:39
回复

使用道具 举报

发表于 2020-11-25 23:39:18 | 显示全部楼层
CodeHz 发表于 2020-11-25 23:26
你10/3就是无限循环小数,64位浮点的exact方式表示就得
3.3333333333333335
看着还行是吧,考虑下大数 ...

实务使用
你可能会看到
3333333333333333.88 3,333,333,333,333,333.88 (2.961 PB)
而不会看到
3.333333333333333
浮点数通常取 2-4 位居多.

点评

实际上你后面那个数值64位浮点数不能精确表示,随便算一个加减都有很大误差了( 不过话说回来我觉得shell的定位不是给你做计算器用的,误差倒也没啥问题,想折腾数学的要不我移植一个bc/dc过来玩玩(linux下的一个  详情 回复 发表于 2020-11-25 23:58
回复

使用道具 举报

发表于 2020-11-25 23:42:56 | 显示全部楼层
谢谢分享,收藏备用。
回复

使用道具 举报

 楼主| 发表于 2020-11-25 23:58:37 来自手机 | 显示全部楼层
plusv 发表于 2020-11-25 23:39
实务使用
你可能会看到
3333333333333333.88 3,333,333,333,333,333.88 (2.961 PB)

实际上你后面那个数值64位浮点数不能精确表示,随便算一个加减都有很大误差了(
不过话说回来我觉得shell的定位不是给你做计算器用的,误差倒也没啥问题,想折腾数学的要不我移植一个bc/dc过来玩玩(linux下的一个知名计算器)

点评

前面说了 浮点数通常取 2-4 位居多. 不需要非常准确的浮点.  详情 回复 发表于 2020-11-26 00:09
回复

使用道具 举报

发表于 2020-11-26 00:09:29 | 显示全部楼层
CodeHz 发表于 2020-11-25 23:58
实际上你后面那个数值64位浮点数不能精确表示,随便算一个加减都有很大误差了(
不过话说回来我觉得shel ...

前面说了 浮点数通常取 2-4 位居多.
不需要非常准确的浮点.

点评

你这个是在整数部分就已经炸了( 数字再高一点就区分不了+1 -1了,两数相减直接变成0  详情 回复 发表于 2020-11-26 00:13
回复

使用道具 举报

 楼主| 发表于 2020-11-26 00:13:44 来自手机 | 显示全部楼层
plusv 发表于 2020-11-26 00:09
前面说了 浮点数通常取 2-4 位居多.
不需要非常准确的浮点.

你这个是在整数部分就已经炸了(
数字再高一点就区分不了+1 -1了,两数相减直接变成0

点评

现在的硬盘都很大, 需要大数运算. N 68% 700.73GB/1.00TB 752,402,935,808/1,099,514,769,408 752402935808/1099514769408  详情 回复 发表于 2020-11-26 00:23
回复

使用道具 举报

发表于 2020-11-26 00:23:18 | 显示全部楼层
本帖最后由 plusv 于 2020-11-26 00:44 编辑
CodeHz 发表于 2020-11-26 00:13
你这个是在整数部分就已经炸了(
数字再高一点就区分不了+1 -1了,两数相减直接变成0

现在的硬盘都很大,
需要大数及浮点运算.

N 68% 700.73GB/1.00TB 752,402,935,808/1,099,514,769,408 752402935808/1099514769408

1.png


点评

所以必须承认软件设计是有局限性的,不同的需求不可能同时满足,特别是加上微软的立命之本兼容性需求之后。 (反正我觉得整数运算很符合逻辑,非要浮点算那肯定要专门设计一个新的参数,然后不可能整出这种看起来就  详情 回复 发表于 2020-11-26 00:39
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2021-3-6 00:00

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表