1
uyhyygyug1234 2019-06-02 15:20:35 +08:00
这感觉是癌症西医不行了,中医死马当活马医啊。。。
|
2
qinghon 2019-06-02 15:58:14 +08:00 via Android
那么怎么解决在一个刚装什么都没有的系统里不装其他依赖的情况下运行 ps1 脚本?
再附一个问题,对有的脚本自动不能识别需要自己手动修改脚本内容的地方如何解决? |
3
goreliu 2019-06-02 16:03:57 +08:00 via Android 1
在 Linux 下,powershell 取代 bash 基本是不可能的了,这不是时间长短的问题。不过自己感兴趣的话用用倒也可以。
|
4
yuuko 2019-06-02 16:09:05 +08:00 via Android 1
linux 默认支持 powershell 么?不支持的话我为什么要用,还不如装个 nodejs
|
5
tinytangent 2019-06-02 16:40:11 +08:00 via Android 2
个人我觉得 PowerShell 连 cmd 都没完全取代,还取代 bash ……这东西不是说设计理念先进就解决一切问题的。bash 已经是事实标准一样的存在了,就算它再丑也得接着用。
要真说取代 bash,还不如指望 Python 之类的脚本语言呢。搬出 PowerShell 未免…… |
7
secondwtq 2019-06-02 17:03:01 +08:00 2
十分建议感兴趣的同学通读楼主发言记录,充分学习楼主的 Linux 新时期 PowerShell 中心思想
|
8
ysc3839 2019-06-02 17:08:19 +08:00 via Android
@tinytangent PowerShell 在 Windows 上无法取代 cmd 的一个可能原因是不能直接执行脚本,好像需要改什么设置才能执行。
|
9
skinny 2019-06-02 17:51:38 +08:00 2
PowerShell 说真的并没有那么好用,就我在 Windows 上的体验来说是这样:
1. 部署新版本非常麻烦,而旧版本又有各种问题 2. 有的 Cmdlet 有 Bug (比如 Remove-Item 递归删除特定通配符名字时有问题,好像是所有版本都有这个问题,虽然可以通过组合 Get-ChildItem 解决)。 3. 不同版本的一些行为有很大差异,但是如果你试图在高版本下用-Version 参数来测试脚本在特定版本下的运行结果,是没办法发现问题的。比如一个参数有多个 ParameterSetName 时,且有复杂的组合时,在真的 PowerShell 2.0 下不能运行,但是高版本下使用-Version 参数运行又完全正常。 不过在 Windows 平台的一些特定场合,如果下面几点同时满足,我会选择 PowerShell: 1. 在 Windows 7 及以上系统运行 2. 不能或不方便下载安装额外的软件包、工具 3. 需要一点简单的 GUI ( PowerShell 加 WPF,写简单的 Windows GUI 好用) 至于在 Linux 下……拜托,我还不如用系统预装好的 Python ……有那功夫安装 PowerShell,还不如把时间用在安装几个 Python 包。 |
11
wwqgtxx 2019-06-02 18:05:05 +08:00 2
在 linux 上用 ps,那干嘛不用 Python 写,功能强大得多,大部分系统还预装
|
12
Dk2014 2019-06-02 18:11:46 +08:00 via Android 1
看了下楼主回帖记录,民科程序员?
|
13
Foxkeh 2019-06-02 18:14:44 +08:00 via iPhone
python+1 代码容易维护
|
14
SuperMild 2019-06-02 18:17:43 +08:00 via iPhone
既生瑜何生亮,可惜这家医院已经有一个 派大夫。
|
15
Jirajine 2019-06-02 18:30:58 +08:00 via Android 3
楼主你是 PowerShell 开发组的吗?这传销般的推广力度。。
|
16
love 2019-06-02 18:47:11 +08:00 via Android
竟然还有人粉 ps 的, 估计是 windows 爱好者爱屋及乌了
|
17
hanxiV2EX 2019-06-02 19:18:04 +08:00
这...Windows 程序员也没几个会写 bat 吧...
|
18
labnotok 2019-06-02 19:20:55 +08:00 via Android
先了解 bash/zsh/fish 的人,会有心情去用 PS ?
|
19
diggerdu 2019-06-02 20:05:33 +08:00 via iPhone
为啥不用 python 呢
|
20
swsh007 2019-06-02 20:28:12 +08:00 via Android
还得 bash 好了
ms 这个半吊子的东西还不如 cygwin |
21
junkun 2019-06-02 20:32:54 +08:00 1
看到 powershell,我就想起了 plan 9。楼主提到的很多问题貌似并没人抱怨吧。
|
22
edk24 2019-06-02 20:58:42 +08:00
几乎都预装 python.... 用起来也很快捷轻松... 功能也丰富...
|
23
geekc3t 2019-06-02 21:21:36 +08:00
http://batsh.org 你需要这个
|
24
churchmice 2019-06-02 23:43:21 +08:00 1
楼主的对比很有意思,用 cygwin 的环境能一样吗?
直接两台机器一台 linux 用 bash,一台 windows 用 ps,看看哪个速度快 |
26
yanqiyu 2019-06-02 23:58:19 +08:00
我这儿 pwsh 用 Get-ChildItem 就能正确显示汉字但是用 ls 就是\350\262 这种格式
|
27
zhuangzhuang1988 2019-06-03 00:02:09 +08:00
ps 挺好的
bash 编码都搞不定。 |
28
cstj0505 2019-06-03 09:48:25 +08:00
这是自问自答吗?
为什么我要在 linux 下用 power shell |
29
snip 2019-06-03 10:52:16 +08:00
[root@localhost 1]# time touch test-{1..10000}.txt
real 0m0.449s user 0m0.130s sys 0m0.318s 有什么意义吗? |
30
pmispig 2019-06-03 10:58:32 +08:00 1
谈 shell 居然还说性能,你知道 shell 是做什么的吗
|
31
appmanagecluster 2019-06-03 11:12:37 +08:00
哈哈哈,you are a joke
|
32
ps1aniuge OP @churchmice
说的就是 linux 这是一个真实的事情,挺多年了。是以前我在 win 中,用 gnuwin32 的时候遇到的。 前两天,又遇到建立文件的事了。我就又用 centos7。3 + powershell beta 4 和 touch 对比了一下。 性能大概 9----10 倍。 @snip 你这个是不慢的,不过我感觉这是晦涩的奇技淫巧。 test-{1..10000}.txt 这句话凭啥就能行呢? bash 中: 1..10000 不行。 {1..10000}不行。 {1..10000}.txt 不行。 test-{1..10000}.txt 不行。 不知道为啥遇到 touch 就展开成数组了。 语法,展开,竟然不是由 shell 引擎实现,而是由命令实现,这很淫巧,不是吗? 而不用 touch 展开,就像我例子中那样展开,很显然是慢的。 |
33
james122333 2019-06-03 22:50:44 +08:00
umask 077
num=0 time while ((++num < 10001)) do : > test-$num.txt done ============================================ readonly false=0 readonly true=1 abc=false if $abc && [[ -f test ]] ; then echo 1 fi if [ $abc == false -a 2 -gt 0 ] ; then echo 2 fi if ((abc && 2 > 0)) ; then echo 3 fi $abc && echo ok || echo fail ============================================ 人有偏见 说什么都无用 本来不想理你 |
34
james122333 2019-06-03 22:54:11 +08:00
最后其他问题我就不废话了 愿意去了解的人就愿意
|
35
tomychen 2019-06-12 13:43:21 +08:00
PowerShell?
bash tsh zsh fish...xxsh 到 awk sed 有 powershell 什么事了?就算这些再不行还有几乎所有发行版 Builtin 的 perl,追到 2.4.x 也就是 redhat 6.x 的年代他还是有 perl 的,回到 Unix 里 FreeBSD 从经典到 10+(x)同样都是 Builtin perl。PS 是什么?好好,你 PS 厉害,新系统全系 Builtin Python 激进的系统都已经 Builtin py3 了. 好,就算你 PS 威武霸气帅,我一个线上系统,是不是要跟安全组的人说,麻烦您把 FW 规则给关一下,我装个 PS,不然这系统我没法搞了... 我码到这,把我自己都逗笑了... |
36
ps1aniuge OP @tomychen 他人笑我太疯癫,我笑他人不懂 shell,不是说任何人都能喷的。
那些喷子不懂 shell,所以只会说观点(论点),说不出道理(论据)。 你根本不懂 perl。perl 处理中文还不如 shell 呢。再说 perl,python 中有管道么?管道支持对象么? 生产级的系统,不能联网,这种情况有,但是都可有做本地 repo,或者包呀。 生产级的系统,不能联网,装 ps,也不能装 nginx,mysql,mogodb,etcd 等。 多拿证据,少狂妄无知吧。 ====================== 总有最后一公里问题。解决这个问题,唯有自行车,很灵活。 就好像自行车那样,linux 版 powershell 几乎是你解决问题的唯一。是凤凰,飞鸽。 那么 shell 呢? 答: n 年前 shell 如 cygwin,是 win 的唯一。 但现在 powershell 是 linux 的唯一。 用现在的眼睛看 shell, 你将看到一辆实心轱辘自行车,颠屁股,颠 jj。脚蹬子掉了,只是一个棍。 这个车在以前,凤凰,飞鸽没出时,是极好的。那时 win 中只有木轮手推车。 |
38
ps1aniuge OP @tomychen 你还有潜力,用 2 个月 linux 版 powershell,找出缺点,系统思考后,再来喷。
|
39
ungrown 2019-09-12 15:37:13 +08:00
@hanxiV2EX 还是会写的,用来干简单的活,挺方便,而且没有额外依赖。
反正我主要用的还是 win 系统,win 下能用 bat 干的活我坚决不动鼠标,所以大多数自用脚本还是 bat,外加少量 py。 |
40
ungrown 2019-09-12 15:44:22 +08:00
@ps1aniuge 管道中传对象是伪需求,对象管道不就是结构化的字节流管道吗?
你把管道中的内容对象化,你就得从系统层面设计一整套数据结构规约,让系统中的所有程序都遵循这个规约,然后你才能够开开心心地在管道里传对象。 然而问题是,这世上有可能存在一个万金油规约,适合所有程序间通讯时可能存在到对象类型,并足够好地解决各种性能、兼容性问题吗? 做梦! linux 的设计理念是什么?每个组件把一件简单的事情做好,然后用数据流(管道)把大家串起来。管道里就应该跑字节流,至于这个字节流里面是何种数据结构这是各个程序自己的事情,这才是永不过时的设计思想。 对象管道纯粹就是在扁平化民主团体内抢当话事人,省省吧。 |
41
hanxiV2EX 2019-09-12 18:55:36 +08:00 via Android
@ungrown 我是说我见过的的 windows 程序员大多都只会用点鼠标,没见过几个会写 bat 的。不是说会不会去写,我也经常会在 windows 下去写 bat 或者 vbs 来自动做某些事情。
|
42
ps1aniuge OP @ungrown 朽木。期待你有一天开窍,说“管道加对象真香”。
dir | foreach-object { if ($_.length -gt 1mb ) { $_.Extension } } 文件大小大于 1mb,则输出文件扩展名。 或输出,文件修改时间,等其他也行。 |
43
autogen 2020-03-22 15:27:52 +08:00
$ck = [System.Diagnostics.Stopwatch]::StartNew()
$pf = [System.IO.File]::CreateText($p_file) $ps = [System.IO.File]::CreateText($p_sql) $fh = [System.IO.File]::OpenText($file) try { for (;;) { $line = $fh.ReadLine() if ($line -eq $null) { break; } if ($line -like '*_02_*') { } } }finally { $fh.Close() } $pf.Close() $ps.Close() $ck.Stop() $ck.Elapsed` ------------------------------------------------------------------------- 这感觉像拿个 java/c++/vb 来和 shell 比。。。shell 直接投降吧,但是 python 可以一战 |