shell教學 Shell腳本與Python相比的優勢




python shell教學 (7)

我嘗試了幾次學習shell(bash)腳本,但被語法驅趕了。 然後我發現了Python,並且能夠完成shell腳本在Python中可以完成的大部分工作。 我現在不確定我是否應該花時間學習shell腳本。 所以我想問一下:

與Python相比,shell腳本的優點是什麼使它成為不可或缺的工具?

我不是專業的系統管理,但我有興趣為家庭用戶設置Linux系統,因此我認為學習shell腳本可能是必需的。


正如所有以前的答案所表明的,不需要學習shell腳本; 但學習從來不是一件壞事。 這實際上是個人優先考慮的問題。 別人會很難告訴你什麼是和不值得你的時間。

大多數程序員發現每次學習新語言都會變得越來越簡單。 (自然語言也是如此),而且越早開始越好。

再加上:學過一門語言後,你就可以從完全知識和熟悉的位置上奢侈地消除它的局限性。 這可能不會讓你奠定,但可能會從你的同行賺取啤酒!


“與Python相比,shell腳本的優勢是什麼,使它成為不可或缺的工具?”

殼不是必不可少的。 你為什麼認為有這麼多? bash,tcsh,csh,sh等等,

Python 一個shell。 不是你用來運行所有命令的人,但是對於腳本來說,這是理想的。

Python是所有Linux發行版的一個或多或少的標準部分。

更傳統的砲彈做了太多事情。

  1. 他們有一個方便的用戶界面來運行命令。 這包括shell在其中搜索PATH,fork和exec請求的程序的單行命令。 它還包括管道,序列和並發程序(使用;|& )以及一些重定向(使用>< )。

  2. 他們有一點點編程語言的能力,用於運行腳本。 這種語言很難使用,效率極低。 這種語言中的大多數語句都需要分叉一個或多個進程,浪費時間和內存。

從shell運行程序,將stderr重定向到日誌文件,這種事情是很好的。 在外殼中做到這一點。

作為Python腳本,幾乎所有其他事情都可以更高效更清晰地完成。

你需要兩個 。 但是,您不應該使用傳統shell語言的if語句或循環編寫腳本。


shell使普通和簡單的操作變得非常簡單,而使得更複雜的事情變得複雜得多。

通常情況下,一個小的shell腳本比相應的python程序短,簡單,但python程序會傾向於正常接受修改,而shell腳本隨著代碼的添加往往會越來越難以維護。

這樣做的結果是,為了獲得最佳的日常生產力,您需要使用shell腳本,但是您應該主要將它用於一次性腳本,並在其他地方使用python。


外殼隨處可用。 如果您堅持一套相對基本的便攜功能,您的腳本可以在手機,無線路由器,DVR,上網本,工作站,大型鐵服務器等上運行。 Python並不一定包含在許多系統中,並且根據環境的不同,安裝它可能會很困難。

學習一些shell腳本也可以幫助你學習一些命令行技巧,因為命令行就是shell。 採用一些相當長和復雜的命令行也很好,並且在你意識到你需要更多的命令之後將其轉換為更通用的腳本。

外殼還有一些非常強大的功能; 就我所知,流水線是一個非常有趣的控制結構,它只能用於shell。


我同意以前的大部分答案。 我認為shell命令最適合執行面向文件系統的任務(複製和移動文件,grep等)。 在我看來,如果您必須讀取和寫入文件,Shell才會更好,因為單個>>file.txt重定向會立即附加到文件,而不需要file=open('file.txt','a'); file.write() file=open('file.txt','a'); file.write()

目前,為了個人使用,我將兩者混合,創建一個python腳本,並且每次在shell中執行一些操作比在python中更容易調用os.system('command')或os.popen('command')。


  • Shell腳本為I / O重定向提供了更簡單的符號。
  • 在shell中現有的程序中創建管道更簡單。
  • Shell腳本重用了整個程序。
  • Shell是普遍可用的(在任何類Unix上) - Python不一定是安裝的。

“你確實可以用Python做的所有事情都可以在shell中完成; 在Python中有些東西很容易在shell中很難使用(就像在shell中很容易,但在Python中很困難一樣)。 從長遠來看,兩者都是最好的。


沒有什麼你可以用shell腳本做的事情,你不能用python做。 shell腳本的一大優點是,您可以使用與使用shell時相同的命令,因此如果您是一名笨重的shell用戶,那麼shell腳本在某種程度上將成為自動執行shell工作的一種非常快速且簡單的方法。

我還發現在shell腳本中處理數據管道比在python中處理起來要容易一些,儘管python絕對可行。

最後,您不必再啟動額外的interpeter來運行shell腳本,從而為您提供非常小的速度和內存使用優勢。

但是再一次,Python腳本更容易維護,因為這個原因,我試圖從大的醜陋shell腳本遷移到Python腳本。 使用Python進行異常處理和QA也更容易。





shell