shell腳本和批處理腳本有什么區(qū)別?
shell腳本和批處理,通常是linux和windows下進行一些簡單腳本執(zhí)行任務(wù)的途徑。對一半用戶來說,反正都是執(zhí)行任務(wù),一個是linux、unix和mac下等類unix下,一個是windows下。但是兩者是有很大的不同。
1、linux shell是個linux 操作系統(tǒng)的用戶交互層對linux來說,應(yīng)用程序想調(diào)用系統(tǒng)底層的資源比如內(nèi)核和硬件,必須通過shell調(diào)用。
命令行是個小應(yīng)用命令行是windows下的小應(yīng)用,包括后來大幅度升級的PowerShell也是。
2、linux shell是存在交互層,包括應(yīng)用接口和大量的工具鏈,不依靠圖形桌面對linux來說是必須的,沒有shell是不行的,但是可以沒有圖形桌面,圖形桌面不過是跑在shell上的應(yīng)用。
shell下個工具,包括grep,sed,awk三劍客,以及其他cat、less、find、cut、sort、tail、top等大量小工具可以組成工具鏈方便的執(zhí)行各種任務(wù)。
比如我們要統(tǒng)計一個web access日志的訪問量最大的10個ip:
awk '{print $1}'|sort|uniq -c|sort -nr|head -n 10
命令依賴window桌面而命令行包括powershell在window下都依賴window桌面,是桌面上的應(yīng)用,沒有桌面無法運行。
3、shell是一個很強大的編程語言shell有很多個性版本的包csh,sh, bash 和zshell功能強大,不光是命令接口還是強大編程語言。
c shell、csh編程能力強大,基于c語言語法,比如很多unix默認都是cshell。
ban shlinux默認的shelllinux發(fā)行版默認的shell,也是大家使用最多的shell環(huán)境,引入了大量適應(yīng)性的個性,比如tab自動補全等。愛死它了。
zsh新一代的shell命令補全功能非常強大,還有命令自動糾錯功能,傻子都不怕輸錯命令了。很多碼農(nóng)們的最愛
對比下個各種shell的功能矩陣對比圖:微軟的命令行也在進化微軟以dos起家,以窗口環(huán)境占領(lǐng)PC幾十年,最近估計也慢慢感受到了linux帶來的壓力,所以也開始懷抱開源,對于命令行也在努力改善,推出了增強版Powershell,】各種功能上,以及編程體驗好多了。
在window10中 微軟還通過WSL引入了對linux子系統(tǒng)的支持,功能也非常不錯,相關(guān)信息可以看筆者的文章《WSL大量功能更新,Bash on Windows還只是微軟的一個玩具?》