Windows PowerShell vs UNIX Shell

不同视角、不同观点、深度探讨,禁止人品和道德攻击
JiangHui
论坛版主
帖子: 21308
注册时间: 2007-08-02 20:29
系统: 窓辺とうこ

Re: Windows PowerShell vs UNIX Shell

#16

帖子 JiangHui »

翻页
头像
qiang_liu8183
论坛版主
帖子: 10701
注册时间: 2006-09-10 22:36
系统: Arch Debian
来自: 北京

Re: Windows PowerShell vs UNIX Shell

#17

帖子 qiang_liu8183 »

这玩意儿也配叫shell?!
干不了大事就把小事干的大气点
JiangHui
论坛版主
帖子: 21308
注册时间: 2007-08-02 20:29
系统: 窓辺とうこ

Re: Windows PowerShell vs UNIX Shell

#18

帖子 JiangHui »

不止叫了,还是Power
陽光院景仁
帖子: 1513
注册时间: 2009-09-25 20:19

Re: Windows PowerShell vs UNIX Shell

#19

帖子 陽光院景仁 »

qiang_liu8183 写了:这玩意儿也配叫shell?!
從Shell的字面意思來說,確實是shell :em04
陽光院景仁
帖子: 1513
注册时间: 2009-09-25 20:19

Re: Windows PowerShell vs UNIX Shell

#20

帖子 陽光院景仁 »

JiangHui 写了:不止叫了,还是Power
這個Power是相對於原來的Windows Command Shell(也就是cmd.exe)而言的,Windows Command Shell也是源於DOS Command Shell,同門兄弟還有OS/2 Command Shell。
头像
xiooli
帖子: 6956
注册时间: 2007-11-19 21:51
来自: 成都
联系:

Re: Windows PowerShell vs UNIX Shell

#21

帖子 xiooli »

不如把 python 上面加点 m$ 自己的东西。

ps:纯文本 + 管道 + 正则 是王道。
头像
raine
帖子: 22
注册时间: 2009-11-05 21:11

Re: Windows PowerShell vs UNIX Shell

#22

帖子 raine »

Unix的shell是完全的命令解释–文本处理这种流程来走的,将命令的输出文本进行有机加工,抽取有用的信息,再反馈到更多的命令使用中去,最后达到几乎是所有能想到的目的, 但是文本字符串也是你唯一能够操作的对象。

而PowerShell将命令的返回对象化了,也就是把命令返回的结果当作对象,进而调用或输出对象另外的方法或属性。Shell也能OO起来!好处是可以得到最精确最严谨的结果,而不会因为文本块的切割联合等问题费脑筋,也不会因为漏算某些情景导致奇怪操作结果。而坏处则是把用户的问题转给了cmdlet的开发商,一个适用性强的cmdlet是要设计者付出很大的心思才能做好的。




欢迎排砖, 对比两种shell的优缺点。。。
头像
raine
帖子: 22
注册时间: 2009-11-05 21:11

Re: Windows PowerShell vs UNIX Shell

#23

帖子 raine »

JiangHui 写了:不止叫了,还是Power

纠结于名称无意义。
头像
raine
帖子: 22
注册时间: 2009-11-05 21:11

Re: Windows PowerShell vs UNIX Shell

#24

帖子 raine »

在PowerShell 中工作时,所使用的是 .NET 对象。但是随着经验的增加,您会发现自己使用的是对象,甚至用对象进行思考。 从技术上讲,.NET 对象是 .NET 类的实例,包含数据以及与该数据关联的操作,可以将对象视为具有属性和方法的数据实体。 例如,在PowerShell 中获取服务时,实际上是获取表示该服务的对象。查看有关服务的信息时,所查看的是其服务对象的属性,启动服务时,所使用的是服务对象的方法。类型相同的所有对象都具有相同的属性和方法,但是对象的每个实例可能具有不同的属性值。例如,每个服务对象都具有 Name 和 Status 属性。但是,每个服务都可以具有不同的名称和不同的状态。

  使用对象的一个主要优点是,它使得用管道传输命令(即,将一个命令的输出作为输入传递到另一命令)容易得多。通信通常需要字符串操作,以便将输出从一种格式转换为另一种格式,并删除标题和列标题。

  PowerShell提供了一个基于对象而不是基于文本的新交互模型。接收对象的 cmdlet 可以直接作用于其属性和方法,而无需进行转换或操作。用户可以通过名称引用对象的属性和方法,而不是计算数据在输出中的位置。

  在以下示例中,将 IpConfig 命令的结果传递到 Findstr 命令。管道运算符 (|) 将其左侧命令的结果发送到其右侧的命令。在PowerShell 中,无需操作字符串或计算数据偏移量。

  PS> ipconfig | findstr "Address"

  IP Address. . . . . . . . . . . . : 172.28.21.5

  IP Address. . . . . . . . . . . . : 172.30.160.225



  由于脚本可以用于传播恶意代码。因此PowerShell 中的安全策略允许您确定脚本是否可以运行,以及它们是否必须包括数字签名。PowerShell 中的执行策略都不允许通过双击脚本的图标来运行它。PowerShell包括一种非常丰富的脚本语言,使用该语言可以创建从最简单到非常复杂的脚本。它支持用于循环、条件、流控制和变量赋值的语言结构。
