會一門指令碼語言,還有必要學習 bash 嗎?

時間 2021-06-01 03:27:49

1樓:

bash還用學嗎?

難道你想用bash來處理資料?

寫了bash十年的人來告訴你,除了控制呼叫其他程式的流程外,其他的都別用bash!!!

每一句對字串的操作,包括sed,awk,都是乙個自己挖給自己的坑!!!

學可以,別真把它當成一門語言去搞事,等你哭著告訴客戶說「特麼我在公司機器上試了都可以怎麼到你那就不行了」的時候可別說我沒提醒你。

2樓:淮水以左

我認為是有必要的

bash 比較方便,可以直接在terminal裡面執行,比如awk等命令直接去文字處理

有些工具使用bash寫的,語音識別工具kaldi,深度學習caffe等工具包含一定的bash指令碼,想要會用,需要掌握

一般來說,掌握多種指令碼是有必要的,多學一種我想也不會是壞事,尤其是在Linux大行其道的年代,shell更是乙個不錯的選擇

3樓:

如果你時間多你可以學一學bash,如果你沒啥時間,你就沒必要學了,因為python和php可以替代bash,差別真不是太大

4樓:楊勇

仍然需要,但是可以學得不用太深入了。在這些時候shell命令仍然是必不可少的:

unix已經提供了各種很好用的命令和工具,比如awk, sed, unique, sort, netstat,有一些簡單的日誌處理任務能很快使用這些工具來完成。如果在python這樣的指令碼語言來重寫其功能,仍然要花費一些時間,同時可能引入更多錯誤。但想在python中呼叫這些命令仍然是很麻煩的事,涉及到建立程序,獲取輸出等。

當你的伺服器已經在火上烤的時候,你會發現每一秒中都很重要。

出於安全考慮,有些生產機器可能不會允許安裝更高階的指令碼。

5樓:

很有必要,指令碼語言和Linux shall command根本就不是乙個東西。你會用筷子就不用勺子了麼。

bash的好處在於系統管理。

6樓:ramwin

找到乙個檔案裡含有 "SERVER" 的行數bash grep -n SERVER

2. pythonfile = open(input("輸入檔名稱"))

search_word = input("輸入要查詢的帳號")index = 0

for line in file.readlines():

index += 1

if search_word in lineprint("%d: %s" % (index, line))

7樓:面試專家邁克

現在覺得Go最好,內建了HTTP client和JSON處理,部署也方便,直接二進位制傳上去。雖然Curl和jq也符合我的要求,但是畢竟寫起來不夠快。

8樓:蹇兆文

Python版本的相容性問題值得詬病。Bash很好用的,樓主太偏頗。貼一小段本人寫的shell指令碼好了,不熟悉的人是不太了解將Linux的內部命令集合在一起所帶來的便利的。

9樓:Zign

題主,你以為會寫bash的人就是bash的各種語法玩的很溜的人?

那你就錯到家了,會寫bash的人其實是grep,awk,sed,find等一系列工具用得溜的人。

還是你覺得grep,awk,sed都沒啥用呢?

10樓:Kai

學習Bash, 除了是學習指令碼程式設計,更重要的是了解Unix、Linux的核心思想

Basics of the Unix Philosophy

Unix哲學 | Thinking In Linux

我幸運的在大學裡面修了一門Unix的課程, 以下的幾點對我個人影響非常深刻:

乙個程式只做一件事,並做好

假定每個程式的輸出都會成為另乙個程式的輸入,哪怕那個程式還是未知的。輸出中不要有無關的資訊干擾。避免使用嚴格的分欄格式和二進位制格式輸入。不要堅持使用互動式輸入。

通過管道(pipe)來串聯任務

所以學習Bash(或者任何的*nix shell程式設計)是非常有必要的。

11樓:

開車比python快啊

12樓:

很多場景其實是用不了指令碼語言的, 例如伺服器上可能沒有python ,ruby或node,但bash基本上都有 ,這樣就需要用shell指令碼了,當然了邏輯複雜的指令碼不建議用shell寫,不方便維護啊

用shell其實就需要理解linux的各種命令和使用習慣,如管道等的

13樓:

為什麼要使用Shell指令碼?

因為Shell似乎是各UNIX系統之間通用的功能,並且經過了POSIX的標準化。因此,Shell指令碼只要「用心寫」一次,即可應用到很多系統上。因此,之所以要使用Shell指令碼,最終要的是可移植性。

14樓:隨心所往

如果你一點shell都不會,那麼部分shell很簡單的任務,你可能需要用PY等指令碼寫很多。

最常見的就是AWK和SED了,要自己實現它的功能可不簡單,更不用提效能了

15樓:lance lan

程式設計師思維就是這樣,一種語言吃天下。在系統上BASH上是必備的。PYTHON現在還在為2和3吵著呢。

萬一舊機器上是2。你寫得是3.還得想下語法規則。

也是浪費時間。

簡單任務交給Bash。方便快捷,打完就跑。

長期任務用PYTHON。都不衝突。

16樓:needle wang

bash(或者說shell)的精髓在於命令,不在於語法,語法只是輔助,屬於組織者的角色(所以你學別的shell如zshell也是可以的,只不過bash是常見版本預設的shell,比較流行,才會有很多人有像題主這樣的疑惑)。

而shell跟程式設計型的指令碼語言區別大到不可比!比如你想要簡單快速批量的發郵件,可以使用mail命令,而python你還要自己寫;搜檔案用find,用python也可以實現,諸如此類。

但你想你寫出來了,不就又變成乙個命令了嗎?命令就是為解決各種繁瑣小事而剝離出來的通用型程式。

不用自己實現,直接使用別人寫的程式去完成自己的細節需求,而bash就是命令的管理者,想想這多省時間

