在 Linux 系統管理中 Python腳本 可以完全代替 Bash腳本 嗎?


在python里有個module叫做

subprocess

模塊里有個函數叫做subprocess.call

你help看一下 這個語句可以執行任何linux command。

所以替代是可以替代,但是各有各的長處。

比如你tar解壓你一個文件 你說你是tar zxvf xxxx.tar.gz好呢?還是在python里先構造一個tarfile的實例再一些一堆代碼好呢?

推薦你看一本書:Python UNIX和Linux系統管理指南


只要你想,當然是可以的。


Python和Ruby都比Bash和Perl完善,也有足夠的表達能力,但是相比較而言:

0. 語法還是繁瑣;

1. 沒有充分的可移植性。

後者是很致命的,尤其在一天三變的伺服器操作系統世界裡。


各擅勝場,bash對於串接流程,調用,組合小工具和二進位命令上比python方便太多。但是稍微複雜點的數據結構bash就不合適,用python寫更好。很好權衡,那個方便用哪個


Shell腳本寫得太長太複雜了比較難調試,也比較難懂。以我現在的菜鳥水準,只敢寫簡單的Shell腳本,盡量不去嵌套使用循環或者分支語句。腳本里某些較為複雜的操作提取出來用python腳本或者其他高級語言來實現,用Shell腳本把它們粘結起來。

舉例來講,做一個日常資料備份:把指定目錄的下的log文件複製到另一個位置,然後壓縮,最後發email給自己。複製和壓縮用Linux命令直接做比較好,簡單直接;發email較為複雜(因為一些原因沒有用sendmail之類的系統工具,而是要調用smtp伺服器,還得認證),就寫了個python腳本實現。


Perl 笑而不語 ( ???)


啥順手用啥

另外 Bash 基本都是 4.x 了,有什麼問題嗎?

缺調試?自己拼一個啊。

你可以開腦洞把 . 命令改掉,這樣就能提供簡單的 Pseudo-stacktrace 了,諸如此類,特別適合小學生和初二學生。


各有優勢。主要還是看你的project需求是啥。

bash和python都是sysadmin應該說比較需要的。

再加上使用puppet,ganglia,icinga啥的,這個領域就舒服多了。


遍地subprocess還是略顯繁瑣。

如果不想用bash建議嘗試下fish,設計思想相比各種老式sh有巨大的進步。

http://fishshell.com/docs/current/


理論可行,圖靈等價


那個順手用那個,個人是簡單的bash,複雜一點的用python


推薦閱讀:

Linux中內核頁表是幹嘛用的,為什麼要有內核頁表?
linux 怎麼限制使用命令?
Linux交換空間可以和其他目錄放在不同的硬碟中嗎?
大家都用linux做什麼?我剛安裝debian9,如何用它學習編程?

TAG:Python | Linux系統管理 | Bash |