Chinaunix

标题: shell技术讨论--如何快速入门和提高(获奖名单已公布-2014-2-17) [打印本页]

作者: Shell_HAT    时间: 2014-01-21 21:02
标题: shell技术讨论--如何快速入门和提高(获奖名单已公布-2014-2-17)
获奖名单已公布,详情请看:http://bbs.chinaunix.net/thread-4125285-1-1.html

shell初学者经常会因为这些问题而苦恼:


有一定基础的shell用户经常会面临这样的问题:


本期话题:
话题一,初学者怎样才能快速入门并掌握常用的shell脚本编写以及解决工作上的常见问题?
话题二,对shell脚本编写有一定基础的情况下,如何快速提高自己的水平以及编写出“优雅”、高效率的代码?

活动时间:
2014年1月22日-1月29日

本期奖品:
最精彩回复奖,8名,可获《 Linux系统命令及Shell脚本实践指南》图书一本

图书简介:

作者: 王军
出版社:机械工业出版社
ISBN:9787111445036
上架时间:2013-11-13
出版日期:2014 年1月
开本:16开
页码:297

目录:
目录.zip (3.42 KB, 下载次数: 632)
1-3.part7.rar (866.14 KB, 下载次数: 845)
1-3.part6.rar (1.39 MB, 下载次数: 2639)
1-3.part5.rar (1.39 MB, 下载次数: 1728)
1-3.part4.rar (1.39 MB, 下载次数: 1685)
1-3.part3.rar (1.39 MB, 下载次数: 1599)
1-3.part2.rar (1.39 MB, 下载次数: 1394)
1-3.part1.rar (1.39 MB, 下载次数: 1524)
文前.pdf (1.06 MB, 下载次数: 774)

作者: xiaopan3322    时间: 2014-01-21 21:07
HAT出品,必属精品!
2.14年第一帖献给你了!
作者: HH106    时间: 2014-01-21 21:09
HAT出品,必属精品!.....

作者: waker    时间: 2014-01-22 08:40
两个字: 多看少问勤思考
作者: TasteOracle    时间: 2014-01-22 09:31
话题一:初学者怎样才能快速入门并掌握常用的shell脚本编写以及解决工作上的常见问题?
对于初学者,我认为还是应该从Linux/Unix操作系统入手,了解Linux/Unix的运行机制,行为习惯,包括学习一些操作系统的常用命令,因为在Linux/Unix系统上的有很多“习惯”性的东西,我们熟悉了这些,那么在学习当中可以很容易的做到举一反三。当打好了这些基础之后,我认为是时候找一本shell方面专业的书籍来系统的学习shell编程了,这里我推荐《 Linux系统命令及Shell脚本实践指南》
话题二:对shell脚本编写有一定基础的情况下,如何快速提高自己的水平以及编写出“优雅”、高效率的代码?

对于这个问题,我想应该分两部分,一部分是如何提高自己的水平,另一部分才是高效率的代码
如何提高自己的水平?我认为方法只有一个,那就是勤加练习,无论是用shell处理自己工作当中的问题,还是在chinaunix论坛帮助别人解决问题,都是很好的练习途径,要知道“纸上得来终觉浅,绝知此事要躬行”。
如何提高代码效率?我认为要想达到这个境界的话,需要了解shell编程的内部实现机制,只有了解了shell编程的内部实现机制,才能够写出有效率的代码。

作者: ly5066113    时间: 2014-01-22 09:59
本帖最后由 ly5066113 于 2014-01-22 10:00 编辑

话题一,初学者怎样才能快速入门并掌握常用的shell脚本编写以及解决工作上的常见问题?

1、初学者应该看的第一帖
http://bbs.chinaunix.net/thread-545252-1-1.html

2、快速入门,shell 十三問 是最好的教材
http://bbs.chinaunix.net/thread-218853-1-1.html
真正读懂十三问,已经可以解决60%左右的日常问题了

3、有些基础了,应该开始系统的学一下了,这时候我建议看 ABS,《Advanced Bash-Scripting Guide》

4、俗话说的好,“光说不练假把式”,只看是没用的,一定要实践,这点很重要。边看书边练习,时常来论坛练练手。



话题二,对shell脚本编写有一定基础的情况下,如何快速提高自己的水平以及编写出“优雅”、高效率的代码?

1、先学学数学吧,提高自己的逻辑思维,思路清晰了,代码可能不简洁,但基本一定高效;逻辑混乱,怎么都没救。

2、对于同一个问题,尽自己可能使用最多的方法去实现,所有方法都试过了,自然会总结出最“优雅”的方法。

作者: 2009532140    时间: 2014-01-22 10:03
老总,是你出的书!!
作者: seesea2517    时间: 2014-01-22 10:09
唷,HAT版顶一下!

说到学习,任何一个知识的学习都是相通的,学以致用,在用中学是进步最快的,实践出真知嘛。对于编程这个动手要求多的更是如此。只是由于 shell 对格式比较敏感,所以初学者可能因为一些细节比如空格什么的问题造成疑问,这个还真要个人细心的品质。
来论坛帮助新手,学习老手,回答练手,是成长的一个捷径啊。

