问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

开始学脚本,是学bash还是perl/python

发布网友 发布时间:2022-04-19 01:33

我来回答

3个回答

懂视网 时间:2022-04-19 05:54

首先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和命令行都设计拙劣。但现状如此,你不学就寸步难行。

热心网友 时间:2022-04-19 03:02

必须python了,linux自带,不许要安装,比bash,perl更加模块化,方便维护,众多的第三方库,甚至你都不需要写什么代码,只要把各种库拼起来就完成项目了。

如果解决了您的问题请采纳!
如果未解决请继续追问

热心网友 时间:2022-04-19 04:20

python 的理念是『There is only one way to do it.』,然而它还是有2、3两个不兼容的版本,还是有 pip 和 easy_install 两个各有千秋的包管理器,http 库有官方自带的,但还是第三方的『Requests: HTTP for Humens』更好用。
反观 perl,标榜着『There's more than one way to do it.』,CPAN 上的『LWP』这个大而全的第三方 http 模块,无人不晓,但也有其它的第三方 http 模块,诸如曾经进入过 perl 官方模块的『HTTP::Tiny』、跟『Mojolicious』一起发布的『Mojo::UserAgent』等等;在面向对象方面,perl 本身的支持很弱鸡,现在是靠着 CPAN 上面的第三方模块『Moose』来提供完整的面向对象支持,当然,你没有用到『Moose』中的高级特性的话,也可以考虑使用运行更快的精简版本『Moo』;perl 本身自带了很多语法糖,所以,它也被戏称为『write-only language』,例如:
while ( defined( my $line = <> ) ) {
print $line;
}
可以简写为:
while (<>) {
ptint;
}
或者:
print while (<>);
有时候也会写出让人困扰的代码,所以,在团队合作的时候,一般都尽量避免使用 $_ 这个内置变量,而使用自己命名的变量。
python 里的『Ctypes』模块比较好用,perl 里要实现类似的功能只能动用 XS 了
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
请帮忙查iphone4手机的序列号dx3hnchpdp0n DX3J481PDP0N帮忙查一下 是真的吗 我不会查 大神们是翻新的? 苹果4激活日期查询 猫猫一直发情怎么办呢 如何帮助猫咪度过发情期呢? 本科英语都要过4级吗 车子中间的踏板是什么 高考400分能考哪些军事类二本 联通3g双卡双待智能导航手机 ...可以一个卡装移动2g的卡,专打电话,一个卡装联通3g流量卡吗 大使馆是办理什么业务的? 使馆和领馆有什么区别? 为什么我的电脑版微信无法登录 节食减肥偶尔晚上吃多了一次怎么办 - 信息提示 我的用电脑版微信登录不上去,而别人的号却可以登录上去(同一台电脑)? 会一门脚本语言,还有必要学习 bash 吗 男孩子怎样瘦大腿和臀部 男生如何瘦大腿和臀部?高人指点、 帅哥我想问一下,还有淘新闻微信提现180元的截图吗?或是东方头条的微信提现截图呀! 我的东方头条不能提现了。这就是大骗子 风寒与风热感冒? 什么香调的香水好闻 什么香调的香水好闻 什么香水好闻?急~~~ spring boot中使用commons lang还需要使用什么依赖? 摩登红人的东西好吗 摩登红人的东西好吗 spring boot 为什么要用webmvcconfigurationsupport,是干什么用的? 香奈儿摩登系列香水和迪奥冰火葩奇香水哪个香味更持久 怎样设置qq签名不让任何人点赞 我们做什么能拯救大象?what can we ___ ___ ___ ___ ___? 我们做什么能挽救大象英语 兰蔻菁纯面霜40t503什么日期? 我们为了生存帮助大象英文 iphone13为什么有的软件权限不能保存图片也修改不了 世界上仅剩的大象,我们必须好好保护它们,不能再捕杀它们其中的任何一只。用英文怎么说? 大象会干什么(用英语,并要翻译) 人们会教大象做一些重活英语 大象可以帮助人们用英语怎么说 从风行上下载的电影怎么转换mp4格式? 风行怎么把电影下载到MP4那里? 在风行下载的电影想转换成MP4格式放到苹果2上播放,手上有狸窝MP4转换器,求转换器设置参数 用风行怎么转码里面的电影到MP4而且不会格式不支持?急 我在风行上下载了电视剧,请问怎么转成mp4格式的?急啊... 为什么我在风行网下载的电影有一部是MP4格式另外一部是RMVB格式,请问怎样可以全部设置为MP4格式? 怎么把风行里面的电影转码进MP4啊?它本身那就是MP4格式,但为什么MP4里面还是格式不支持?我追加 风行上下的电影可以转到MP4看吗? 风行下载怎样改成MP4形式 机械硬盘只有一处坏道也会导致开机自检失败吗?