至於管理者的重要性,我就不想談了,想想乙個個個性鮮明的命令如果你管不好,組織不好,會有多少bug,非常難控制(所以學精還有必要的,至少不會在你指令碼出錯的時候分析不出原因)。這是我以前學bash的感觸。

建議花個把小時看一看《linux/unix設計思想》,一本很薄的解惑書。

17樓:rootming

很多時候我學東西前會想可能學了就是浪費時間,沒有什麼意義,然後又想到,其實我只是乙個人,可能一生做的東西對於整個人類都沒有什麼幫助,對於宇宙,我們連螻蟻都算不上。所以我只是為了眼前的目的學習,題主的目的是什麼呢?也許是為了更好解決問題,其實學習bash目的,就是為了拓寬眼界,給你真正需要的時候救急。

18樓:

100行以下bash,100行以上python

bash假如語法不難麼糟糕了.單檔案的話我表示還是喜聞樂見的用bash寫的.

bash不難啊.常見問題直接google一下就出來了.比如如何判斷檔案存在變數存在.根本不需要記的

19樓:

用shell寫的不是軟體,而是一條條任務。

Shell厲害的地方在於可以直接呼叫UNIX提供的一系列命令列工具。雖然Python有庫,但如果只是為了完成簡單的任務的話,肯定沒有直接使用工具來的方便。

20樓:大房

相比花時間問這種問題,學好shell絕對不浪費時間。

A好還是B好的這種問題,不自己試試,你不可能找到答案。

程式猿的時間就是拿來浪費的,不浪費一定的量,拿不到公升級資格!

21樓:

如果不會bash那學一下是不算浪費時間的,即使你不準備用它寫指令碼。因為你遲早會碰到看或者修改別人已有的shell指令碼的時候。

但是我個人不認可前面很多人鼓吹命令列shell高大上的說法。

第一 bash shell和命令列是完全兩個概念。bash是bash,命令列是命令列。很多命令列小程式各種引數組合非常複雜,甚至都有自己的dsl 不費一番功夫是學不會的。

同時這些命令列程式並非和python ruby perl指令碼之間是對立關係。完全可以把命令列和 perl它們結合起來用,我覺得效果比bash要好多了。bash能呼叫的其他指令碼也能。

第二 bash 的最大好處是依賴少,最大壞處是控制能力偏弱,而且不好除錯,自身字串處理能力差。而指令碼除了依賴大一點外其他都比bash強。你bash能用awk 我perl就不能?

更何況perl python ruby 這些正則處理更不是其他能代替的。

第三重要觀點再強調一下,要把命令列和python perl 它們結合起來,不要對立。這樣結合的效果會比bash要好的多。

22樓:jl wang

unix為shell做了很多優化,那些幾十年來千錘百鍊演算法上做過各種優化的c程式,效能遠遠不是指令碼小子優化一下執行緒呼叫就能超越的。

我剛參加工作的時候自以為用很牛b的演算法寫的c程式效能上也經常被老工程師用shell串幾個命令吊打。 python的假多執行緒就別拿出來現了好不好。

而且很多指令碼其實包裝的就是控制台的命令,你如果想深入研究python/ruby的系統管理最後總會走到那條路上去,當然你不研究可能也行,看各人造化吧。

我只是想說啊,碼農這個職業不就是奮鬥在與機器賽跑最前線的職業麼?怎麼可能學了乙個指令碼就夠了?

23樓:

完全取決於你的工作內容.

比如:如果是*nix系統管理員, 那肯定要學, bash說不定是你第一程式語言, 因為大量已有的指令碼是用bash寫的.

如果你*nix下的普通程式設計師, 那有個基本的知識, 能看懂就行. 不一定要學好, 學精.

如果你是Web程式設計師, 用的又是Python, Ruby, 那沒有必要再去學bash. 雖然有的場景也許用bash效率更高, 但是Py, Ruby也能完成.

一句話: 看你工作中需要用到Bash的頻率.

PS:bash設計的時候的定位就是一門膠水語言, 所以邏輯複雜的指令碼就不該用bash寫.

24樓:nekocode

sh 指令碼只是 bash 的一部分,學學 bash 的命令就行了,涉及複雜控制什麼的還真不如用 py 來做。不過有些裝置不支援 py 或 ruby,這種時刻也只能用 sh 來做了(原生親和),很好的例子還有 bat 批處理。

學習 某一門語言 會對學習其他語言產生幫助或是干擾嗎?

cathy 用英語學的荷蘭語,因為他們倆很多詞彙太像了。有的時候一直在練荷蘭語,然後突然需要講英語的時候就會卡住,這個詞用英文怎麼說來著 還有很多時候是同詞不同音 還有發音有時候會帶跑偏一點,比如v在荷蘭語中發類似f的音 也是一種典型的荷蘭式英語口音 所以現在看到英語中的f我都格外小心別發錯hhh ...

學習一門語言會提公升對該語言國家的認同感嗎

格仔品格 學習一種族群和文明的語言,確實能增進了解,進而轉化為認同感 但這是有一定限度的,決定對該族群和文明了解程度的,最終是學習者的心智,你會怎樣去理解這族群和文明,用你的思維方式如何去理解。語言是乙個重要途徑,但是也有越了解越排斥的可能 學習一門語言是否會提公升對該語言國家的認同感?先說結論,有...

學習一門外語語言環境有多重要?

Aaron 2016.4.1愚人節,也是屬於Leslie哥哥的一天,有人說 張國榮死的時候,大部分90後還不到10歲,不知道為什麼有那麼多同齡人起鬨。同樣作為90後的我只能說 你不懂,我不怪你 題外話了 在這一天我遇上了位國際友人,我用我這渣的不能再渣的Chinese English來與他溝通,語言...