作者: buptdream    时间: 2014-01-22 10:39
好书的,必须要顶
作者: 这个冬天不冷    时间: 2014-01-22 13:03
说说我学习shell的经历:
1 起初工作是linux网络开发,重点看了 Unix高级环境编程一书,对我理解unix命令的底层实现,以及 shell常用的重定向,信号,子进程,僵尸进程很有帮助
2 man bash(我看的中文帮助),刚开始系统地看了一边,俗话说工欲善其事,必先利其器,shell脚本都是在bash环境下运行的,因此bash的帮助手册必不可少,后来就是用到了,重点研究下
3 abs,这本书算是系统介绍了bash编程了,语法,特点,等等把,必不可少
4linux系统的一些脚本的研究,,,比如/etc/init.d/下的脚本,还有就是各个服务的一些控制脚本自己没事也看下
5熟悉命令的参数,比如ls 知道ls是干嘛的,但是它的参数呢,,这点很重要,大多数人都是知道命令是干什么而不知道其参数的意思,而我想说的是 命令的精华在于各个参数的实现,整明白了在运用到脚本中,往往都是无往不胜啊
最重要的 还是多看书,多练习,多上cu
作者: beyondfly    时间: 2014-01-22 14:02
话题一,初学者怎样才能快速入门并掌握常用的shell脚本编写以及解决工作上的常见问题?
     首先要对Linux系统有一些了解,知道Linux系统命令主要是由shell内置命令和系统来枹成的,同样,在shell脚本中,也主要是由shell内部命令和系统命令构成。
写shell脚本的头部,记得加上set -x,便于在调试脚本时,打印信息进行调试。
话题二,对shell脚本编写有一定基础的情况下,如何快速提高自己的水平以及编写出“优雅”、高效率的代码?
     对shell各种变量如$? $0 $1等变量有一定的认识,还要对系统较熟悉,知道系统常用服务,启动脚本放在哪儿,懂得系统性能优化,这样一般就能写出较高效和“优雅”的代码了
作者: qingduo04    时间: 2014-01-22 17:28
好活动,要大力支持的
作者: inurl    时间: 2014-01-22 17:56
  对脚本语言都不懂......
作者: sdau    时间: 2014-01-22 18:13
话题一,初学者怎样才能快速入门并掌握常用的shell脚本编写以及解决工作上的常见问题?

在类unix环境下工作的程序员,经常会遇到批量处理的问题,如果不懂脚本,可就费事了,比如:

找到删掉所有以.tmp结尾文件: find . -name "*.tmp" -exec rm -rf {} \;  (只有一句命令,不算脚本哈)

停调所有虚拟机:
for i in `virsh list --all | awk '{print $2}'`; do
         virsh destroy $i
done

记得以前不会写脚本,总是一个一个的停掉虚拟机,真实累的冤枉阿

因为用shell脚本确实能替程序员解决繁琐的问题,所以个人感觉学习shell是快乐的,shell是高效工作的必备工具阿

话题二,对shell脚本编写有一定基础的情况下,如何快速提高自己的水平以及编写出“优雅”、高效率的代码?

对shell有一定了解了,一定要学习高手的代码,高手在那里?高手就在linux系统中,/etc/目录下,/usr/bin下有大量的专业级的shell代码,多看,多引用,比如
redhat下有个函数库/etc/rc.d/init.d/functions ,里面有特别多好的shell函数,自己就不用重复创建轮子了
作者: seufy88    时间: 2014-01-23 09:26
本帖最后由 seufy88 于 2014-01-23 09:42 编辑

话题一,初学者怎样才能快速入门并掌握常用的shell脚本编写以及解决工作上的常见问题?
初学者最好能从事某个作业作为开端,进入shell。这样一来即为工作也为新的知识学习。
基础看一点就行了,因为shell本身入门的代价不高,看了点皮毛(CU:shell基础)
后就可以直接上手了,直接动手写你的脚本,有问题再自己找资料解决。
这里我要提一下flw(我们perl的版大)的提问的艺术
谁不是生来就懂的,但是遇到问题自己不先思考不先自己查找资料就上来提问,这种不经大脑不用动手的拿来主义只会害了你自己。
作为新手,正是通过自己动手深刻掌握的阶段,如果这次你“侥幸"解决了问题,以后再遇到时你依然没有用心掌握住,这样你永远不得把知识化为自身

shell脚本这一块已经有很多前辈总结的宝贵经验,并且由于shell脚本的一个特点(相对一般软件开发):
短小实用性强,初学者边写边执行边debug不是问题,在这过程中慢慢积累宝贵的经验,甚至形成自己的shell编写风格。
网络上也好CU的shell版也好,每天都有很多新人在提问,解决各种各样的问题,我想初学者自己也会遇到这样的问题,为何不自己来实践并回答网友的提问
作为新手,我隆重推荐台湾友人网中人的精华文章:
http://bbs.chinaunix.net/thread-218853-1-1.html

话题二,对shell脚本编写有一定基础的情况下,如何快速提高自己的水平以及编写出“优雅”、高效率的代码?
这是一个积累的过程。
另一方面,多看看国内外高手写的脚本,学以自用。
我觉得,可以看看各各source code里的configure脚本,一般都是用shell编写的。大体功能都是为了编译前的环境检测和构建。
里面有很多技巧东西值得学习。

归根到底,shell脚本其实是shell这个程序能够读懂的一种“文书”。它也是一个普通得不能再普通的linux程序,拥有linux程序所有特性。
如果你接触到linux内部的知识点,比如内核为每个进程维护fd table,同时fork的父子关系的继承等,就可以很容易理解“重定位”这种东东的实质。
另外,所谓有shell环境变量,不正是我们在C语言程序中也经常遇到的:进程的内存空间中专门有一块用来存放env var和argv、argc等东西。shell也是如此,没什么神秘的。

(1)多自己动手写脚本,哪怕是最简单的开始,最丑的丑小鸭将来也会变天鹅。
(2)精通awk,sed等shell中常用的利器
(3)一定要精通正则表达式

