{eval=Array;=+count(Array);}

问答专栏Q & A COLUMN

Linux的shell和Windows的命令行有什么区别?

FrozenMapFrozenMap 回答3 收藏1
问题描述:如题
收藏问题

3条回答

haitiancoder

haitiancoder

回答于2022-06-22 19:48

Linux和Windows的命令行,都是为了方便操作和维护系统的产物,但两者的地位和功能上有很大的区别。此处拿shell、cmd和powershell来说明。



先说说两者的领域和地位。

Linux的shell,说白点就是它的命。所以Linux发展至今,依旧没有其他交互式程序或者命令行工具等能替代它,包括当前牛逼轰轰的python,也只能依赖于其上使用,而不能完全取而代之。没有了shell的Linux,就等于没有了手脚了,基本就废了,哪怕是其图形界面,本质上也是依赖于后台的shell交互。当前的Linux是没办法脱离shell使用的,这就是shell的地位,哪怕shell的功能相对于其他脚本语言或者其他系统的shell辣鸡很多,它也是不可动摇的。而且,Linux系统,除非经过特殊封装有特定的图形操作界面的商业产品(例如很多路由器、数字电视机顶盒等其实都是linux内核的),基本都存在于企业服务器上了,有几个普通用户会用上它去体验命令行呢。

而Windows,企业和家用都有普及。对于Windows 2008(对应桌面版Vista)之前的操作系统,其原生的命令行工具主要就是cmd了;对于Windows 20008R2(对应桌面版win7)及之后的操作系统,其原生的命令行工具主要就变成了powershell了。Windows强大之处在于其桌面,而非其命令行。很多电脑小白甚至是入门运维人员来说,命令都不会敲的,一样能通过鼠标点点点,然后流畅使用自家的windows系统。windows的命令行,说白点,对普通用户来说可有可无,即便把windows的cmd和powershell移除,一样可以好好的使用。但对于有追求的运维的人来说,这就是得力助手了。

由此可见,shell的地位之于Linux当前不可撼动,而cmd和powershell之于windows仅仅是附加产物。




再说一下功能。

shell虽然是Linux系统必不可少的,但并不能说明它的功能很强大。如果放在20年前,我说他不强大,肯定被人打死。放在现在,我相信除了死忠粉或者故步自封、不愿接受新鲜事物的人才会一如既往的认为它的功能很强大。shell说白点是真的老了,如果不是Linux原生,早就被埋汰了(如果没有windows,dos不死,cmd也会活得滋润)。至今shell仍然是面向字符的命令行工具,并没有因为时代而进化。shell“绑架”了Linux从而成为其手脚,不然redhat等Linux大厂也不会在后续发布的版本中支持添加Python、Powershell等其他面向对象的命令行和脚本工具了,毕竟redhat和微软可是竞争关系的啊,如果shell功能强大powershell弱,那redhat放敌人的武器进来干嘛呢。

而Windows,自从有了基于dotnet的powershell后,其命令行直接从之前的面向字符升级到面向对象了,拿powershell来编程开发软件等也不是问题,简直就成了C#的小弟了,其强大之处不言而喻。自windows2012后,微软开始向Linux学习,搞出core版的系统,虽然初期质量不敢恭维,但既然敢这么迈进,就说明其对powershell有一定的信心的,不然拿什么跟Linux杠呢,总不能是cmd嘛。

由此可见,shell功能机制老旧,很容易会沦为其他脚本工具的跳转窗口;cmd只能等着闭眼;而powershell朝气蓬勃,未来大有可为。


说白点,把Linux和Windows当成人来看,shell相当于Linux的手脚,图形界面也相当于windows的手脚,cmd可能最多算个快生锈废弃的子弹吧(可能都算不上),那么拿着武器(Python,Powershell等命令行shell)总比赤手空拳强大吧。

评论0 赞同0
  •  加载中...
szysky

szysky

回答于2022-06-22 19:48

主要用途不同

PowerShell 是偏向脚本用途的,因为 Windows 下就它一个能打的——cmd 太弱,VBScript/JScript 本质不是干这个的写起来太麻烦,而且一万年不更新随便写个什么东西还会被杀软当成病毒。

而 Linux 下的一通 shell 都是偏向交互式用途的,毕竟要写正经脚本的话有 Python、Perl、Ruby 等等,轮不到你一个 shell。甚至用 shell 写脚本咱都是用“糊”这个词的——因为基本上都是随便写写,不会想着怎么写日后方便维护之类的。

用户体验不同

PowerShell 要照顾脚本体验,那肯定可读性可维护性什么的都得上去吧?那命令肯定不能就只有两个字母,参数也不能是 abcdefg、管道最好传递对象,不然 cut -f2 这种代码过个十天半个月谁还知道第二列到底是啥、传参也不能是 123456、最好还有类型,于是大家搓着搓着就搓成这个样子了——脚本体验倍儿棒,然而交互式体验就勉勉强强了。

首先,启动速度慢,这个是作为交互式 shell 我最不能容忍的。无配置启动时间 0.3 s,如果用上了重量级配置这个数字甚至会达到 1~2 秒。这还能用吗!!作为对比 bash/fish/zsh 的无配置启动时间甚至只有 pwsh 的 1/100,这才是一个合格的交互式 shell 应该有的启动速度。

生态不同

大量的基于命令行的那些Linux app形成了肌肉记忆,旁人只道我在命令行运指如飞,可不知道要达到这种状态是经过了多长时间的历史积淀。而Linux命令行的应用生态,丰富得让你可以实现操作系统中需要做到的几乎所有事情。

Windows下,没有这成百上千的基于命令行的app,没有这些让人已经习惯成自然的app,没法使用就像吃饭喝水一般自然的这些命令行app,自然,Windows命令行就没办法好用:因为基于Windows命令行的软件生态太贫瘠了。


评论0 赞同0
  •  加载中...
LeanCloud

LeanCloud

回答于2022-06-22 19:48

没什么区别,无论在Windows,还是在Linux图形界面下,你做的任何操作从根本上讲,仍然都是在后台执行命令。

而shell是针对于Linux的,cmd或者powershell是针对于Windows的。

“别提 powershell 支持跨平台” 我相信Linux管理员不会闲的蛋疼在上面用powershell的,装了也是有特殊的需求。

平台不同没什么可比性。

评论0 赞同0
  •  加载中...

最新活动

您已邀请0人回答 查看邀请

我的邀请列表

  • 擅长该话题
  • 回答过该话题
  • 我关注的人
向帮助了您的网友说句感谢的话吧!
付费偷看金额在0.1-10元之间
<