{eval=Array;=+count(Array);}
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)總比赤手空拳強大吧。
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命令行的軟件生態太貧瘠了。
沒什么區別,無論在Windows,還是在Linux圖形界面下,你做的任何操作從根本上講,仍然都是在后臺執行命令。
而shell是針對于Linux的,cmd或者powershell是針對于Windows的。
“別提 powershell 支持跨平臺” 我相信Linux管理員不會閑的蛋疼在上面用powershell的,裝了也是有特殊的需求。
平臺不同沒什么可比性。
3
回答0
回答0
回答0
回答0
回答0
回答0
回答0
回答0
回答0
回答