會一門指令碼語言,學 bash 就顯得浪費時間?

來源:互聯網
上載者:User
首先bash雖然有if_else,可以調系統命令。但是許多局限性比如不支援多線程,沒有庫。所以會py或者ruby再去學bash,這是沒必要 的。

回複內容:

日常工作,很多工作都是很瑣碎 很細節的,你想不到你會遇到什麼具體的小任務。
這時,你總不能開啟vim 寫個python指令碼。
很可能還沒寫完#! ,shell 可能已經搞定了任務了。

所以會shell,熟練掌握各種命令,會sed awk,給日常工作帶來很大的效率提升。
相信每一個Linux下的討飯吃的程式員都深有體會。

瑣碎任務一次性的任務交給shell; 註定要擴充,代碼量不小,要維護的任務交給python.
需要效率的工作交給C。從來就不衝突。學習 bash,並不僅僅是學習 bash 本身的文法,而是要去學習一下各種命令列工具的使用方式……
說到底,一切都是為了提高生產效率啊!有py shell和ruby shell等等一大堆東西另外一個角度看, 是shell script 讓你擁有system utility的能力, 所有已安裝的程式都洗乾淨了排著隊等你調戲。sed, awk, kill, cat, ps, mkdir, rm, rsync, ..... 數都數不過來的別人幸苦調教好的漂亮姑娘,而*nix與生俱來的特性(redirection, pipe ...)又讓它們可以很好的協同工作(因此do one thing, well) 。

如果你的程式有很多custom logic, 需要面向複雜些的資料結構,shell 的笨拙就會比較明顯,這個時候就去找sexy的Python吧。用Linux,bash還是要懂的。但是bash的文法確實有點奇怪(通常都是把c的文法當做是標準文法,所以說一門語言文法奇怪,就是說這門語言跟c的文法規則相去甚遠),所以要想寫好用的script,最好是學一門基於c的比較現代的語言。我現在用的是Python,然後需要執行bash的命令,就調用os,基本上所以的bash命令都可以用os.system("")這種方式運行。迄今為止,我唯一發現不能用os.system啟動並執行就是 cd. Python中可以用os.chdir("")來實現 bash 的 cd. 今天伺服器異地遷徙,我的shell指令碼成功營運了500台伺服器,包括對對等拷貝虛擬機器設定按IP修改,組件啟停,記錄備份,伺服器運行狀態監控。shell起碼不需要python解譯器,代碼上又異常優雅,你覺得shell不舒服,還是受到傳統命令式編程的架構桎梏。每次開啟vim看到花花綠綠又十分簡潔的shell都讓人陶醉,誰他媽再讓我寫Java或者python 去搞營運我就跟誰急如果你是寫需要長期運營的指令碼,強烈推薦用python(或ruby等其他),倒不是說這樣會更快,更方便,而是可讀和可維護會好些,類似的還有makefile等,bash、sed、awk和make中那些奇怪的文法和符號的學習維護成本真的不如python中多囉嗦幾句,而且用python可以做到一招通殺大多數需求,不然你的腦子得在bash,sed,awk之間來回切換
但如果你的指令碼可能只是運行個一次,或臨時一條命令,用bash還是很方便的
所以,bash不用很精通,但要保證會到一定水平,日常的工作區分來做
然而你也不可避免會碰到閱讀維護其他人代碼的情況,所以還是大致要瞭解下,比如if的文法,至於if裡面的-a -o -f之類的可以問度娘了當然不是浪費時間了(不然你讓我們這種會用shell的情何以堪...)

假設路上有一坨屎, 你是用鏟子(shell)鏟掉, 還是開個鏟車(python)來搞?
當然, 也會有糞坑, 但是大部分情況下是路上橫躺了一坨屎, 極有可能還是別人丟過來的.

而且shell也沒那麼噁心嘛. 真正的指令碼呢.在*nix伺服器下偵錯工具,查看程式debug日誌或者作業記錄,如果不懂shell,蛋疼死你bash和命令列都設計拙劣。但現狀如此,你不學就寸步難行。
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.