目錄
回复内容:
首頁 後端開發 Python教學 会一门脚本语言,学 bash 就显得浪费时间?

会一门脚本语言,学 bash 就显得浪费时间?

Jun 06, 2016 pm 04:22 PM
bash else if ruby

首先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和命令行都设计拙劣。但现状如此,你不学就寸步难行。
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1319
25
PHP教程
1269
29
C# 教程
1248
24
c語言if判斷多個條件怎麼寫 c語言if判斷多個條件怎麼寫 Mar 25, 2024 pm 03:24 PM

在C語言中,if語句通常用於基於單一條件執行特定程式碼區塊。但是,透過使用邏輯運算子(如 &amp;&amp;、|| 和 !),可以組合多個條件來進行判斷。包括使用邏輯與(&amp;&amp;)判斷多個條件、使用邏輯或(||)判斷至少一個條件、使用邏輯非(!)判斷單一條件的否定,以及嵌套if語句和使用括號明確優先權。

在 Windows 上執行 shell 腳本檔案的不同方法 在 Windows 上執行 shell 腳本檔案的不同方法 Apr 13, 2023 am 11:58 AM

適用於 Linux 的 Windows 子系統第一種選擇是使用適用於 Linux 或 WSL 的 Windows 子系統,這是一個相容層,用於在 Windows 系統上本機執行 Linux 二進位執行檔。它適用於大多數場景,允許您在 Windows 11/10 中執行 shell 腳本。 WSL 不會自動可用,因此您必須透過 Windows 裝置的開發人員設定來啟用它。您可以透過前往設定 > 更新和安全性 > 對於開發人員來完成。切換到開發人員模式並透過選擇是確認提示。接下來,找 W

Ubuntu Bash效能比較:Ubuntu與Win10週年版 Ubuntu Bash效能比較:Ubuntu與Win10週年版 Jan 04, 2024 pm 09:36 PM

今年初,當Microsoft和Canonical發布Windows10Bash和Ubuntu用戶空間,我嘗試做了一些初步性能測試UbuntuonWindows10對比原生Ubuntu,這次我發布更多的,關於原生純淨的Ubuntu和基於Windows10的基準對比。 Windows的Linux子系統測試完成了所有測試,並隨著Windows10週年更新釋放。預設的Ubuntu用戶空間還是Ubuntu14.04,但已經可以升級到16.04。所以測試先在14.04測試,完成後將系統升級升級到16.04

Bash程式以找到A的B次方? Bash程式以找到A的B次方? Aug 30, 2023 pm 09:01 PM

這裡我們將看到如何使用bash腳本獲得數字A的B次方。邏輯很簡單。我們必須使用“**”運算子或冪運算子來執行此操作。讓我們看下面的程式來清楚地理解這個概念。範例#!/bin/bash#GNUbashScripta=5b=6echo"$(($a**$b))"輸出15625

五個鮮為人知的現代 Bash 腳本編寫技術 五個鮮為人知的現代 Bash 腳本編寫技術 Jun 26, 2023 pm 08:36 PM

程式設計師經常使用Bash命令語言建立Shell腳本來自動化手動任務。例如,他們會為各種設定、檔案操作、產生建置結果和各種與DevOps相關的活動建立Bash腳本。幾乎所有類別Unix或基於Unix的作業系統都為使用者提供預先安裝的Bash解釋器,因此我們可以使用Bash編寫更具可移植性的自動化腳本。正如我們已經知道的那樣,Bash腳本編寫是指使用Bash命令語言的語法、內建Bash命令和核心作業系統CLI程式(如GNU核心工具)編寫一系列命令。標準且老式的Bash腳本通常執行一些命令並在終端上顯示純文字

深入分析 Golang 與 Ruby 的異同 深入分析 Golang 與 Ruby 的異同 Jun 01, 2024 pm 08:46 PM

Go與Ruby的主要區別在於:Go是一種靜態類型編譯語言,支援輕量級並行和高效記憶體管理,適合編寫高並發應用程式;Ruby是一種動態類型解釋語言,支援真正的平行但記憶體管理需手動控制,適合編寫靈活的Web應用程式。

在MySQL預存程序中怎麼使用if嵌套語句 在MySQL預存程序中怎麼使用if嵌套語句 May 26, 2023 pm 12:07 PM

一、if語句介紹if語句是分支結構語句,依條件執行不同的操作。 if語句通常由一個條件式和一個或多個語句組成。如果條件表達式的值為真,那麼執行if語句中的語句;否則,跳過if語句區塊。 if語句的語法如下:if(condition)thenstatement;elsestatement;endif;其中,condition為條件式,statement為需要執行的SQL語句。二、if嵌套語句介紹if嵌套語句是指在一個if語句區塊中,再嵌套一個或多個if語句區塊,用於根據不同的條件執行不同的操作

Ruby怎麼使用Mysql2連接操作MySQL Ruby怎麼使用Mysql2連接操作MySQL Apr 17, 2023 pm 10:07 PM

Ruby操作MySQL使用mysql2連接mysql並操作mysql。 geminstallmysql2連接mysql建立連線:require'mysql2'conn=Mysql2::Client.new({host:'192.168.200.73',username:'root',password:'P@ssword1!'})接受的連線選項包括: Mysql2::Clie

See all articles