PowerShell 这种强大的命令行工具,为什么使用的人很少?

2022-08-30 22:15:53 +08:00
 pepi

感觉很少是自身圈子原因。 我个人特别系统使用 WindowsTerminal 中启动 PowerShell ,git 高亮提示使用 starship 但是 powershell 中的很多设定让人吐槽 例如:curl 是个别名,正常使用 curl 这个工具的参数会报错,此时只能灰溜溜的开启 dos 去请求数据。 还有重定向编码为 UTF16 ,设计 UTF8 颇为复杂,为此逛了 StackOverflow 不少帖子

14978 次点击
所在节点    程序员
137 条回复
FengMubai
2022-08-31 18:35:28 +08:00
内嵌命令不好记, 参数格式不统一
blankmiss
2022-08-31 18:57:41 +08:00
@rming 为什么你这个还带¥
cnbatch
2022-08-31 19:03:50 +08:00
jousca
2022-08-31 19:11:51 +08:00
不好用,原因就是命令太长了,又多又长. 不是很好用。
documentzhangx66
2022-08-31 19:32:26 +08:00
1.楼上很多小伙伴,一看就很不严谨。
New-Item -Type SymbolicLink -Path foo -Target bar
这种设计,明显要比
ln -s foo bar
好得多。
因为前者能让你清楚地知道,你在干嘛。

我在 linux 里使用 verbose 参数,我都不会用 -v ,而是使用 --verbose 。因为前者在某些环境下,有可能是 version ,而后者一定是 verbose 。


2.PS 强大,但为什么用的人少,因为 Windows 本来就不是一个命令行的系统,而且 Windows 下面很多软件的设计都遵循这个结果。真正想用命令行的,都去用 linux 了。
reallittoma
2022-08-31 20:23:56 +08:00
@blankmiss #102 应该是日文系统
reallittoma
2022-08-31 20:25:42 +08:00
@documentzhangx66 #105 Linux 的缩写习惯,明明是时代的限制,后来大家反而认为它是一种优势
geelaw
2022-09-01 00:34:40 +08:00
@mijazz #91 你想说的或许是 Get-ChildItem ,然后 gci 显然是三个单词的首字母,绝大多数情况 cmdlet 后面的名词是单数,除非结果 /目标一定是多个对象的时候,以及除了复数单词更常见的时候(比如是 ...Data 而不是 ...Datum )。
mijazz
2022-09-01 09:51:41 +08:00
@geelaw #108

噢对, 没留意到是`Get-ChildItem`, 这么一来就行得通了.

@documentzhangx66 #105

这个说法我很赞同, 在给参数的时候我也会给全, 特别是写 Script 的时候.
ps 这碗饭我咽不下的地方在于大写和`-`的结合, 确实是个人习惯问题
marcong95
2022-09-01 10:29:05 +08:00
对于主要在 windows 下开发的,偶然需要写个小脚本辅助一下的场景,我是觉得确实挺 power 的,cmd/bash 可能由于历史原因语法特别奇葩,大量特殊符号的运用,连搜索都不好搜,相对来说 powershell 的比较贴近日常使用的程序语言,上手难度--

而且楼上说指令太长的,说实话,对于一万年都不用一次的东西,你要是写的时候写的全称,之后再读的时候就不用查文档了。Linux 风格的那种一堆开关堆起来不查文档想破头都想不出来
yedanten
2022-09-01 10:29:23 +08:00
不否认,powershell 很强大,但是每次用都得查文档,根本记不住,作为交互式来说,体验极差。作为 shell 文件,我写 py 不香么
wxf666
2022-09-01 10:42:32 +08:00
@documentzhangx66 在交互式下,你也认为『 New-Item ... 比 ln ... 好,因为前者能让你清楚地知道,你在干嘛』吗?
droppedbytech
2022-09-01 14:22:46 +08:00
其实就是习惯和普及度的问题吧...unix 系和 Bash 实在太普及了,导致生态有明显差距,尤其是对于全栈或者偏后台的开发者来说,一些命令已经是肌肉记忆了。
如果只说 Shell 语言设计的好不好,bash 显然是不好,模块化 /调试 /可读性可以说都很差,但继承者们的 zsh 还是得兼容,就像 bash 也兼容了很多更早的 sh 一样,就是因为 unix 出现的早,习惯这套东西的人实在太多了,而蕴含的思想也确实足够经典和优秀。一门语言,不管是 shell 语言还是正儿八经的编程语言,并不是设计的好就能普及的,和很多因素挂钩,不然 JavaScript 早就应该被淘汰了吧🐶。感觉除非 Windows (或者哪个使用 PS 作为默认 shell 的操作系统)哪天成为了服务器 /嵌入式 /个人电脑 /便携移动设备的统治级操作系统,就像现在 Linux 这样,PowerShell 才会真正意义上普及吧,使用场景会驱动人们去学习。
documentzhangx66
2022-09-01 17:21:56 +08:00
@wxf666

对!

而且类似的事情还有很多,经常被人以麻烦、成本高的借口忽视,从而导致很多问题。

小到数据丢失与误删,大到千年虫问题与 tcp 数据缺失校验,都是这种情况。
byzod
2022-09-01 17:46:05 +08:00
`解释性完整命名风格` + `没有自动补全` = `灾难`
wxf666
2022-09-01 18:27:56 +08:00
@documentzhangx66 你日常在 shell 里都打些啥命令啊,天天碰到这些问题么。。
documentzhangx66
2022-09-01 18:35:17 +08:00
@wxf666

这是严谨,也是企业级的思路。

举个最简答的例子吧,假设你要帮你朋友的电脑进行重装,你如何指导他进行备份数据?

在企业级的思路了,很多日常的搞法,其实风险很大的。你可以借这个经典问题,思考一下。
james122333
2022-09-01 19:17:20 +08:00
@documentzhangx66

不觉得 不论交互还是写脚本 这样一写多就很杂 而且除非你常用 否则你还是不一定能一眼看出做什么 还有一堆自定义的东西
james122333
2022-09-01 19:20:43 +08:00
@documentzhangx66

严谨... 依照这标准好多项目都不严谨
如果 java 这是严谨没错 但 shell 不是
如果你朋友什么都不会 那个 powershell 他也不会懂的...
james122333
2022-09-01 19:27:09 +08:00
@droppedbytech

基本上就是模块化 /调适 /可读性都要自己弄 习惯好其实写起来算美观又灵活

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://tanronggui.xyz/t/876580

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX