1. <dd id="erndk"></dd>
                1. 對比nushell和powershell

                  互聯網 2021/7/16 7:10:15

                  ---【前言】--- 2021-07-17 第一版 有些對比領域缺失,這篇文章會持續更新。 這是一篇對比powershell和nushell的文章。我是powerhsell專家,又是nushell新手,若某些觀點有錯誤歡迎斧正。 為什么要對比powershell和nushell?因為它倆很像,不對比沒天理!---【正文】----…

                  ---【前言】---

                  2021-07-17 第一版

                  有些對比領域缺失,這篇文章會持續更新。

                  這是一篇對比powershell和nushell的文章。我是powerhsell專家,又是nushell新手,若某些觀點有錯誤歡迎斧正。

                  為什么要對比powershell和nushell?因為它倆很像,不對比沒天理!

                   

                  ---【正文】---

                   

                  ---【操作系統支持程度和安裝】---

                   

                  Nushell不支持win7/8.1,和對應的win2008,win2012,我覺得是個不小的敗筆。目前nushell不支持arm,但這只不過是很小的問題。Nushell和powershell,都依賴少許linux系統包。Powershell有我做的一鍵安裝腳本。https://www.cnblogs.com/piapia/p/13509081.html

                  現在認為,nushell和powershell安裝容易程度差不多,都很容易。不分上下。

                   

                  ---【語法】---

                   

                  Nushell中應該沒有【對象】的概念。也就沒有【屬性】,【方法】概念。

                  但是卻用內部命令,實現了【屬性】: (ls).name。

                  內部命令沒有實現【方法】。而是用另外的命令,實現的功能。但有這兩兩個弊端:1 需要通過管道使用。2方法有重載功能,管道后的命令,我不知道怎么傳遞參數。我猜要寫過濾器,或接收器。

                  剛剛添加了for語法,還沒有while語法。有if,貌似卻沒有else?沒有switch case。沒有return。特別依賴管道。

                  Powershell數組內每個元素是對象,對象類型可以不同。每種對象類型,有自己的屬性方法。哈希表也是如此。而nushell的數組,哈希表中,沒有對象,數組中無類型不同的值問題還不大,但哈希表,這種鍵值對,套在nushell table表中,如何表示,我還比較好奇。

                  腳本怎么傳值,寫參數是否方便,我還不知道。因為沒有文檔可以研究。

                  在win的nushell中,nushell的腳本名,補全失敗。參數名估計也沒法補全。

                   

                  ---【庫,命令】---

                   

                  Nutshell內置sqlite,bson,這兩個庫,是極好的。這塊nushell贏了,贏在內置和簡單。Bson是一種nosql數據庫的格式,芒果db使用它。Powershell也很容易使用跨平臺的sqlite和bson。搜 powershell bson,就可以搜到我很久前寫的powershell操作bson的帖子。若使用powershell,推薦看我的帖子,并使用litedb,這本質是一個nuget上的dll。

                  傳統的Shell人用txt,csv,很少有人用sql,nosql數據庫,且貌似powershell領域也很少人用,真是悲Y劇啊。腳本應該大力推廣sqlite和bson。那些用nushell的人,會去用sqlite,和bson嗎?我暫且保持悲觀態度。

                   

                  ---【對比nushell的ps,get-process】---

                   

                  我們知道,跨平臺或第三方命令,永遠缺少特殊的參數,和命令。永遠不如系統自帶的。get-process ,和python的ps,nushell的ps都是這樣。get-process對于win是完美的,對于linux有時候還需要用系統自帶的ps。而nushell的ps,即不是win的ps,又不是linux的ps,有些特殊情況下,還得用系統自帶的ps。對于用powershell使用linux的ps,問題不大。因為ps輸出是字符串,就是字符串構造對象的問題。Nushell中用powershell的get-process,我用著是有問題的,我不會從powershell到nushell格式數據的轉換,也就無法繼而用 “| where size >10kb”之類的命令。在nushell中,你可以試試此命令:

                  powershell.exe -noprofile -c "get-process" | autoview

                   

                  ---【擴展性】---

                   

                  nushell擴展性不如powershell,甚至可以說是完敗。需要json-rpc協議。具體你得去看看nushell plugin開發規范。

                  而powershell方便很多:

                  1 已經有很多支持.net和.net core的dll,如mysql-data.dll。都可以被powershell加載使用。

                  2 nuget中的.net的dll。所有第三方人,開發的dll,都可以看做在nuget中。

                  3 powershell畫廊中的第三方模塊。

                   

                  ---【nushell的中文支持】---

                   

                  Nutshell 變量名,函數名,支持中文,支持數字打頭。nu腳本不支持bom頭,只支持utf8編碼。

                   

                  ---【nushell現有的問題】---

                   

                  可以定義帶有點的變量,卻無法使用,什么鬼?如:let a.a = 1 ,用$a.a  ${a.a} 不能輸出。

                  在win的nushell中,的文件名補全??梢匝a全目錄名(支持),目錄中的文件名,有時候不能自動補全。文件名補全,打一個字母后,不能補全,這個應該是個bug。

                   

                  ---【結論】---

                   

                  1 nushell對比powershell,目前類似于低Z仿lv,2---3年以后估計能成高D仿。

                  現有的功能的學習難度曲線和powershell差不多。

                  擴展性不如powershell,沒有大廠家支持,沒有大的項目(比如vmware用powershell,打造的虛擬機管理工具:powercli)。沒有類,對象,屬性,方法。

                   

                  2nushell vs python:從運維的角度,nushell比python強。因為沒有python的三個癌F癥。Python對于運維的三個癌G癥。參見 https://www.cnblogs.com/piapia/p/14962312.html

                   

                  3敵手:

                  對于powershell用戶來講,Nushell是powershell最大的對手,或敵手。

                  對于shell用戶(或腳本專家)來講,nushell是最大敵手。

                  似乎可以把nushell看做powershell的徒弟。它倆把【老的飯醉團E伙bash-awk-sed】,打成了【燒腦劣功法】。5---10年 后甚至或許能代替bas。

                   

                  4計算機語言的對比,應該著重于語法和庫。其中庫占80%,學習難度差不多,不宜擴展,為什么要用?

                  所以我目前的結論是不建議使用nushell。

                   

                  5或許恨powershell,卻又喜歡powershell特性的人,會學習并使用nushell。它倆都基于mit開源協議。但即便它再好,微軟也不會用它。

                   

                  6 nushell目前最大的問題,是庫少,不完善。但我通篇并沒有提到它。我相信隨著時間的推移,這個問題會逐漸改善,庫將來啥樣,會不會變得真香?我說不準。

                   

                  7powershell的強大之處有很多,如多線程,多進程,(含計時器,線程安全型變量)屬性,方法,管道左右傳遞對象,遠程本地powershell之間傳遞對象(自動序列化,反序列化),編寫腳本參數很簡單(帶自動補全)。是值得nushell下一步山D寨(學習模仿)的地方。

                   

                  8過幾年,除非它能成為某發行版的默認shell。否則,公司招聘不會以nushell作為招A聘關鍵字。而powershell逐漸進入公司招C聘關鍵字。

                   

                  9nushell的靚點。就是導入表格數據容易,這給了shell用戶,使用awk之外的另一個選擇。會吸引到shell用戶來使用嗎?觀望中。。。

                  ---【討論】---

                   

                  我認為,這些年powershell對象腳本的概念,用法,和方便之處,已經隨著win10的普及深入人心。并且打A得bash-awk-sed挺慘。Powershell和nushell都是采用mit協議的。5----10年后,會有linux發行版,讓他倆上位嗎?

                  還是linux的shell永遠是bash?

                   

                  ---【后記】---

                  這只是簡單對比,歡迎就這兩個shell的對比,提出你感興趣的場景,讓我完善這個對比。謝謝觀看。

                   

                  隨時隨地學軟件編程-關注百度小程序和微信小程序
                  關于找一找教程網

                  本站文章僅代表作者觀點,不代表本站立場,所有文章非營利性免費分享。
                  本站提供了軟件編程、網站開發技術、服務器運維、人工智能等等IT技術文章,希望廣大程序員努力學習,讓我們用科技改變世界。
                  [對比nushell和powershell]http://www.yachtsalesaustralia.com/tech/detail-203561.html

                  贊(0)
                  關注微信小程序
                  程序員編程王-隨時隨地學編程

                  掃描二維碼或查找【程序員編程王】

                  可以隨時隨地學編程啦!

                  技術文章導航 更多>
                  国产在线拍揄自揄视频菠萝

                        1. <dd id="erndk"></dd>