先回顾一下已知 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 模式增强功能)
1
Jirajine 2020-11-27 21:16:53 +08:00 via Android
除了 msys2+zsh 这样伪 POSIX 的之外,也可以用 elvish 等 non-posix complaint shell 。
|
2
ysc3839 2020-11-28 00:16:19 +08:00
> 路径格式不一致,win 的目录分割符不兼容, 管道里还可以通过 cygpath 转换,但是复制粘贴的时候就麻烦了
推荐 ConEmu,粘贴时会自动转换。 |
4
zlowly 2020-11-28 01:10:14 +08:00
不知道使用起来和 Take Command 比起来如何?当然 Take Command 是作为命令行解释器和 shell 在本质上不同,不过作为用户我们往往只关注使用效果。
|
6
zhuangzhuang1988 2020-11-28 01:29:18 +08:00
直接 windows terminal + pwsh
不搞花里胡哨的. |
8
LokiSharp 2020-11-28 01:57:22 +08:00 via iPhone
pwsh 足够了,我对现代 Shell 的期望是
1 跨平台 2 提供 IDE 、编辑器插件实现代码提示,错误检查 3 可扩展,Shell 自身别整花里胡哨的特性 |
9
Sparetire 2020-11-28 06:40:29 +08:00 via Android
目前 windows terminal+git bash/power shell 还蛮舒服的,虽然 git bash 说的也是事实,但是路径转换问题我也只遇到一次,总的来说问题不大但能换回较好体验
这个总感觉有那么点尴尬。。在痛点的地方没那么能打,能打的地方不是我的痛点。。可能还是看个人习惯吧 |
10
37Y37 2020-11-28 08:32:52 +08:00
windows terminal 挺香的
|
11
exip 2020-11-28 08:52:55 +08:00 via Android
Cmder 还行,再加上这个 yori 就更完美了
|
12
codehz OP @ysc3839 cygwin/mingw 确实没解决,你可以试试新建一个超过 300 字符的文件,直接报错 File name too long
|
13
lepig 2020-11-28 11:35:50 +08:00
babun
|
14
muzuiget 2020-11-28 13:22:29 +08:00
我就要么 cmd.exe ,要么 bash,兼容性、稳定性和依赖是大问题,那一点点特性无所谓了。
|
15
Kasumi20 2020-11-29 01:05:30 +08:00
终止批处理操作吗(Y/N)?
哈哈, 戳中笑点 |