无意中学了点 powershell ,惊了, 这东西是不是低估了

2023-08-27 14:48:57 +08:00
 iorilu

以前以为 shell 都是 bash 之类那种

来来回回就是调点命令,用管道串联几个命令

来来回回都是处理文本, 别提多麻烦, 还有一些诡异语法之类的 awk

大家都默认这样就不错

最近因为一些用途, 了解了点 powershell

立马惊了,powershell 命令输出的都是真正的对象, 直接 相当于管道处理对象, 不需要折腾命令数着几列到几列处理文本, 既然是对象, 直接拿属性, 调用方法都行, 方便太多

而且 powershell 现在跨平台, 开源了, 感觉微软一出手, 开源真没人玩的过啊

我打算以后 mac , 或 linux 上也用 powershell 了

有兴趣的可以了解下

19810 次点击
所在节点    程序员
135 条回复
cat9life
2023-08-28 09:31:57 +08:00
感觉微软并不够重视 Powershell ,看一下这里 https://segmentfault.com/a/1190000042048851
Narcissu5
2023-08-28 09:35:21 +08:00
ps 基于.net 既是它强大的地方,也是它局限的地方,毕竟不是每个人都会写/喜欢写 C#,非.net 语言扩展起来反而更麻烦。
bash 强大虽然简陋但是扩展方便,处理标准输入输出是个语言都支持,难道你还指望 bash 里面写复杂逻辑?
jrqlxue
2023-08-28 09:40:16 +08:00
个人未找到 powershell 简单实现`cut -f 3-5 file.txt`的方法

更不确定常用文本处理: `zgrep |cut|sort|uniq -c|sort -nr|head ` 是否有简单 powershell 的实现了
kawaiidora
2023-08-28 09:49:58 +08:00
@iorilu 命令长其实也不是什么问题,shell 补全都有。

未能普及的原因和 dotnet 一样,等到全平台发力的时候已经错过占领市场的时间点了,没办法和根深蒂固的 macos+linux 的 shell 抗衡
XIVN1987
2023-08-28 09:51:51 +08:00
面对科学计算,有些人喜欢用 C++ + Python ,底层用 C++ 提高性能,上层用 Python 提高易用性;有些人喜欢一把梭,全都用 Julia 写。。

面对系统管理,有些人喜欢用 Bash + Python ,简单的需求用 Bash ,,复杂的需求用 Python ;有些人喜欢一把梭,全都用 PowerShell 写。。
snylonue
2023-08-28 10:07:43 +08:00
一直没懂 powershell 的自动补全怎么用
lovedebug
2023-08-28 10:12:47 +08:00
powershell 真的挺强大的
dw2693734d
2023-08-28 10:17:38 +08:00
fishshell 才是王道
Masoud2023
2023-08-28 10:22:11 +08:00
linux 也可以直接#!/bin/python ,根本没有必要 pwsh
techstay
2023-08-28 10:27:58 +08:00
有时候第一感觉是对的,shell 本来就是几个命令串个管道的事情。powershell 最重要的问题就是生态不行,没有 ohmyzsh 这样的好东西,而且速度也不行。遇到复杂的需求,不如直接用 python 脚本写。
jaggerjiang
2023-08-28 10:29:10 +08:00
@kawaiidora #52 因为 2015 年前,微软是真的不 open 的,大家当然不喜欢
Songxwn
2023-08-28 10:47:07 +08:00
太复杂了,高不成低不就。用于运维太负责,开发有其他语言
hotdogwc
2023-08-28 11:22:10 +08:00
普及不了是有原因的,深度使用的话,折腾的东西远远多于所谓的“强大”带来的便利,我反正是做梦都想用回 bash ( M$ 员工的痛苦
LitterGopher
2023-08-28 11:25:15 +08:00
我现在是 Linux 主力机( bash ) + mac 备用( zsh ),也不太会考虑使用 Powershell 。

第一,我对原生多多少少是有一点点但不多的追求。Powershell 在 Linux 上的适配度怎么可能与 bash/fish/zsh 相比(虽然 sh 才是标准解释器,但使用的人应该反而不多吧🙄?————————也许)

第二,我不知道 Powershell 在 Linux 或 macOS 适配性如何,但使用 Windows 的时候里面各种驼峰命名的命令令我实在大为不解,以及不少命令长度都两个单词起步。这可是命令行ㄟ,这可是要追求效率的地方ㄟ?这种时候就应该是去 TM 的用户体验,效率第一。所以抱歉,那些有长又不好输入还不好记的命令显然不符合我的追求。举个简单的例子,这是微软官方提供的命令别名示例:New-Alias -Name gh -Value Get-Help ,如果在 linux 上呢 alias gh=Get-Help 。

第三,我在 Windows 上对 Powershell 的体验就不是很好,更遑论在其他平台体验这玩艺儿了(如果我在中国都没能学好汉语,是不会期待去日本学能学好的)。

第四,bash/zsh/fish 本身啥也不是,一点都不厉害,真正厉害的是 /usr/bin 下面那些可执行文件,bash 只是提供了一个前端而已。就像上面你说的 awk ,awk 确实可以在 bash 中使用,但并不是 bash 提供了 awk 。再换句话说就是就算使用 Powershell 我依旧是使用 awk ,grep ,sed ,powershell 带给我的改变只是 .sh 脚本变成了 .ps 脚本。而 Powershell 脚本的语法让我多少有点笑而不语的。

第五,bash/fish/zsh 真的就那么好么?到也不见得,至少 Windows 上的 bash ( git bash )难用得一批。

第六,我喜欢 do one thing, and do it will 。而不是 all in one 。
luzemin
2023-08-28 11:25:53 +08:00
之前的一个项目是国外某公司使用 Windows server 自建私有云,自动化升级产品,选择的是 PowerShell DSC
PowerShell 可以理解就是.NET Framework 的 UI ,所以,在 Windows 下绝对是王者
stcQ2G13k9yxep40
2023-08-28 11:35:12 +08:00
powershell 的确很强大,三年前在 IDC 机房做运维的时候,用 powershell 写过很多运维脚本,包括 winform 都可以写,还可以调用.net 框架,异常强大。windows 平台下写脚本,首选 powershell 。
stcQ2G13k9yxep40
2023-08-28 11:41:55 +08:00
@mooyo 至少在 windows 平台下,比 bash ,python 高效的多。比如一个特定需求:获取一个路径下创建日期在三天前,文件名包含 test ,后缀为.doc 的文件。Get-ChildItem -Path "C:\your\target\path" -Filter "*test*.doc" | Where-Object { $_.CreationTime -lt (Get-Date).AddDays(-3) },一条命令搞定。
flynaj
2023-08-28 11:44:56 +08:00
@iorilu #5 目前跨平台有实用价值最方便的还是 golang 。
sky96111
2023-08-28 11:47:01 +08:00
我觉得 PS 最大的问题是交互性不佳。
PS 函数能补全参数,用点操作符访问属性,管道传递对象。而外部程序只能补全路径,不能访问属性,管道传递文本。导致 PS 用起来有一种很强的割裂感。而 shell 中使用的大部分工具都是外部程序,不是 PS 函数,导致 pwsh 用起来的体验完全没有 bash 、fish 、zsh 这样顺手
Unix 就很统一,大家都是文本可以通用一套工具处理、可以直接为外部程序添加补全规则而不是包装成 shell 函数…
madao1993
2023-08-28 11:49:16 +08:00
想要分离单个功能的时候会用用,比如用 powershell 监控剪切板,传递给其它程序,再处理得到的字符串。也就十几行代码。

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

https://www.v2ex.com/t/968637

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

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

© 2021 V2EX