感觉很少是自身圈子原因。 我个人特别系统使用 WindowsTerminal 中启动 PowerShell ,git 高亮提示使用 starship 但是 powershell 中的很多设定让人吐槽 例如:curl 是个别名,正常使用 curl 这个工具的参数会报错,此时只能灰溜溜的开启 dos 去请求数据。 还有重定向编码为 UTF16 ,设计 UTF8 颇为复杂,为此逛了 StackOverflow 不少帖子
1
respawn 2022-08-30 22:26:05 +08:00
发力晚
合适的场景下有更成熟的替代品 |
2
cweijan 2022-08-30 22:26:43 +08:00
主要还是不兼容吧, 使用 cmd 的一些常用命令会报错, 学习成本高, 启动又慢..
|
3
AllenHua 2022-08-30 22:30:42 +08:00
大多数人习惯的是 Linux 命令行终端,对 Linux 各种命令熟悉一些。
有一说一,你这正文并没有让人感受到 PowerShell 有多强大…… |
4
jim9606 2022-08-30 22:31:03 +08:00
主要是这玩意绝大多数时候等于 windows 限定,尽管现在跟着.NET 一起跨平台了,winserver 这边运维一般用 GUI 或者 WinRM ,powershell 不是必须,如果自动化的事情涉及复杂结构化消息处理,用 python 更主流一些。
至于 curl 问题,还是挖墙脚意味居多,换成 curl.exe 就是,正经 ps 脚本用 Invoke-WebRequest 不用别名。 |
5
musi 2022-08-30 22:34:23 +08:00
你这贴的内容并没有让我觉得 PowerShell 很强大,甚至让谁给我觉得 PowerShell 有很高的上手成本,有这时间我直接用 linux 的命令行不香么,学完了还能干点运维的活
|
6
zhuangzhuang1988 2022-08-30 22:34:34 +08:00
自带微软原罪.
|
7
liuxu 2022-08-30 22:36:12 +08:00
有点去重庆开火锅店的意思
|
9
Damn 2022-08-30 22:37:51 +08:00
@zhuangzhuang1988 ms 的东西对 linux 用户来说就是中世纪的 witch 。。
|
10
germain 2022-08-30 22:38:02 +08:00
PowerShell 使用的人很多,但不是搞开发的在用。大多数场景都是 infra,devops 在用。
|
11
chengliang 2022-08-30 22:41:33 +08:00
因为没有环境吧,我们公司的工具都是基于 powershell 的,所以反而用 bash 的很少
|
12
pluvet 2022-08-30 22:47:39 +08:00 1
太难用了……
|
13
wxf666 2022-08-30 22:50:49 +08:00 1
|
15
wxf666 2022-08-30 22:57:11 +08:00
@chengliang 想问一下,你们以交互式使用 powershell 多吗?还是多作为脚本使用?
|
16
vanton 2022-08-30 23:02:06 +08:00
相对 linux 和 bsd 下的各种 sh ,powershell 太难用了。
配置也很麻烦,各种支持还很初级。 |
17
wdhwg001 2022-08-30 23:03:59 +08:00 73
Because-I-Believe-PowerShell-Commands-Are-Way-Too-Long-And-Unnecessarily-Verbose-That-I-Definitely-Hate-To-Type-Any-Of-Them-For-The-Sake-Of-My-Finger-Health-And-Keyboard-Durability
|
18
iloveayu 2022-08-30 23:06:08 +08:00
不搞 Windows 相关就远离这玩意,如果是桌面操作系统用,用户操作层面的那种用到什么查什么就完事儿。
干活儿还是 unix 那套通用性强。 |
19
lovepplforever 2022-08-30 23:18:49 +08:00 via iPhone
不好用
|
20
zhangxzh 2022-08-30 23:21:20 +08:00 via Android
命令太长不好记
|
21
makelove 2022-08-30 23:21:31 +08:00 4
powershell 这种东西一看风格就是太微软了,笨重油腻全都要的感觉。你要说比 bash 强大么是的,但命令行设计方便使用是首位,至于强大脚本功能复杂了谁还用 shell 脚本语言写
|
22
Bingchunmoli 2022-08-30 23:23:13 +08:00 via Android
很强但学习成本高
|
23
xyjincan 2022-08-30 23:36:57 +08:00 via Android
丑拒
|
24
dingwen07 2022-08-30 23:46:25 +08:00 via iPhone
作为 shell 太麻烦
scripting ?那我为什么不用 python |
25
Helsing 2022-08-30 23:54:21 +08:00 via iPhone
因为难用,会用命令行的用 bash 不香吗,干嘛要用 PowerShell ,而且它的反斜杆和 bash 是反的,看着难受,用着也难受。敲命令反斜杆老是敲错,然后看着爆错信息改,难用的一批。
|
27
cnbatch 2022-08-30 23:57:03 +08:00
小提示,在 PowerShell 7.x ,curl 和 wget 已经不再是 Invoke-WebRequest 的别名了。
|
28
ColorfulBoar 2022-08-31 00:02:12 +08:00 via iPhone 6
有人喷了 10 年命令长都不愿意花 3 秒(其中 67.8%的时间用于启动 PowerShell )输入一次 ls 试试(与此同时跟它说 git 设计得蠢就嘲笑你连 alias 都不会设置)
有人喷了 10 年 Windows 文件名不区分大小写,却坚信 PowerShell 命令是大小写敏感的 所以你觉得这玩意用的人少跟技术有 1%的关系? |
29
873792861 2022-08-31 00:07:32 +08:00
在 windows 写 powershell 脚本很多时候要引用.net 的东西才能完成功能,比如截屏,所以稍微复杂的东西还是使用 python 比较方便,毕竟有很多便利的库。
|
30
wxf666 2022-08-31 00:15:17 +08:00
@ColorfulBoar 你能给出一些交互式下,大家常用的,powershell 明显比 bash 短的例子吗?
|
31
dcsuibian 2022-08-31 00:18:46 +08:00
因为用 Linux 不得不学 shell ,而用 Win 用图形化界面直接上手
所以熟悉命令行的,熟悉的是 Linux 的 shell ,而不是 Windows 的 shell |
32
dcsuibian 2022-08-31 00:20:08 +08:00
shell 和操作系统高度绑定
在 win 下直接用 linux 的做法经常会很难受的,劝你还是老老实实学两套 |
34
ysc3839 2022-08-31 01:05:34 +08:00 via Android
我自己选择 MSYS2+zsh ,主要是不想学两套东西,以及 Unix shell 的各种命令普遍较短,好记。
|
35
statumer 2022-08-31 01:21:51 +08:00 17
@ColorfulBoar
创建个符号链接应该怎么做来着,New-Item -Type SymbolicLink -Path \a\b\c\d -Target \e\f\g\h ,在 bash 里只需要 ln -s foo bar, 怎么回事呢? 想 grep 过滤下输出该怎么做来着, | Out-String -stream | Select-String -Pattern "foo" 更别提 Windows 到现在还没有个能用的包管理器,win-get 和 apt 比起来是个残废,让社区很难贡献命令行工具所以生态极烂 有没有一种可能是 Powershell 真的很难用,而不是因为大伙都是低水平程序员迫害你的 ps 哥哥呢? |
36
PrinceofInj 2022-08-31 02:26:51 +08:00 via Android
@statumer bash 里面打的字比实际上 PS 里面打的字少不了多少。PS 按 tab 都补全了,如果在 vscode 里面用的话需要打的字更少。可能就比 bash 多四五个字母。bash 等学习成本太高,经常遇到不太熟悉的就得查一下应该怎么做。ln 是啥意思? ls 是啥意思?为啥有些系统还能打个 ll 出来? du 是啥意思?为啥 dd 又完全跟 du 不是一码事儿呢?那 df 跟他俩又有啥关系?
|
37
wxf666 2022-08-31 03:12:05 +08:00 2
@PrinceofInj 是这样吗?(我用 35 楼的试试)
1. 软链接 - `new-it<tab> -t<tab> s<tab> -t<tab> foo -p<tab> bar`(按 30 次) - `ln -s foo bar`( 13 ) 2. 过滤 - `| out-s<tab> -<tab> | sel<tab>-s<tab> -<tab> foo`( 28 ) - `| grep foo`( 10 ) |
38
geelaw 2022-08-31 03:54:53 +08:00 3
|
39
wanacry 2022-08-31 04:01:24 +08:00 via iPhone
名字很强大
|
40
wxf666 2022-08-31 04:12:24 +08:00 1
@geelaw 我不熟悉 powershell ,只是印象中命令都很长
所以直接拿 35 楼的命令,在 powershell 一点点试哪里可以 <tab> 如果都像你说的这么简短,倒真的可以试着学学 > 好的品位是不去比较这种天花乱坠的写法 我认为 交互式 shell 应该怎么简洁快速怎么来。脚本才重视可读性 > 另外 grep (可执行文件)和 ln (可执行文件)都不是 shell/bash 的一部分 这应该是 Linux 的哲学,一个 shell 就该当好用户与系统交互、胶水语言的角色,不是由它实现所有功能 |
41
hez2010 2022-08-31 07:24:37 +08:00 via Android 2
@statumer 你这举的例子跟 bash 有啥关系啊,只是在调用系统里的可执行文件而已。
Linux 上用 PowerShell 照样可以直接 ln -s foo bar 和 grep |
42
Howlaind 2022-08-31 07:30:51 +08:00 via Android 2
@873792861 为什么 PowerShell 引用 .Net 库是不方便,而 Python 引用库就是方便呢?
|
43
jedihy 2022-08-31 08:03:11 +08:00
devops 领域用的不少吧。至少我们组维护的 msquic 就在用 powershell 来跑跨平台的 CI/CD 。
|
44
zhuangzhuang1988 2022-08-31 08:11:33 +08:00 3
@Damn 就说微软自带原罪了, powershell 对我来说 最大好处不是自动补全, 不是面向对象, 而是可以单步调试, 好几次运行别人的 shell 抓瞎 要么就 echo 大法.
powershell 就直接断点调试就好了 |
45
l4ever 2022-08-31 08:24:36 +08:00
还不如砍掉学 linux 直接用 python
非要自己搞个 shell, 忒 |
46
YepTen 2022-08-31 08:30:22 +08:00
因为用不到,用到了自然就去学了。不搞 IT ,谁闲的去学 Linux 。
|
47
Cbdy 2022-08-31 08:37:14 +08:00 via Android
其实并不强大
|
48
userforg2021 2022-08-31 08:47:49 +08:00
@hez2010 虾仁猪心!虾仁猪心!
|
49
Dragonphy 2022-08-31 08:51:18 +08:00
命令太 TM 长了,谁记得住啊
|
51
zjqzxc 2022-08-31 08:58:42 +08:00
如果拿 powershell 与 python 、bash 比较的话,我个人觉得它更接近 python 而不是 bash 。但是目前的问题是,调用 dot net 组件的文档太匮乏了。前段时间拿 poweshell 调用 dot net 的组件写了个 GUI 程序,官方文档都找不到;当然也有好处,用户可以直接看到源码避免终端用户不信任二进制文件;以及可以在终端用户电脑上直接修改程序而不用安装开发环境
|
52
thetbw 2022-08-31 09:10:13 +08:00
因为我真的是只用个命令?
|
53
Narcissu5 2022-08-31 09:26:38 +08:00
@PrinceofInj 有没有想过 oh-my-zsh 有更强大的自动补完,有没有想过 ps 的脚本阅读性极差,有没有想过基于.net 的 ps 自己把路走窄了
|
54
weivi 2022-08-31 09:49:34 +08:00
割裂感
|
55
66beta 2022-08-31 09:53:37 +08:00
你说他是命令行,那我只能说难用的一比,正常人都会用 Windows Terminal+WSL
如果你说他是一套 windows 官方的工具,那么我没资格发言 |
56
dousha99 2022-08-31 09:57:17 +08:00
因为在管道中传递的是对象而不是文本流,这点就让人感觉很不安。对于熟悉旧一套命令行(无论是 cmd 也好还是 *nix 下的 shell 也好)对文本流进行操作的人而言,这反而是增加了心智负担。
毕竟 shell 的核心用途就是粘东西。如果说 *nix 下的各种 shell 是各种品牌的强力胶;那么 PowerShell 就是量子粘合机(不)。后者或许确实比点胶水来得更快更牢固,但是它也带来了更复杂的概念和操作方式。或许确实有一些需求就是需要粘合机来搞定,但大多数场景下,点一点 502 足矣。 |
57
lovedebug 2022-08-31 09:59:28 +08:00
我们做的 office365 平台上的产品,用 powershell 比较多,确实很强大
|
58
james122333 2022-08-31 10:06:42 +08:00
|
59
allgy 2022-08-31 10:09:57 +08:00
因为废话多,用来起罗嗦
|
60
fpure 2022-08-31 10:10:46 +08:00
对于 shell 来说命令太长了
|
61
salmon5 2022-08-31 10:12:35 +08:00
根本原因是价值不大,面试不面这个
|
62
libook 2022-08-31 10:24:33 +08:00
普通用户来说:
Windows 的看家本领就是可视化操作,本身已经能覆盖大多使用场景了,只有可视化满足不了的才会考虑用指令。 另外很多流行的指令工具都是面向 Linux/Unix 来开发的,虽然不少可以移植到 PowerShell 里,但可能会和主流用法有区别。 再加上 WSL 搞得挺好了,不是必须用 PowerShell 的话我一般会用 WSL 。 专业的 Windows 运维者来说: 其实已经在高效利用 PowerShell 的,只不过比较低调而已。 |
64
wenzhoou 2022-08-31 10:27:21 +08:00
shell 调试用 set -x
习惯还挺好用 |
65
codingBug 2022-08-31 10:31:50 +08:00 via Android
|
66
TcDhl 2022-08-31 10:32:39 +08:00
有一堆日常的固定命令, 日常连七八台服务器操作
用" PowerShell 这种强大的命令行工具 "怎么不上火 |
67
Torpedo 2022-08-31 10:39:50 +08:00
想起来昨天在知乎上看到的一个回答: https://www.zhihu.com/question/20619659/answer/2650127578
|
68
Curtion 2022-08-31 10:43:18 +08:00
太长了
|
69
wxf666 2022-08-31 10:44:17 +08:00
@newmlp 那我为何不直接用自带的 bash zsh ,而要去安装个 ps 再打同样的命令呢?
现在就是在问,ps 对于交互式操作,自身的什么优越性,起到了什么明显的优化作用,以至于能甩 bash zsh 几条街? |
70
bleaker 2022-08-31 10:52:58 +08:00
我写 shell 不是图它功能强,而是图它一简单方便随便造,二分部广泛兼容好。真的需要很复杂脚本的场景,Python/Ruby 乃至这几年的 Node 都是很好的选择
Powershell 两点好处都不占,就算不考虑 MS 背景,也不会火的 |
71
iSecret 2022-08-31 10:55:37 +08:00
每次是用 Power Shell 格外的出戏。
|
72
bzw875 2022-08-31 10:56:43 +08:00
我们公司内部电脑禁止了 powershell
|
73
nothingistrue 2022-08-31 10:57:43 +08:00
Powershell 跟 shell 的区别,与 Java 和 Javascript 的区别类似。一有门槛不是你想用就能用的。二真得大多数场景下没必要用。三最要命,等你达到了门槛,并且还有需要的场景的时候,Python 比 Powershell 更好用。
|
74
ZRS 2022-08-31 10:58:35 +08:00 via iPhone
丑
|
75
codingBug 2022-08-31 11:04:06 +08:00 via Android
我发现好多人对 powershell 有误解,再说一些,我本机用 powershell ohmyposh ,服务器用 zsh ohmyzsh ,目前来看,两者日常体验基本可以达到一致
https://zhuanlan.zhihu.com/p/537991323 |
76
jiejiss 2022-08-31 11:12:05 +08:00 via Android
@zhuangzhuang1988 在 VSCode 里,同样有给 bash 下断点 /单步调试的插件。
|
77
zhuangzhuang1988 2022-08-31 11:18:56 +08:00
@jiejiss 好吧知识落伍了我学习的时候没有
powershell 开始伴随着 系统发布时候就自带了 ise 可以调试 自带自动补全 |
78
brucmao 2022-08-31 11:21:47 +08:00
@codingBug ohmyposh 启动有点慢,我换 https://starship.rs/
|
79
weak 2022-08-31 11:22:19 +08:00 via iPhone
命令行太长了 记不住
|
80
Felldeadbird 2022-08-31 11:30:13 +08:00
all in win 其实 powershell 挺好用。但是在命令行便利上,没有做到 linux 和 macos 的舒服。我觉得更重要是一个操作系统带两套命令行的玩意,是不是有点不好? cmd 和 powershell 。
|
81
lxml 2022-08-31 11:38:36 +08:00
开局输给了 linux 的 bash 就是原罪,微软出品更是原罪
|
83
MonoLogueChi 2022-08-31 11:42:35 +08:00 via Android
虽然我一直在用 powershell ,但是我不推荐别人去用。先说这玩意强,确实强,必须先吹一波管线和类型,powershell 是有类型的,而不是像其他 shell 一样,只是字符串,这个东西用过才能理解。
再说为啥不推荐别人用,先说从 powershell 本身来说,Windows ,混乱,先有 cmd ,再有 windows powershell(5),还有 powershell core(6 7),而且这 3 个东西还必须共存,有些东西不通用,没有相关经验的话,根本搞不清什么时候该用哪个。linux ,需要额外安装 powershell 。再来说 powershell 语法,前面也说了这玩意强,但是强是有代价的,命令多,语法复杂,而且是有类型的,这样就造成了一个问题,简单命令也会特别长,特别啰嗦,如果不能理解 powershell 的设计理念,入门就会非常难 |
84
AoEiuV020CN 2022-08-31 11:57:18 +08:00
总是给我“不好用”的感觉,
cmd 能解决的还是优先 cmd , |
85
datou 2022-08-31 12:07:24 +08:00
powershell 最扯淡的是很多大驼峰命令
|
86
lolizeppelin 2022-08-31 12:43:14 +08:00
@MonoLogueChi
shell 搞那么复杂还不如用正儿八经的编程语言......powershell 这种不上不下的非常尴尬 除非要用什么 windows 相关接口 python 写起来太麻烦..否则不如写 python. |
87
tankren 2022-08-31 12:51:25 +08:00
要么 bat 要么 python 吧
|
88
nicevar 2022-08-31 14:01:28 +08:00
主要是 psh 没有太好的被迫学习环境,不像 bash ,熟悉 linux 必须得学,用 MacOS 装逼也得学,但是用 Windows 大多情况用 bat 就行了,psh 就没什么太大必要。
|
89
laqow 2022-08-31 14:01:40 +08:00
设计个语言完全不考虑打字方不方便,大部分右键需要解决的问题 cmd 就能解决的,系统很霸道地把 shift 右键的 cmd 换成 powershell
|
90
cosette 2022-08-31 14:29:50 +08:00
出现的晚了,“命令行”跟*nix 就和“图形界面”跟 windows 一样,硬要说 win 上的命令行,普及度更广的应该是批处理,也是靠各种脚本流行的。
因此即便在 linux 上用命令行完成某些事情要一长串让人眩晕的管道命令,但大家已经学会了忍受,因为你用不好是你学艺不精。举例来说,在 linux 上的各种命令里使用 正则表达式 就让人头疼甚至心生恐惧,书写风格都不是统一的,捕获分组到底是 `()` 还是 `\(\)` ,哪些情况下要转义,让人迷惑。但你不能抱怨这些,因为从历史考察某些命令工具可能比很多人出生的要早,已经有极多的用户,从另一个层面来讲,*nix 有极浓的 geek (工程师)文化,“你要是觉得不好用,你自己去写一个工具”,这源自于*nix 社区在极早期发展的时候的文化,所以大家热衷于写各种脚本,造各种轮子,一方面锻炼自己的能力融入这个“geek”文化圈子,另一方面也是在方便自己。 说回 powershell ,完成某些任务确实很方便,而且命令、参数的语义性很强(看起来很长),但网上没那么多的轮子,如果某项工作有其他熟悉的替代方案,那懒得去学。 |
91
mijazz 2022-08-31 14:32:55 +08:00
拖 OP 的福, 我今天安装了个 powershell 7
像#30 - #41 左右讨论的一样, powershell 自己的 cmdlet 不可以说设计得不好, 是我的思维已经被 `bash` 或者 `zsh` 这些同类固化了. 我不会想着进目录就 Get-Children, 虽然他也有`ls`的 alias, 但是写 Script 还是得用全称. 我感觉下来没什么可以吐槽的点, 毕竟也是个啥都能干的 shell, 但是它自带的 alias 也太奇怪了, Get-Children -> `dir`, `ls`我都能理解, 两个兼容性的字段, 但是`gci`是什么操作...不应该是`gcd`才顺口嘛... [cmdlet alias 对照]( https://www.pdq.com/powershell/) |
92
stoluoyu 2022-08-31 14:33:53 +08:00
大部分用命令行的人肯定要会用 linux ,没动力再学一套语法了,我也就用到的时候偶尔现查一下。
|
93
Slurp 2022-08-31 15:16:34 +08:00
作为一个日常使用的 Shell ,先把启动速度弄好再说吧。
我 Zsh 装一堆插件照样可以 0.09 秒启动。PowerShell 上来就 2 秒。 |
94
rrZ2C 2022-08-31 16:08:06 +08:00
我是因为以前工作环境已 Linux 为主, 习惯了
我看其他同事也更是无所谓 cmd 还是 window terminal |
95
11232as 2022-08-31 16:10:39 +08:00
习惯了 UNIX 那套思想后用不习惯 powershell
|
96
rming 2022-08-31 16:11:05 +08:00
|
98
yanue 2022-08-31 16:25:41 +08:00
跟 linux shell 不是一个级别的
|
99
WOLFRAZOR 2022-08-31 18:21:53 +08:00
没力气再学多一套了(用到再现查指南),习惯了 UNIX 的 terminal 之后用这个很不习惯
|
100
tanek 2022-08-31 18:32:29 +08:00
@ColorfulBoar 可能是还在找上一次打开窗口的 history 呢。
|