{eval=Array;=+count(Array);}
Shell是LINUX系統(tǒng)的用戶(hù)界面,提供了用戶(hù)與內(nèi)核進(jìn)行交互操作的一種接口。它接收用戶(hù)輸入的命令并把它送入內(nèi)核去執(zhí)行。實(shí)際上Shell是一個(gè)命令解釋器,它解釋由用戶(hù)輸入的命令并且把它們送到內(nèi)核。
Windows PowerShell 是WINOWS一種命令行外殼程序和腳本環(huán)境,使命令行用戶(hù)和腳本編寫(xiě)者可以利用 .NET Framework的強(qiáng)大功能。微軟這次沒(méi)有低調(diào),強(qiáng)硬的命名它為PowerShell ,看樣子想在SHELL界面里打敗BASH。
一、理念論
從理念上 ps 比 bash 先進(jìn)一代,ps 有完整的、強(qiáng)類(lèi)型的編程支持,bash 里面全是字符串。Powershell 里面很多的函數(shù)比 UNIX 更加正交,如 % 和 ?,可以提供極其可怕的抽象能力,你 bash 就是做不到。
不過(guò)針對(duì)理念這一說(shuō)法,也有人提:說(shuō)PS的OOP理念比shell純字符串先進(jìn)的同學(xué)請(qǐng)想一想:JavaScript的對(duì)象字面量,是用字符串表示對(duì)象,這樣的一種技術(shù)為什么大受歡迎?答案是從使用者友好的角度看,字符串要優(yōu)于對(duì)象,而命令行恰恰是人機(jī)交互界面,這就是為什么shell比PS易用的原因,至于比較“理念”哪個(gè)先進(jìn),對(duì)于靠代碼吃飯的人來(lái)說(shuō)就是扯淡。
二、用法論
1、bash 快,易用,提示好,難學(xué)。寫(xiě) script,看 script 的時(shí)候你想砸電腦。ps 寫(xiě)的 script 清晰,好讀,有一點(diǎn)編程基礎(chǔ),就算幾乎沒(méi)學(xué)過(guò) powershell 都能猜出來(lái)啥是干嘛的,但是比較慢。。。所以說(shuō)平常交互的話(huà) bash(bash-it, oh-my-git, oh-my-zsh)更好用一些,但是真正寫(xiě)起 script 的時(shí)候感覺(jué)還是 powershell 爽。
2、如果你受夠了bash靠文本解析和環(huán)境變量來(lái)解決邏輯問(wèn)題,你會(huì)無(wú)比渴望一個(gè)OO的Shell。——PS簡(jiǎn)直是大救星。隨著PS用多了,你會(huì)發(fā)現(xiàn),PS的OO有些走火入魔,你又會(huì)開(kāi)始懷念簡(jiǎn)單粗暴的bash。
三、技術(shù)論
這個(gè)不是一兩句話(huà)能說(shuō)清楚的。PS包含了BASH很多命令了,甚至我看有想法把BASH所有的命令都移到WIN下,讓BASH成為它的一個(gè)子集。不過(guò)也有人指出肯定是GNU Bash好呀,畢竟Bash作為大量Linux發(fā)行版默認(rèn)的Shell,久經(jīng)考驗(yàn)。如果兩個(gè)具休技術(shù)細(xì)節(jié)比較的話(huà),需要長(zhǎng)篇大論了。這里有兩者具體的技術(shù)的比較:http://hyperpolyglot.org/shell。
我想題主既然主動(dòng)提問(wèn)這樣的問(wèn)題,想必是不想看充滿(mǎn)技術(shù)細(xì)節(jié)的長(zhǎng)篇大論了,因?yàn)榫W(wǎng)上這樣的內(nèi)容非常多,你使用這個(gè)問(wèn)題直接去搜,就能搜到一大片。
所以我也長(zhǎng)話(huà)短說(shuō),盡量用盡可能少的內(nèi)容直白地講出它們最核心的區(qū)別。
一句話(huà)概括,二者定位不同,Linux Shell 是給用戶(hù)用的,而 PowerShell 是給開(kāi)發(fā)/運(yùn)維工程師用的,當(dāng)然前者是包括后者的。
我們知道,使用 Windows 的話(huà),不會(huì) PowerShell 完全沒(méi)問(wèn)題。但使用 linux 的話(huà),不會(huì) Shell 寸步難行。這既和兩種系統(tǒng)的特性有關(guān),也和 PowerShell 和 Linux Shell 本身有關(guān)。
暫且不提操作系統(tǒng)層面的區(qū)別,只提這兩種語(yǔ)言的區(qū)別。二者的理念是有很大區(qū)別的。
PowerShell 的理念是,你花些時(shí)間和精力把我學(xué)好,那以后可以用我做很多復(fù)雜的事情,這是一個(gè)非常劃算的買(mǎi)賣(mài)(雖然實(shí)際未必如此)。所以它的門(mén)檻是有一些高的,但功能更強(qiáng)大一些。
Linux Shell 的理念是,我要盡量簡(jiǎn)單,你不需要花很多精力就可以用我做一些簡(jiǎn)單的事情,但如果想做更多復(fù)雜的事情,那深入學(xué)習(xí)也是免不了的,但最好不要拿我做太復(fù)雜的事情,我會(huì)受不了的。
那么大概就能體會(huì)出二者的核心區(qū)別是什么了。
0
回答0
回答0
回答0
回答4
回答0
回答3
回答0
回答0
回答0
回答