最后一点,我觉得它和C不一样之处:shell脚本如果不一直用,就会忘得很快(perl更快:wink: )
作者: 奋斗中的蜗牛    时间: 2014-01-23 10:17
谢谢分享   
作者: what250    时间: 2014-01-23 10:26
刚刚学习shell,还不知道怎么入门呢,进来学习学习!
作者: yybmsrs    时间: 2014-01-23 14:28
话题一,初学者怎样才能快速入门并掌握常用的shell脚本编写以及解决工作上的常见问题?
首先对Linux系统有个基本的了解,知道它是怎么处理各种命令的,其次是对bash有一定的了解,它的语法原理等等。
然后就是要熟练运用常见的命令了,如ls,find,exec,ps等等,最好在实际工作中运用,如果不懂就看文档,如man等,
或者去网上查各种资料,然后尝试将这些自己熟悉的命令结合起来工作,慢慢地培养感觉。

话题二,对shell脚本编写有一定基础的情况下,如何快速提高自己的水平以及编写出“优雅”、高效率的代码?
首先基础知识一定要扎实,经常翻翻abs这种书,好好想想书中的例子是怎么实现的,明白背后的原理,其次就是要在
实际工作中大量写各种脚本来代替自己的工作,然后经常回头看看自己写的脚本是否有bug,是否有更好的方法来改进,
也就是说的重构,在大量实践的基础上多看看系统自带的一些优秀脚本或者别人写的好的脚本,看看他们是怎么实现的,
加以吸收和利用。最后是最好熟悉一种脚本语言如Perl等,这样会对shell有着更好的理解。
作者: polyahu    时间: 2014-01-23 14:48
本帖最后由 polyahu 于 2014-02-11 16:52 编辑

话题一,初学者怎样才能快速入门并掌握常用的shell脚本编写以及解决工作上的常见问题?

http://ask.chinaunix.net/question/882
上面这个链接是CU问答里的“关于如何学习Linux ?”,可以参考一下。

http://bbs.linuxtone.org/thread-21094-1-1.html
linuxtone论坛上的一个帖子,也挺不错。

http://linux.vbird.org/
鸟哥的Linux私房菜挺不错的,循序渐进,讲解的很好。

http://tldp.org/LDP/abs/html/
abs是好书,很多的示例代码,看了以后很有收获,知道shell脚本大概是什么样子了。

sed.sourceforge.net/sed1line_zh-CN.html
SED单行脚本快速参考,非常实用。这个地址好像打不开,用这个名字搜一搜就能找到。

http://rosettacode.org/
这个网站也蛮有意思,列了很多的题目,然后用常见的编程语言解决一遍,挑里面的Bash和awk看看,也可以有所收获。
(这网站有时候打不开,不知道是不是公司网络的问题)

《sed与awk》这书非常好。

