先回顾一下已知 win 上的几大主流命令行 shell (指在主要 win 下使用,操作 win 的资源,不包括直接弃疗用 wsl )
cmd 自然是没得说,即使微软主推 ps,也没彻底汰换掉 cmd.exe ,还是有不少朋友喜欢使用。 启动速度快,兼容性广泛都是它的优点。 当然,缺陷也是非常之多, 比如没有方便的宏 /alias 机制; 万恶的 终止批处理操作吗(Y/N)? ; 以及没有内建的多任务管理功能等待; 再加上已经官宣不再更新了,所以也不可能再有改进的机会。
PowerShell 大概属于现代 shell 的一员了,各种特性也给的很全。 包括现在支持各种 readline 的快捷键和命令补全。 命令基本上都是自解释性的,还能嵌入 C#实现功能扩展。 缺陷则主要集中在: 启动速度过慢(即使没有写用户配置,都有肉眼可见的启动延迟,但是怎么可能不写用户配置呢,这样一来,加载时间基本都短不了); 命令约定和常规的 unix 风格和 dos 风格都不搭; 用对象做管道传递,但是和传统程序不兼容 (以至于传输常规文本的性能都比较捉急,最终的效果就是给人一种卡卡的感觉), 相比之下 PowerShell 更适合编写长期使用的脚本,而非交互式使用。
接下来就是知名的 bash,很多人可能都是通过 git for windows 或者 msys2 获取的,伴随而来的是一整套 unix 常见工具链。 对于相关开发的人来说是属于比较友好的。 而缺陷在于: 路径格式不一致,win 的目录分割符不兼容, 管道里还可以通过 cygpath 转换,但是复制粘贴的时候就麻烦了; 除此之外,由于使用的是 c 库函数,所以目录长度受限于 260 的路径限制, 在一些场景会报错 File name too long ; 最后,由于每次按下回车都会创建好多个进程生成 PROMPT, 但是 windows 创建进程速度极慢,给人也是一种卡卡的感觉。
(讽刺的是 Git for windows 是默认支持长文件名的,但是附带的 bash 却没有,这就导致了各种诡异的问题)
我相信只要有过一段时间使用 windows 命令行接口的用户,都会有类似的感受吧。
其实很多时候大家只是需要一个能在 cmd 基础上增强的工具而已, 这里有一个选项:clink,通过 hook cmd 来实现扩展, 但是我这边是处于一直无法使用的尴尬状态 ( 64 位一直 hook 不成功,32 位可以,但是 32 位的 cmd 会受到 WoW64 重定向的影响)。 然后它实际上也没有解决全部的问题, 比如该缺的工具还是缺 (虽然可以通过 msys2 来补充,但是上面说的路径问题还是影响比较大的)。
然后某次不经意间发现了 yori 发现这玩意真就瞄着 cmd 的痛点去的,各种角度看都是 cmd 的增强,这条路算是比较正常的路线,而不是 unix 工具的移植(毕竟,真要用 linux 的时候都是直接实机装 linux,远程或者 wsl 了,谁还用 windows 啊)
目前简单用下来发现有如下几个特性:
` `
)将里面的命令的执行结果引出来\\wsl\YourDistro
完整安装的话,还有 80 多款自带工具,包括部分 unix 兼容的,和对 win32 的控制台命令扩展的,均可以使用 -?
或/?
获取帮助
(如果使用 windows terminal,部分功能会无法使用,主要是那些涉及 cmd 窗口扩展的,比如 quickedit 模式增强功能)
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.