谈谈 Shell 该怎么学
大家踊跃的谈,
我踊跃的给分。
见者有分。
[解决办法]
shell 你问的哪个。。先弄清概念吧。。
百度goole。。
[解决办法]
实在太泛了
[解决办法]
路过。。。看到楼主的行径。我忍不住 拿起旁边的树枝。。。我顶你的肺...
[解决办法]
路过,不懂,看一下
[解决办法]
shell编程和高级语言编程(C++,java,.net)不一样啊,在shell中是一行一行的编译执行的,而高级语言则是先编译后执行的,不一样!而且shell中没有什么类啊这种东西,在linux中强调一切皆文件,大的工作模块是被划分成小的工作模块来实现。总之,找本书、或网上视频先看看先了解一下。不过有一点,最好先学bash shell ,这是bsh的升级版,功能强大,通用性强,和java有点像,一次编译到处运行!呵呵呵!
[解决办法]
哇 散得是技术分。。。。有unix或者linux就可以学了,什么tsh,csh,bash,神马都是浮云。。。
[解决办法]
我觉得有事没事看十几分钟的man就可以。很有效
[解决办法]
看MAN,楼主~~
[解决办法]
推荐一下。。。。。。
[解决办法]
纯路过接分了
[解决办法]
肯定是基本命令,还有就是弄shell编程 多联系啊
[解决办法]
。。。你的去Linux版
[解决办法]
《LINUX与UNIX Shell编程指南》
[解决办法]
《实践大师:UNIX awk和sed编程篇》
《实践大师:UNIX SHELL编程篇》
[解决办法]
chinaunix 这方面的内容比较多啊。
推荐个CU上的精华帖。
[精华] 我的shell水平越来越高了--向shell初学者介绍一些学习经验
三个多月前,我开始学习shell编程,当时对shell编程一窍不通,连最基本的变量赋值都一头雾水。经过三个多月的学习和练习,我的shell已经有了一点水平,至少坛子里的很多问题我都知道怎么解决。我想把我学习过程中的一点心得与诸位菜鸟们分享。
首先看些系统地介绍shell编程的书籍,我的手头只有一本《linux 与unix shell编程指南》,我觉得写得实在不怎么样,但是因为手头只有这一本书,只好凑合着用了。实际上,这本书我只翻了翻(因为觉得写得不好,所以没细看)第18章,介绍shell分支和循环流程的,然后自己写个例子,试验shell流程。会了以后,就把这本书扔到一边了。
然后,我开始在本版潜水,先看了置顶的帖子,发现“十三问”很不错,就copy了下来。然后浏览本版精华区,把我认为有用的文章全部copy下来,预备慢慢看。接着就是细读了“十三问”,把里面的例子在我的环境下面试验。网中人版主水平很高,对shell的研究非常深入透彻,十三问可以解决大部分人对于shell的很多疑问,不管是初学者还是老鸟这篇帖子都很适用。这样,对于shell编程所需要的基本元素我就了解了,可以试着应用了。
接着,在坛子里面继续潜水,不是发问,而是看看别人提出的初级问题,先不看别人的解答,试着自己先解答,然后把自己的方案贴出去,再与别人的方案比对,寻找差距。别人会对你的方案提出修改和批评意见,虚心接受,在斗争中成长。同时,研究awk的用法,因为我知道awk是shell下面功能最强的一个工具。我的学习资料是本版精华区的“Unix awk使用手册”,这个帖子很好,系统的介绍了awk的用法。
再接着,因为熟悉了awk,试着用awk解决一些坛子里面提出的问题,发现awk果然好用,但是也有局限性,所以开始学习sed。我的学习资料是本版精华区的“通用线程 -- sed 实例”。对sed有了初步了解后,开始试着用sed解决一些问题。然后又细读了本版精华区的“通过几个例子看sed的模式空间与保持空间”和“sed 学习笔记(与大家共勉)”。两篇帖子通过例子深入的介绍了sed的高级功能,我试着把几乎每一个例子都看懂了,有的实在太复杂,只好先放放。这样,我的sed水平就不低了。
要注意,正则表达式是shell编程很重要的一个内容,它无所不在。在学习awk和sed的过程中,由于它们和正则表达式结合得非常紧密,因此我也慢慢的熟悉了正则表达式。如果要看资料的话,本版精华有一篇“正则表达式语法”和一篇“正则表达式介绍”都是不错的材料。
至此,由于掌握了shell基本编程、正则表达式和awk、sed的用法,我的shell已经有了一定的水平,接下去是继续提高。提高的方式是继续潜水,给一些问题做出解答,同时研究其它大侠的解决方案。ad版主和r2007版主的水平很高,他们的代码总是十分简洁,研究他们的代码可以得到不少帮助。bjgirl很热心,熟悉的shell命令甚至比几位版主都多,研究她的代码可以学习到一些边边角角的shell命令的用法。还可以研究精华里面一些巧妙的或是复杂的shell例子,比如c1l2d3大侠的五子棋程序等等(那个五子棋让我PF得五体投地)。另外,把潜水过程中发现的一些精巧的解决方案和心得记录下来,比如ad版主提出的如何判断有连续重复字母的单词,r2007版主的洗牌方案等等问题的帖子,写在我的一篇“shell用法心得”笔记里面,有不懂的地方时,把这篇笔记拿出来翻翻,往往可以得到以前类似题目的解决办法。
在三个多月的学习过程中,我印象中只发贴提问过一次,是关于sed命令序列的执行组合、执行条件、执行顺序的问题。遇到其它不懂的地方时,争取自己解决,这也是我从幼儿园开始一贯的学习作风。只有自己思考,才能更快提高,除非你很懂得提问技巧,否则一味地发贴提问并没有太大的帮助。
希望上面介绍的这些经验对初学者有帮助。
---------------------------------
yjchlove 回复于:2004-04-25 14:58:56
我发表我个人的看法:
(1)我想学习shell的过程是思维转换的过程:
理由如下:
①我想在做的各位有许多是从windows下来的,由于windows与unix之间的本质的不同让我们理解unix/linux存在相当的困难;
②由于windows与unix/linux在标准的符合上存在相当的差异(虽然两者之间有相同的标准),windows是图形化界面,而unix却是命令行,这是其二;
(2)shell自身的理解过程:
①学习shell编程之前无论是grep,sed,还是大名鼎鼎的awk,首先必须理解的是"正则表达式",该表达式理解的好坏直接关系着你以后的水平的提高;
②sed,grep,awk内在的理解问题:其实学习shell编程重要的是理解上面这些工具的执行过程,如:什么是“pattern space”and so on;
(3)对unix/linux自身的熟练或理解的过程:
shell编程离不开os,所以shell直接依附与你对os的理解:
我举个例子:
现在叫你用shell写查找登陆用户的目录下所以的“*.a”文件,然后把找到的文件放到a.tmp文件中。
其实shell并不难,但是在写该shell之前你必须知道"find"命令的用法,如果你find不会用,那什么都是免谈;
以上是我对shell编程的看法,请专家指教!!!!
谢谢!!
-----------------
ChinaUnix首页 > 精华文章 > Shell(共 391 篇)
[解决办法]
dingqi
[解决办法]
路过进来纯支持的
[解决办法]
纯膜拜~ 您们都是大牛 学习!
[解决办法]
路过,不懂,看一下
[解决办法]
同Lz
正徘徊于shell 不晓得怎么入手学。。
[解决办法]
我能来点分么!!
[解决办法]
学习基本指令,慢慢敲,一点点地记。。。。。。。路过,正在学习
[解决办法]
话题比较大啊
还是不断的实践、debug吧,复杂点的就+x看轨迹。多保存点小程序实例,for循环while循环sed一般用法啥的小例子,以后回来翻的话还是挺方便的
[解决办法]
路过,接分啦。。。
[解决办法]
shell是杂而不难,容易忘,多遍多看就OK了
[解决办法]
多看书,多敲命令
[解决办法]
shell的语法我觉得很难整啊
要不是经常写的话 很容易忘记
各种cmd要熟悉
if while的写法 还有变量的作用域 都需要记忆
[解决办法]
多实践,多看书
[解决办法]
以前学过,写过贪食蛇之类的小东西。
[解决办法]
看看帖子,学习shell
[解决办法]
以前先接触了shell,感觉不错,但是,后来接触了python后我才发现,python才他们的是强悍啊,且语言非常简单易用,库也非常丰富强大,现在,Linux的发行版都内置了python,shell虽然不错,但是我还是喜欢python,巨爱啊。
无论学什么,以兴趣为主导的学习是既快乐又能学得更多东西的
[解决办法]
找点资料翻翻!!
[解决办法]
google
[解决办法]
路过 帮顶
[解决办法]
接分!
[解决办法]
我只学了基本的语法 !很快的!
想深入貌似也不是一两年能学好的!
[解决办法]
估计得多动手吧
[解决办法]
shell语法简单,关键是要对各种命令熟悉,这样才能发挥shell强大的威力
------解决方案--------------------
楼主的帖子,俺每帖必顶!
以前会写bat,后来就只会写b shell了。其它的都不甚了了。
[解决办法]
楼主应该很厉害吧,这个...好好学吧
[解决办法]
纯路过接分了
[解决办法]
楼主的RP要爆发了!
[解决办法]
从ash开始,bash,csh,一直到zsh。
[解决办法]
[解决办法]
不论哪种shell 关键是掌握语法多练习啊!
[解决办法]
《Linux命令,编辑器与Shell编程》
[解决办法]
《实践大师:UNIX awk和sed编程篇》
《实践大师:UNIX SHELL编程篇》
[解决办法]
多练,多问,多用
[解决办法]
技术贴!!
[解决办法]
路过,,学习了!!
[解决办法]
不会呀...
[解决办法]
LS某位同学说的好,CU版上确实比较活跃一点。自已小小的观点:
(1)为了某个目的去学习SHELL。估计上班的同学们没有精力为了专门学习SHELL而学习的,也不可能专门抱着一本书一点一点的看。以我为例,我开始用SHELL的时候,是为了做个简单的数据对比系统,对于不同的DB比较数据抽取后,是否是正常完成的。为此,了解到HERE DOCUMENT是啥东东,也学习了变量、数组等等东西。
(2)缩小范围,专注在解决问题的知识,快速学习相关知识;但同时又不能太小缩小范围,要适当了解SHELL的其它知识。原因为何?缩小范围,有助于你集中精力解决相应的问题,同时可以提高成就感。相信我,激情总是短暂的,如果不能快速的了解相关知识解决问题的话,激情会消失的。我开始看SHELL的时候,就像在学校的时候一样,一章一章的看,导致看到后面的时候,动力全无。最近才勉强快结束了。适当了解SHELL的其它知识的原因,就像鸡生蛋,蛋生鸡的理论一样。有的人说,等到遇到问题要用这个知识点的时候我再去学习。这句话本身没有错,关键点在于你遇到问题的时候,你怎么知道这个知识点能够解决问题呢?这就是需要扩大知识点的原因所在。不需要太深入,知道有这个知识点即可。就像我之前遇到shell的string类型,默认的分隔符是空格,回车,[TAB]。而我想自定义delimiter而不知道该怎么设置。就只好使用了awk来进行区分。其实,我如果看了书上的IFS,就可以很轻松的设置出来。
(3)LINUX的系统知识。学习SHELL是干吗用的?当然是把自己常用的一些命令一些流程固化下来,但这不是重点。最最核心的是要想要达成某些目的。如检查CPU,MEM的使用率,抓出最大的CPU、MEM之类的需求。那么,这就是需要我们了解linux系统命令。SHELL就相当于工具,而那些命令就是材料,只有工具没有材料是啥都做不出来的。例如,监控晚上10点之后CPU使用率大于10,MEM使用率大于5的进程。这就需要利用到top命令。top -b -n 1|sed -n '8,$'p|awk '{if($8 > 10.0 || $9 > 5.0)print $0}'。(手边没linux机器,CPU,MEM的参数位置可能不一定对。)。
[解决办法]
接上。
此外,使用crontab来调用你所编写的shell脚本,就OK了。PS;当然不要忘记权限和环境变量的影响。
[解决办法]
关注火狐狸的回答。。。
[解决办法]
多练习。
[解决办法]
感觉是边用边学吧,没有特意去研究他。
[解决办法]
shell 编程主要的是在命令,对于逻辑的话并不是太难
重点去记忆以及理解命令的用法
当熟悉命令以后逻辑自然就清晰明了了
不过这个前提是你得边学边写shell 脚本程序
[解决办法]
Mark
[解决办法]
准备学习 一下下啦
[解决办法]
把命令 在电脑上反复敲打
[解决办法]
找个实际问题,边练习边看书
[解决办法]
装个系统,多练就行了。记住命令和shell专有的格式
[解决办法]
在键盘上逐字母敲每个命令然后看结果
[解决办法]
额。我还是低调路过接分吧
[解决办法]
我是看《linux命令、编辑器与shell编程》
[解决办法]
把/etc/init.d下的脚本读上10几个,然后自己去网上找问题,用脚本写出来,用不了多少功夫。
[解决办法]
info bash
这个相当于manual,可以先过一遍,了解一下bash下面有什么构造/概念/编程元素。
感觉一定要先完整的看一遍,掌握正确的概念体系,接下来就不会有“杂”的感觉了。
man bash
这个相当于reference,内容不多不少。
help
这个相当于quick reference/index。
个人感觉在使用的时候由于bash的feature相对较多,可能会觉得杂,所以一定要弄清楚概念,大图清楚了,然后通过练习/Google来慢慢积累;另外由于bash只是Linux下的一个工具(和其他工具并没有本质的区别),所以一点Linux的哲学是有必要的:一个命令/程序只做一件事情,然后把它们连起来。
[解决办法]
+1,对我非常有用的帖子。
[解决办法]
《高级Bash编程指南》
还可以去看下shell十三问,去unix论坛多看下帖子
[解决办法]
图形界面用多了,SHELL倒不怎么用过,结果也忘记得差不多了,悲剧。。。
[解决办法]
支持一下!
[解决办法]
慢慢的学。。
[解决办法]
学习中。
[解决办法]
[解决办法]
不明真相群众迅速围观!顺带学习学习!
[解决办法]
由于工作需要学习的,开始是负责一个模块的维护,直接看里面的源码,敲每个命令,掌握用法,不懂得baidugoogle翻翻书
[解决办法]
多看多炼,不然想我一样,炼的少,一会又忘了
[解决办法]
除了多用,没法。。。
[解决办法]
how to study shell?
[解决办法]
板凳。。。
[解决办法]
学习。
[解决办法]
接分
学习
[解决办法]
认真的看书就行
[解决办法]
shell我也来看看各位专家大牛的见解
[解决办法]
纯路过接分了
[解决办法]
学习。
[解决办法]
[解决办法]
shell就是脚本程序,windows下有批处理。
------解决方案--------------------
这个还需要学吗- -
[解决办法]
不会。。。mark下,楼上有个介绍的不错。。。
[解决办法]
mark
[解决办法]
向这里进军