学习正则表达式,这块我一开始是看的《Learning Perl》的第七章入门的。有个著名的网帖《正则表达式30分钟入门教程》(http://deerchao.net/tutorials/regex/regex.htm),还有man grep的REGULAR EXPRESSIONS一节,info sed的3.3一节,man awk的PATTERNS AND ACTIONS一节,perldoc看perlrequick/perlretut,《精通正则表达式》《正则指引》是两部更全面的参考书,可能不会需要读到那个程度。

对于入门并掌握脚本编写这个问题,寻找好的学习资料是一回事,真正重要的是实际动手操作。
动手操作一是解决工作中实际问题,另外就是泡论坛,找问题去做。CU论坛里帖子很多,实际问题也很多,试着做做也好。

解决工作上的常见问题,一是熟悉工具,熟悉基本操作,并至少知道这个工具可以做哪些事情,二是知道如何去搜寻答案,比如到论坛里发贴子问,搜索引擎去搜关键词,到stackoverflow搜关键词,看文档RTFM,看手册。有时候看帖子里提了问题,回帖里就把手册里相关条目的原文贴过来,就一下明白了(英语的阅读越熟练越好)。
Bash的手册(http://www.gnu.org/software/bash/manual/bashref.html)有点繁琐不像vim的手册(http://doc.linuxpk.com/doc/vim/)那样容易阅读,但是Shell本身就是很繁琐很复杂的呀,手册是最准确最全面的资料,会查手册很多细节就无需问别人了。
学vim的时候反复看手册,多操作操作,每次看过文档以后就有意识的多用几个不熟悉的命令/快捷键什么的,慢慢就上手了。shell也是这样,像C-a,C-e,C-u这些,有意识的多用一用就记住了,个别命令的参数像`uniq -c' `sort -n' `du -sh' `cp -r'多用多记,也就会了。


话题二,对shell脚本编写有一定基础的情况下,如何快速提高自己的水平以及编写出“优雅”、高效率的代码?

这个话题我没什么把握来回答了,因为自认为写不到优雅的程度。

个人认为要提高水平的话,应该多看看成熟的项目代码,比如init.d目录里的脚本,rvm这样的脚本项目,github上有更多。

另外就是加深对Shell的理解,shell里变量怎么替换,参数怎么展开等等细节。多读手册。熟悉正则表达式。
还有上面有人说道的linux十三问,也是很精彩很有深度的帖子。CU的Shell编程大赛。其实多看看CU论坛Shell区精华版挺长知识的。

另一方面就是多泡论坛,看别人的问题,尝试解答,看别人的解决方法。
CU论坛的Shell区、水木论坛的LinuxApp/LinuxDev区、stackoverflow等等都是非常好的。



不管是为了上手,还是为了提高,多泡论坛积累经验,多动手加深记忆,多动脑思考,都是很重要的。
作者: zriplj    时间: 2014-01-23 15:08
提示: 作者被禁止或删除 内容自动屏蔽
作者: Shell_HAT    时间: 2014-01-24 08:33
回复 20# zriplj


CU上新手的贴子,好多都不能回答,试着解决都无从下手。

我刚来CU的时候,也是这个样子。
当时我的做法是,先把别人的答案记下来,自己慢慢领悟
作者: zriplj    时间: 2014-01-24 09:56
提示: 作者被禁止或删除 内容自动屏蔽
作者: Shell_HAT    时间: 2014-01-24 10:33
本帖最后由 Shell_HAT 于 2014-01-24 10:34 编辑

回复 22# zriplj


    活动结束之后,我们会综合考虑所有人的回复,评出前8名
作者: zriplj    时间: 2014-01-24 10:35
提示: 作者被禁止或删除 内容自动屏蔽
作者: heidern    时间: 2014-01-24 11:23
最好的方法是:
1.对于刚入职的员工,试用期内达不到一定水平,试用不通过
2.对于过试用期的员工,一个季度后达不到一定水平,季度奖金扣发,连续两个季度不达标,解聘

作者: zriplj    时间: 2014-01-24 11:35
提示: 作者被禁止或删除 内容自动屏蔽
作者: ylky_2000    时间: 2014-01-24 11:47
本帖最后由 ylky_2000 于 2014-01-24 11:49 编辑

开始关注自动化运维,shell是必备工具和方法之一。所以我算是个初学人士。。
话题一,初学者怎样才能快速入门并掌握常用的shell脚本编写以及解决工作上的常见问题?
       这个话题我想以实际工作为例子来说明,并最后得出话题一的我的答案。接手公司squid代理服务器的运维,今天刚看了下access.log大家约
[root@proxy weekly]# du -sh /var/log/squid/access.log
8.8G    /var/log/squid/access.log
够吓人的把。那么对日志分析的脚本就少不了,但是本人又是个初学者,怎么弄能快速完成这项工作?我的思路如下:
第一步,先学习别人的;从网上论坛如chinaunix板块有一些说明如何通过sarg来分析处理日志的脚本,多下几个;
第二步,将日志脚本的每一行去理解什么意思,脚本不大,时间要的也不长,至少对初学者而言,应该不会打击到弄明白的信心。
第三步,修改,在前面两步的基础上,按照自己的生产环境修改对应的shell脚本。
第四步,测试,将修改好的脚本在测试环境中多实验几次,并优化脚本;
第五步,上线。
以上5步后,会有成就感,并能快速入门shell脚本了,这个是我的经历,也期待看到其他高手的经验分享。
话题二,对shell脚本编写有一定基础的情况下,如何快速提高自己的水平以及编写出“优雅”、高效率的代码?
      这个话题,说实话我不怎么样,毕竟我是个初学者而已。借曾经学习php的经历也谈谈这个话题的感受。
  优雅有效率的代码。格式一定要清爽,比如多重循环的时候,每重循环退格多少,最好全篇统一,长变量名尽量能口语化和下划线化,多多注释说明程序的意思,方便后面快速检查和模块化单元测试。
    万事万物应该都是相通的吧,多测试,多优化,对效率问题,比如数据库执行一条查询语句的时间等尽量在测试的时候量化出来。
   




作者: jimmy-_-lixw    时间: 2014-01-24 14:09
本帖最后由 jimmy-_-lixw 于 2014-04-26 12:16 编辑

好活动,要大力支持的...好多人来讨论,我也来凑热闹下。


作者: kook20464811    时间: 2014-01-24 14:30
入门级选手!
作者: liujun3512159    时间: 2014-01-24 14:34
shell编程,我一直也比较苦恼希望能找到一个快速掌握的办法,但是,我发现这比较困难。我觉得,针对普通人来说,其捷径还是得多练习,经常去使用他,才能逐步的掌握他们。当然了,对于一些计算机天才就另当别论了。
shell 编程,涉及到很多命令的组合使用,如果仅仅看书,貌似懂了,但是,在实践中往往不是这样的,就以我先前安装linux下的mysql ,ftp来说,我先前也安装过,而且也看过这方面的很多资料,这次安装,只是换到64位操作系统下进行的,发现遇到以前没有遇到过的困难,幸好,最后还是成功运行起来,总结起来,书上说的,都是别人的经验总结,如果看书的人不亲自去试的话,往往不明白他这样做的目的,只有亲身体会了,才恍然大悟。
作者: ben_robinson    时间: 2014-01-24 14:34
话题一,初学者怎样才能快速入门并掌握常用的shell脚本编写以及解决工作上的常见问题?
1)先把Linux操作系统的基本操作和基本的系统管理技术学一遍,建议看一下《鸟哥的Linux私房菜》基础篇和服务器架设篇,看下来,然后多练习吧,主要是一些常用的命令和知识,需要熟悉。
2)熟悉一些Linux下文本处理的命令,包括grep、find、sort、xargs等等,这些都是很重要的工具;反正常用的命令最好都了解一点它大致的用途,做到心中有数,要用到的时候心里有了思路,在用man命令详细查看一下具体命令的具体选项等等细节。
3)熟悉shell的程序控制语句,if语句、for、while、case、until等等循环、或者判断控制语句的结构。
4)找一本好的入门书籍,个人感觉《Linux shell脚本编程诀窍》这本书还不错。
5)其实shell脚本的知识还有很多,有点杂,包括各种参数扩展、通配符、函数、变量等等,主要靠自己的努力吧,根据自己的需要多了解。

话题二,对shell脚本编写有一定基础的情况下,如何快速提高自己的水平以及编写出“优雅”、高效率的代码?
我也不是什么高手,谈不上有太好的建议,下面勉强谈谈吧:
1)一定要了解甚至掌握awk和sed这2个工具,对于文本处理的话,这2个命令是很重要的。
2)一定要了解甚至精通正则表达式,在文本处理领域,不了解正则表达式,几乎什么都做不了。
3)了解shell的各种功能,以及何时可以运用这些功能。
4)了解各种shell的优缺点,以便可以根据需要调换shell来编写脚本。
5)了解各种常用的系统工具命令。
6)最好在开拓一下视野,掌握一门甚至几门脚本语言,类似perl、python等。
作者: liujun3512159    时间: 2014-01-24 14:56
话题一,初学者怎样才能快速入门并掌握常用的shell脚本编写以及解决工作上的常见问题
就我个人来说,我先前一直有这样的苦恼,希望能快点掌握他们,总一些快速入门的书来看,敲写代码,但是,现实是残酷,经过多次失败后,信心被打没了。怎么办,我决定放弃好高骛远的想法,脚踏实地的学习,先是在网上,在论坛上,qq群里询问学习Linux的一些经典书籍,才知道有鸟哥私房菜这一本书,果断下载下来,从linux操作系统的一些理论知识看起,耐着性子看了3遍,才对linux系统有个比较清晰的认识,然后立志走运维的道理,决心攻克shell编程技术,我知道这挺难的,我看的也很幸苦,有时候真心想放弃了,可是我清楚,我必须要跨过这道坎,真心没有选择。我也尝试着写一些shell编程,我知道,这个东西,需要经常动手练的,否则忘起来很快。除此之外,我经常收集一些比较好的案例,专门记录下来,没事就看看,达到温故而自新,其实,有些案例的写法,我至今没搞懂为什么这样写,这没关系,先这样用着,后面慢慢的消耗他们。毕竟平时工作比较忙,主业又不是linux运维。
话题二,对shell脚本编写有一定基础的情况下,如何快速提高自己的水平以及编写出“优雅”、高效率的代码?
呵呵,我感觉,我现在没有达到这个水平,也很渴望快点实现。
作者: qq1326936610    时间: 2014-01-24 15:10
HAT出品,必属精品!.....
作者: niao5929    时间: 2014-01-24 15:55
没有什么快速入门。多在命令下使用SHELL实现些小功能。时间长了就成高手了!!
作者: mcyeah    时间: 2014-01-24 19:05
话题一,初学者怎样才能快速入门并掌握常用的shell脚本编写以及解决工作上的常见问题?
       我觉得这个话题的重点应该放在“初学者”、“快速入门”、“常用”和“解决问题”上面,假设自己是一个从来没有接触过Shell的人,突然被安排了需要用shell来解决的相关工作,怎么快速入手?!我觉得应该有一下几个方面:
      1.不应该执着,不能像平时学东西一样,系统而全面地按部就班地去学些!找一本比较好的Linux方面的书,比如《鸟哥的私房菜》略读一下,对整个Linux系统有个认识,然后再找一本Shell方面的,比如《Shell脚本高级编程指南》之类的书,重点看语法,其他的命令的具体使用之类的略读。
      2.具体投入到工作中去,面对问题,从那些大而全的指南上面去找相关的部分去看
      3.如果实在问题紧急,搜索引擎不失为一个好办法;当然,论坛和问答也是不错的选择
    其实技能往往是在实践中掌握的,如果像平时那样读书练习,肯定是达不到快速上手的。

话题二,对shell脚本编写有一定基础的情况下,如何快速提高自己的水平以及编写出“优雅”、高效率的代码?



      在有了一定基础的情况下,其实面对很多问题自己已经能够用自己的方式去解决了;此时如果自己觉得行了,反正自己都能应付得了了,那就麻烦了!人是很容易思维定势的动物,很多时候自己就限制了自己,问题的答案往往不止一个,换个角度思考,可能会有更优的解决方案!
      所以我觉得如果有了基础再要提高自己的水平,除非基础很差,多练习,不然的话这就是一个积累的过程了,不可能很快速的!而这种提高的方法就是一个“”字!主要的意思就是要多多扩展自己的视眼和思维!多看别人的代码,多看书,多提问题,多和别人交流自己的想法!当然了,交流的平台可以是公司、可以是宿舍、可以是网络上...! 要把别人精华的思考方式和美妙的代码记下来(做个笔记最好),以后碰到能用上的时候多用,自然就成自己的啦!水平自然也就提高上去了!





作者: fire_cpp    时间: 2014-01-24 21:42
话题一:shell编程这种东西,不要想着啃得精通了再去写程序,最好的方法是看下书或文档,觉得入门了开始用它来解决工作和学习中的问题,如果不在工作中的则自己设计一些你平常会用得到的场景——简单的说,实践第一。写过几个简单的之后,尝试写些大的程序,并照着标准的UNIX命令用法来写。这样一圈下来,你应该会得心应手了。

话题二:不是高手,没什么好方法可教。应该就是多看别人的代码+多动手。
作者: wenhq    时间: 2014-01-25 00:04
悄悄地问lz有pdf版没?
作者: zhaopingzi    时间: 2014-01-25 09:05
关键是常用,几天不用,就忘啊?

现在是学着慢,忘着快
作者: zhaopingzi    时间: 2014-01-25 09:05
关键是常用,几天不用,就忘啊?

现在是学着慢,忘着快
作者: zhenjiazhenjial    时间: 2014-01-25 09:17
话题一,初学者怎样才能快速入门并掌握常用的shell脚本编写以及解决工作上的常见问题?
1. 准备一本shell编程相关书籍放在手头;
2. 学以致用,将所学点滴灵活运用到实际工作或实践中;
3. 遇到问题首先要根据错误提示定位问题点,学会运用man帮忙了解语法、参数、返回值等等有效信息来解决问题;
4. 在baidu、google上看看有没有人碰到同类问题并附带解决方案或提示;
5. 在chinaunix相关板块请教论坛大V。

话题二,对shell脚本编写有一定基础的情况下,如何快速提高自己的水平以及编写出“优雅”、高效率的代码?
把shell脚本当C一样用,阅读《深入理解计算机体系结构》一类书籍,会得到一些相关的经验,比如哪里用for哪里用while等等,哪些语句用到的指令周期会更少、更精简。

作者: jeffreyst    时间: 2014-01-25 12:00
本帖最后由 jeffreyst 于 2014-01-25 12:05 编辑

我也来抛砖引玉下...
话题一,初学者怎样才能快速入门并掌握常用的shell脚本编写以及解决工作上的常见问题?
我接触shell是工作需要,记得当时对shell也没有什么概念,只是觉得使用命令行很NB,很多功能一两个命令就搞定了...
1>这个就是我首先要提的兴趣,兴趣是我们学习提高的原动力之一,工作中遇到的问题,要好好想想能不能用shell解决,思考的多了,进步就快了
2>个人觉学习是不能局限于shell,同时要知道shell是什么,是干什么的,这里推荐看看《鸟哥的linux私房菜》基础篇,写的很好,很适合初学者了解linux系统
3> 找一本shell编程书好好读几遍,我读的是《高级Bash脚本编程指南》中文版,不要被高级吓到,这本书写的条理很清晰,有很多例子可以参考
4>找个好师傅,我当时是自学shell的,没人指路,就上网查资料,在CU中提问,加shell相关的QQ群中去问,呵呵,这种方式也能学到很多

话题二,对shell脚本编写有一定基础的情况下,如何快速提高自己的水平以及编写出“优雅”、高效率的代码?
首先我要说的是我不是高手,但是我一直保持着学习shell的激情,这是我的现实情况决定的,我现在的工作和shell的相关性不大,无形中遇到的问题和思考的问题就会少很多,这个比较遗憾呀!
1>解决问题的需求也是我们学习提高的重要原因之一,工作和shell有关的兄弟要好好把握机会
2>shell是个知识系统,我们要学习常用命令,管道,重定向等等,还要学习像sed和awk这样的高级流编辑命令,这样自然而然的就会引入regex...
    当然还有系统管理方面以及网络等知识,这些东西好多,提高自己自己的知识面是个循序渐进的过程。
3>自己闭门造车,无疑是比较笨的方法,要多交流,多分享。我们大家的能力的提高都是曲线上升的,不管多高的水平,相信都会遇到些许的瓶颈期,多和CU上的高手们交流下是一个很好的办法,这里的大神很好很强大...

写的不好请见谅!

作者: ddd010    时间: 2014-01-25 12:25
支持HAT,我最近正愁怎么才能学习到shell。

现在shell用的比较少,我都打算使用ruby来代替shell了。


shell的系统资料比较少见。

学习更是一鳞半爪的乱抓。
作者: nathanielwen    时间: 2014-01-25 15:40
多上CU的shell板,学东西很快~~
多看原版书,有些内容只有原作者说的最清楚。
作者: yelei1314    时间: 2014-01-25 15:55

HAT出品,必属精品!
2.14年第一帖献给你了
作者: ecjtubaowp    时间: 2014-01-25 16:12
shell应该没啥难的,做个一到两年(指做运维的事,做开发有时还真是用的少),就应该很熟了。
作者: humjb_1983    时间: 2014-01-26 12:31
路过,学习+支持
作者: kaixinguo8115    时间: 2014-01-26 20:14
从自己学习的经历看,人为想要学好shell编程,首先要掌握一些常用的shell命令,如awk、echo等等。其次是要多练习,从简单的日常任务开始,先逐渐培养自己的自信。最重要的,所有的脚本,一定要在测试环境测试通过之后,才能在线上环境运行。
作者: 流氓无产者    时间: 2014-01-27 09:21
什么学通了,都是高手啊
作者: h101com    时间: 2014-01-27 10:17
支持,好书。

其实shell和其他语言是一样的,多练习,多想例子,多写写,就差不多了,当然,还要对系统的基本比较了解。

高效的shell代码,对于熟悉后,那么就容易多了; 语法不能错,写法要好看。

最早前我用shell也很乱,后面看了一遍shell语法和写法的书,慢慢改进了些,:wink:。
作者: gary721400    时间: 2014-01-27 13:26
话题一,初学者怎样才能快速入门并掌握常用的shell脚本编写以及解决工作上的常见问题?
     我的学习过程:1,先熟悉linux的常用命令
                         2,对shell命令的各种控制流程要基本熟悉
                         3,对文字处理要基本具备;find,grep,awk要比较熟悉
                有了以上基础,就是要多看,多动手;有时候做一个工作得到的收货可能比你练习几天的书本上的code要有用

话题二,对shell脚本编写有一定基础的情况下,如何快速提高自己的水平以及编写出“优雅”、高效率的代码?
         对同一个功能的脚本,闲着没事的时候,可以使用不同的方法在去实现;看看现在的实现思想和开始时有什么不同;

作者: 刺客阿地    时间: 2014-01-27 13:52
话题一,初学者怎样才能快速入门并掌握常用的shell脚本编写以及解决工作上的常见问题?
我也是shell初学者,目前正在看pdf版本的高级Bash脚本编程指南。
我觉得学习shell,最重要的是多练,多写,多体会,shell中不讲究太多的语法。只要通过命令的堆积,能实现自己的目的,那就成功啦。

话题二,对shell脚本编写有一定基础的情况下,如何快速提高自己的水平以及编写出“优雅”、高效率的代码?
多来shell板块跟大家切磋啊。另外,想写出高效率的代码,还是要多练,多掌握一些基本命令数组等等之类的。
作者: 刺客阿地    时间: 2014-01-27 13:53
还好,没来晚啊。。shell初学小菜鸟到此一游。哈哈哈哈!!
作者: 刺客阿地    时间: 2014-01-27 15:20
回复 35# mcyeah

说的很不错哦,哈哈,这方式咋跟我差不多,我也看的鸟哥的linux私房菜入门的,目前正在看高级bash脚本指南这本pdf。。。。


   
作者: 刺客阿地    时间: 2014-01-27 15:29
回复 41# jeffreyst

鸟哥的linux私房菜,高级bash脚本指南,哈哈哈。。。必备。。。。顶起!


   
作者: 刺客阿地    时间: 2014-01-27 15:33
回复 31# ben_robinson

说的在理,先把基础打捞了。。。shell小菜一碟了。

    我还是个菜鸟,向大神多多学习了!
作者: 刺客阿地    时间: 2014-01-27 15:35
回复 23# Shell_HAT




    敢公开找版主要书啊,哈哈哈 学习版主的经验。版主绝对是shell大神一枚!
作者: 刺客阿地    时间: 2014-01-27 15:39
回复 27# ylky_2000

也对,先尝试借用别人的shell脚本,更改,优化后能够实现自己想要的效果,那么shell也就慢慢在这样的模仿和更改中学会啦。

赞同你的观点!


   
作者: jimmy-_-lixw    时间: 2014-01-27 20:49
好活动,要大力支持的...
作者: ylky_2000    时间: 2014-01-28 08:20
回复 57# 刺客阿地
3q,今天年前最后一天谢谢认同一起加油。

   
作者: Third-Edition    时间: 2014-01-28 09:22
shell真心难啊, 特别是awk这个工具.  我一直不会用.  花了那么多时间却用不好awk. 现在文本处理有时用python. 挺方便的.
作者: yestreenstars    时间: 2014-01-28 14:24
HAT出品,必属精品!

话题一,初学者怎样才能快速入门并掌握常用的shell脚本编写以及解决工作上的常见问题?
1.初学者怎样才能快速入门?
有些人喜欢从书中学习基础,有些人喜欢从论坛中学习基础,我属于后者,我刚来Shell版时,shell脚本对于我来说就是个陌生人,看到大神们用一行短短的代码就能改变文本的结构,这激发了我对shell的兴趣,兴趣是学习的动力,没有兴趣,是很难坚持学习的。我建议初学者如果想快速入门,可以看看论坛的精华帖子,那些帖子都是大神们总结了一些常见问题和基础知识的好帖,对于个人能力的提升很有帮助。学习过程中要善于总结,把学到的新知识记起来,以便以后查阅。
2.如何掌握常用的shell脚本编写?
论坛每天都会更新一些新帖,可以尝试自己写脚本帮人解决,一开始可能写不出来,那就看别人是怎么写的,不懂就问,论坛里的大神还是很友好的,有问必答,然后慢慢地开始自己学会写脚本,并从熟悉到精通。
3.如何解决工作上的常见问题?
我不建议在工作中一遇到问题就来论坛求助,我建议先自己思考,实在想不出来再求助,得到答案后应该认真分析答案,把它变成你自己的,以后遇到同样的问题就可以自己写了。如果自己想出解决方案了,也可以事后在论坛发帖,看看有没有更好的解决方案。

话题二,对shell脚本编写有一定基础的情况下,如何快速提高自己的水平以及编写出“优雅”、高效率的代码?
我初学awk和sed时,还有一点java的基础,编程嘛,都是差不多的,掌握一门编程语言,要学习其他的语言就没那么难了。
1.如何快速提高自己的水平?
多学习别人优秀的代码,多尝试自己写代码帮助别人,准备一个笔记本,记录学到的新知识点,记录一些通用的思路(比如sed的打点计数法)等。
2.如何编写出“优雅”、高效率的代码?
学习论坛里一些代码写得优雅的大神,从模仿中找到适合自己的风格。至于如何写出高效率的代码,对于同一个问题,解决方法可能有很多种,它们的效率都不尽相同,可以自己制作一些大数据来测试,看看哪种方法更有效率。
作者: hzz137    时间: 2014-01-28 15:38
谢谢  下来看看!!!!!!!!!!
作者: ttt4011    时间: 2014-02-02 17:43
我打算学python,什么时候开个学习python的帖子。
作者: 古丁高手    时间: 2014-02-02 21:56
个人感觉《Linux与Unix shell编程指南》初学者最好入门书籍,没有之一。重温几遍。全面、由浅入深。回复 1# Shell_HAT


   
作者: 古丁高手    时间: 2014-02-02 21:57
可惜,没有《Linux与Unix shell编程指南》没有出版书籍。
作者: crazyhadoop    时间: 2014-02-03 10:23
HAT大牛啊,赶紧入手一本学习一下
作者: Shell_HAT    时间: 2014-02-03 14:50
回复 65# 古丁高手


http://bbs.chinaunix.net/thread-1169381-1-1.html
http://bbs.chinaunix.net/thread-1755285-1-1.html
作者: spark8103    时间: 2014-02-05 20:49
1.多学习,多练习,日常使用即可。
2.写出优雅的,要多写注释,注意代码书写规范。
作者: 流氓无产者    时间: 2014-02-06 09:15
用什么就提高什么,这样最快
作者: Drewsun    时间: 2014-02-06 16:26
1.多读
   --读书
     优秀书籍不计其数,这里五星推荐几本:linux shell脚本攻略/高级shell脚本编程指南,从新手直接进届高手。
   --读代码
     它山之玉,拿来学习,这里推荐几个非常棒的博客:
      1.the unix school(www.theunixschool.com)
      2.commandlinefu.com(www.commandlinefu.com/commands/browse)
2.多动手
     一定要动手搭一个Linux环境,把书上看到的代码逐个打一边(千万别ctrl+v);
     此外建议把这个练习过的代码以实现功能命名保存,方便以后需要的时候直接拿来即用。
3.变懒
     这个指的是勤思考,把平常能让脚步完成的工作,就别手工完成,不知不觉中,水平就上来了。




作者: solaris study    时间: 2014-02-07 09:08
期待精品啊
作者: 刺客阿地    时间: 2014-02-07 10:44
上班第一天,我继续来顶hat大大的精品。。。。
作者: ddd010    时间: 2014-02-07 15:41
话题一,初学者怎样才能快速入门并掌握常用的shell脚本编写以及解决工作上的常见问题?
就我个人经验而言,初期看懂shell是关键,至于写,那应该是属于下个阶段的学习内容了。
我的工作开始接触了大量的shell,写得比较少。awk,sed部分更是用的非常少。
其实在工作中shell是非常有用的,用的好会大大提升工作效率,linux环境下工作,日常很多内容基本上都是和各种命令打交道。
开发过程中更是。shell在提高工作效率上非常有用。

话题二,对shell脚本编写有一定基础的情况下,如何快速提高自己的水平以及编写出“优雅”、高效率的代码?

我自己还处于菜鸟水平!:wink::wink::wink::wink::wink:
就我的浅见,写出好的代码需要琢磨和交流。
如果自己不花时间在代码上面,很难说你写出了好代码。
交流更加重要,一个的人知识还是有限,如果不自己花心思去专研,是不可能写出好的代码的。

非常看好HAT老大的这本书。
作者: seufy88    时间: 2014-02-07 16:26
回复 72# 刺客阿地


    这么早就上班了,辛苦了。
作者: xie_deng    时间: 2014-02-07 17:03
谢谢,很实用!
作者: amarant    时间: 2014-02-07 17:34
书的作者就是HAT?牛
作者: diejiazhao    时间: 2014-02-07 21:29
这下载下来就目录能看,其余都打不开啊
作者: zhaopingzi    时间: 2014-02-08 14:03
多写,多读,多练,许(需)“三多"
作者: johnsilver    时间: 2014-02-08 14:56
提示: 作者被禁止或删除 内容自动屏蔽
作者: 刺客阿地    时间: 2014-02-08 15:14
@seufy88对呢,国家规定的假期7天,哈哈!
作者: wang_159369    时间: 2014-02-08 15:29

HAT出品,必属精品!.....
作者: jeffry31    时间: 2014-02-08 16:19
已经在AMAZON上定了一本lol
作者: sz-panda    时间: 2014-02-10 12:55
谢谢共享知识啊
作者: 20032007    时间: 2014-02-10 14:55
本帖最后由 20032007 于 2014-02-10 15:02 编辑

对这本书比较感兴趣,不过说不出什么东西出来,我觉得shell之类的东西太复杂了,对于大部分普通用户来说,期待的可能不是详细的书籍,而是像酷壳网上的某些极简短入门教程
比如vim,awk,sed那几篇号称在马桶上可以读完的博客,首先要能入门啊,入门以后,偏重什么方向,自然会去想办法,不管做什么,入门是最痛苦的,很多时候,已经用熟练了,才会恍然大悟,当初为什么那么痛苦,当初为什么前辈那样谆谆教导。。。

我对shell感兴趣,知道他很强大,但短期内估计如不了门。。。

作者: zongg    时间: 2014-02-10 16:54
出书啦,真不错,我去买一本。
作者: Shell_HAT    时间: 2014-02-10 16:58
作者不是我
我只是组织这个活动而已
@zongg
@ddd010
@amarant
作者: zongg    时间: 2014-02-10 18:08
回复 86# Shell_HAT


    啊,我也被2楼误导了。
作者: ddd010    时间: 2014-02-10 20:51
Shell_HAT 发表于 2014-02-10 16:58
作者不是我
我只是组织这个活动而已
@zongg


一直以为是你写的呢。

在论坛里从你哪儿学到不少知识。

:wink:
作者: 刺客阿地    时间: 2014-02-11 10:25
@Shell_HAT。。。。我也以为是hat大神写的呢。。。
作者: timdcn    时间: 2014-02-11 13:59
回复 1# Shell_HAT


    解压缩说1-3.part3.rar 有问题啊
作者: dzminglong    时间: 2014-02-12 15:18
   零零散散得看了一点,因为工作用不到的关系,时常立志,每每想到这儿愈加心痛,我说说自己学习的体会。
我现在依然是个菜鸟,就是懒学多问不善思考,总结自己学了几年,依然是个菜鸟,写的时候没有细心和耐心,结果出了问题就到处找资料,到处问,事倍功半,教训惨痛
作者: antidarkness    时间: 2014-02-14 10:26
谢谢分享,cu有你更精彩:wink:
作者: flyingfire1214    时间: 2014-02-15 23:13
我现在的困惑是,工作中难得的会用到一次两次,但是因为没有系统学习,所以有需要的时候根本就不知道该怎么使用命令。即使一本手册在边上,感觉也无从下手
作者: rio_manutd    时间: 2014-02-16 20:42
顶这贴························
作者: sgj584520    时间: 2014-02-17 10:35
哪裡可以購買到?
作者: reyleon    时间: 2014-02-21 14:24
这贴我居然没有回,很遗憾
作者: linuxscott    时间: 2014-02-24 09:12
HAT出品,必属精品!
作者: tianlang725    时间: 2014-02-24 15:54
值得学习好贴。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2