dshbusiness
帖子: 1831
注册时间: 2009-04-03 15:10

Re: Windows PowerShell vs UNIX Shell

#25

帖子 dshbusiness »

由着他折腾去吧……还“向服务器领域迈出一大步”……一个运行于服务器的系统最重要的是核心的强大……而不是shell有多么power……
dshbusiness
帖子: 1831
注册时间: 2009-04-03 15:10

Re: Windows PowerShell vs UNIX Shell

#26

帖子 dshbusiness »

不过话又说回来,他这么做可能会使服务器管理的门槛降低许多,估计目标在于抢占低端服务器市场,也许过几年一个8、9岁的小屁孩学了两三天的就可以在网上开个服务器叫嚣了…… :em04
头像
raine
帖子: 22
注册时间: 2009-11-05 21:11

Re: Windows PowerShell vs UNIX Shell

#27

帖子 raine »

dshbusiness 写了:由着他折腾去吧……还“向服务器领域迈出一大步”……一个运行于服务器的系统最重要的是核心的强大……而不是shell有多么power……

要pk 两种系统的内核可再开一贴, :em02
dshbusiness
帖子: 1831
注册时间: 2009-04-03 15:10

Re: Windows PowerShell vs UNIX Shell

#28

帖子 dshbusiness »

回楼上,linux的内核和unix的内核有多么强大我有幸见识过一点点,至于win的……我还没有幸见到……(我指的是源码级别的分析)所以pk两种系统内核的帖子不开也罢…… :em06
头像
untitled
帖子: 611
注册时间: 2008-12-18 11:47

Re: Windows PowerShell vs UNIX Shell

#29

帖子 untitled »

raine 写了:PowerShell是微软公司于2006年第四季度正式发布的. 它的出现标志着, 微软公司向服务器领域迈出了重要的一步, 拉近了与Unix, Linux等操作系统的距离. PowerShell的前身命名为Monad, 在2006年4月25日正式发布beta版时更名为PowerShell.


大多数 shell(包括 Cmd.exe 以及 SH、KSH、CSH 和 BASH UNIX shell)的运行方式是在新进程中执行命令或实用工具,然后将结果以文本形式显示给用户。经过数年的发展,许多文本处理实用工具(如 sed、AWK 和 PERL)现已发展为支持此交互。这些 shell 还具有内置到 shell 中并在 shell 进程中运行的命令.

Windows PowerShell 有很大不同。
Windows PowerShell 不处理文本。相反,它处理基于 .NET Framework 平台的对象。
Windows PowerShell 附带了具有一致界面的大量内置命令。
所有的 shell 命令都使用同一命令分析程序,而不是每个工具使用不同的分析程序。
那些软粉不是鼓吹GUI万能么,微软真他妈不给面子,扒粉丝遮羞布啊。
面对CUI,微软还是从了啊~
远程桌面太蛋疼了。
头像
ChloeRei
帖子: 1021
注册时间: 2007-11-23 9:49

Re: Windows PowerShell vs UNIX Shell

#30

帖子 ChloeRei »

raine 写了:
  PowerShell提供了一个基于对象而不是基于文本的新交互模型。接收对象的 cmdlet 可以直接作用于其属性和方法,而无需进行转换或操作。用户可以通过名称引用对象的属性和方法,而不是计算数据在输出中的位置。

  在以下示例中,将 IpConfig 命令的结果传递到 Findstr 命令。管道运算符 (|) 将其左侧命令的结果发送到其右侧的命令。在PowerShell 中,无需操作字符串或计算数据偏移量。

  PS> ipconfig | findstr "Address"

  IP Address. . . . . . . . . . . . : 172.28.21.5

  IP Address. . . . . . . . . . . . : 172.30.160.225
这个看不出来有多对象阿

ifconfig | grep 'addr'
差不多?

ruby的irb还更对象一点 :em04
(`ifconfig`).each_line{|line| puts line if line.include?("addr")}
回复