萌萌妈妈 发表于 2015-1-18 11:38:51

Linux编程之Linux 下的 Facade 程序仓酷云

linux系统的文件布置,etc/,opt/目录的内容等;
本文来自:http://blog.youxu.info/2008/11/17/facade-commands-in-linux/
Linux下的命令行工具大抵有两个派别,一是以小而精见长的,只能供应一个复杂的小功效.好比yes这个命令,除输入一年夜串永一直止的y以外毫无用途.这个工具看上往土,很没用途的模样.碰着要你一起回车法的时分,这个工具就年夜年夜的有效.以是我每次帮人利用一起回车法装windows的时分,就怀恋Linux下的这个yes.过一个管道,就省往了在电脑眼前按下几百次y的繁停工作.
另有一种工具,是我明天要说的重点.这类工具通常为一个复杂的命令行挪用,却有着几十种乃至上百种分歧的参数的组合,用这些参数能搭配出谁也没用过的功效.以gcc为例,竟然有两百多个分歧的命令行参数,局限触及到程序编译,毗连设置,库设置,优化,报错信息,调试信息等等,任何一个一般的人想要穷尽学完这些参数都是不成能的.一样的库另有convert(图象转换的),ffmpeg(视频处置的),curl(内容抓取的).看上往这些参数唆使的功效七零八落的堆砌在一同的模样,细心一想这些功效切实其实是互相联系关系的,以是被放到了一个工具之下.这些工具和下面的工具的哲学是反其道而行之的:集一年夜类功效于一个工具,任何相似的操纵都能经由过程这个一个命令+分歧的参数来完成,而非”doonething,doitwell”.这些工具和传统意义上的UNIX工具哲学是不年夜像的.为了辨别他们,我把它们叫做Facade工具,由于这些工具的计划哲学很相似于DesignPattern内里的FacadePattern(Facade形式的核型是用一个一致的接口办理对一个体系的会见.好比gcc就是对全部编译体系的接口,ffmpeg就是对全部视频处置体系的接口,display就是对全部X显现体系的接口等等.)
之以是辨别这二者,是我体味到:在详细的进修过程当中,凑合二者的进修办法是截然纷歧样的.进修小工具,基础上就是学一个复杂的名字到功效的界说,加一些复杂的参数.除名字对照别扭外,利用很便利,进修曲线不峻峭.进修的要点不在于这些小工具自己,而在于使用管道和其他工具通讯(小工具历来就不是独自利用的,好比yes,好比tr,我几近没见过不必管道的情形下用他们的);和下面相反的是,我几近没见着Facade工具用在管道内里的.
缘故原由是Facade工具基础上是一个自成系统的完全的操纵体例,就像一个新的范畴的一种新的”言语”一样.因而,不把握一点基础的编译常识,就不成能把gcc玩转,由于那些参数的寄义的了解,都是必要响应常识的.我也经常看到很多做Web程序的哥们对curl的每一个边边角角都很熟习,可是对gcc不太熟,这也是很一般的,由于Facade程序原本就是属于面向一个特定范畴的工具.
我在进修这两种一模一样的工具的时分也曾感应过狐疑:怎样有的程序这么多参数,全学会怎样大概.在华侈了很多工夫乱看这些Facade程序的man文件以后,我熟悉到:除非我写操纵体系,要让我的程序编译的时分有几百个参数,不然,简复杂单的用gcc经常使用参数就可以办理99%的成绩了.我以为,Facade程序的要点恰是在于,用一些复杂的参数组合(更多情形下实在不要参数)就能够完成90%的经常使用例子.至于剩下的10%,碰到了再往查文档就好了.同时,关于不在本人”经常使用工具集”中的一些Facade工具,仔细进修他们的用法是一件十分耗时且几近没有任何劳绩的事变,并且学到的也不会被实践用到.以是,万万不要被”猎取新常识的成绩感”给蒙蔽了,往研究那些噜苏的边边角角.
而关于小工具,却要反过去.我以为在进修小工具(特别是coreutils内里的一切命令)的时分,最好要做个故意人,把年夜部分参数弄分明记着(原本参数也未几).Linux下的小工具基础上是精益求精经由有数退化的,应当说每一个选项都是很经常使用的.弄分明这些选项,能够极年夜化发扬这些小工具的上风,还能进步本人的临盆率.举个例子:好比说ssh这个程序,90%的哥们就是用他来登录服务器,然后运转服务器上的某个程序.实在ssh的文档写得很分明,你能够把ssh前面接一个命令文件.好比说
sshname@server.comls
就能够间接显现服务器上的目次了.还能够拓展一下,
sshname@server.com<script.py
就能够间接把本机上的script.py放在服务器上跑,无需把文件先拷贝已往.(走题一下:跨平台的剧本言语的优点就在这里.Apache的Hadoop是MapReduce的一个开源完成,他的义务把持器就是接纳我说的这类体例来挪用各个呆板上的Mapper大概Reducer事情的).因而,把握ssh的加命令的用法,在我看来,是值得的.
良多小工具都有如许不太不为人知的用法,熟稔这些用法,我以为是值得的,何况这也不必要花几工夫,只需打印一份文档天天睡前看半页就好了.我之前另有收拾了很多这类平常年夜多半人注重不到的小命令的一些”黑邪术”.我以为这些黑邪术一点都不是甚么奇技淫巧,而是实其实在能进步效力的邪术,是居家游览必备的工具套装.
PS:比来有几个伴侣看了我的博客,发信让我保举进修Linux的书.我保举“鸟哥的Linux私房菜”这本书.我学Linux的过程当中没看过这本书,以是折腾的对照崎岖.直到我年夜四我才看到这本书,这本书是一本十分深切浅出的好书.
PS2:GNU的工具链有把小工具Facade化的偏向.连ls这么复杂的命令都有几十个参数.在这类情形下,仍是选择一些以为会经常使用的参数进修一下就好了,没有需要往寻求宏伟全.一样平常说来,这类两个字母的小工具,假如前面加的参数凌驾6个字母,就完整不合错误味了.工具这工具,强极则无用至极.
-EOF-

学习python,无论你是打算拿他当主要开发语言,还是当辅助开发语言,你都应该学习他,因为有些时间我们耗不起。

若相依 发表于 2015-1-21 11:50:25

任何一个叫做操作系统的东西都是这样子构成的:内核+用户界面+一般应用程序。

小妖女 发表于 2015-1-23 19:30:43

对我们学习操作系统有很大的帮助,加深我们对OS的理解。?

萌萌妈妈 发表于 2015-1-27 08:32:23

说实话小时候没想过搞IT,也计算机了解也只是一些皮毛,至于什么UNIX,Linux,听过没见过,就更别说用过了。?

活着的死人 发表于 2015-2-2 19:30:46

上课传授的不仅仅是知识,更重要的是一些道理,包括一些做人的道理,讲课时也抓住重点,循序渐进,让同学理解很快;更可贵的是不以你过去的成绩看问题.

变相怪杰 发表于 2015-2-5 00:40:16

眼看这个学期的Linux课程已经告一段落了,我觉得有必要写一遍心得体会来总结一下这学期对着门课程的学习。

若天明 发表于 2015-2-6 19:00:43

清楚了解网络的基础知识,特别是在Linux下应用知识,如接入internet等等。

金色的骷髅 发表于 2015-2-18 05:45:48

一些显而易见的小错误还是用vi改正比较方便。以后的大一点的程序就得在Linux下调试了,因为有的头文件在VC里面说找不到。?

深爱那片海 发表于 2015-2-26 17:15:01

选择一些适于初学者的Linux社区。

飘飘悠悠 发表于 2015-3-6 13:21:28

一定要学好命令,shell是命令语言,命令解释程序及程序设计语言的统称,shell也负责用户和操作系统之间的沟通。

分手快乐 发表于 2015-3-11 23:35:25

熟悉系统的基本操作,Linux的图形界面直观,操作简便,多加上机练习就可熟悉操作,在Linux下学习办公软件等常用软件。

乐观 发表于 2015-3-14 12:27:08

感谢老师和同学们在学习上对我的帮助。

山那边是海 发表于 2015-3-17 01:07:52

期间我阅读了不少关于Linux的相关资料,其中也不乏一些有趣的小故事,这既丰富了我的课余生活,也让我加深了对一些术语的理解,比玩游戏强多了。?

小女巫 发表于 2015-3-25 06:06:33

熟悉系统的基本操作,Linux的图形界面直观,操作简便,多加上机练习就可熟悉操作,在Linux下学习办公软件等常用软件。

老尸 发表于 2015-3-31 22:26:51

Windows?是图形界面的,Linux类似以前的?DOS,是文本界面的,如果你运行了图形界面程序X-WINDOWS后,Linux?也能显示图形界面,也有开始菜单、桌面、图标等。

小魔女 发表于 2015-4-19 04:22:57

我学习Linux的心得体会 ,希望对大家的学习有所帮助,由于水平有限,本文难免有所欠缺,望请指正。

海妖 发表于 2015-4-26 14:10:47

我是学习嵌入式方向的,这学期就选修了这门专业任选课。

再见西城 发表于 2015-5-1 12:11:29

Linux是参照Unix思想设计的,理解掌握Linux必须按照Unix思维来进行。思想性的转变比暂时性的技术提高更有用,因为他能帮助你加快学习速度。

因胸联盟 发表于 2015-5-6 12:12:54

其次,Linux简单易学,因为我们初学者只是学的基础部分,Linux的结构体系非常清晰,再加上老师循序渐进的教学以及耐心的讲解,使我们理解起来很快,短期内就基本掌握了操作和运行模式。

简单生活 发表于 2015-6-8 21:51:45

虽然大家都比较喜欢漂亮的mm,但是在学 linux 的过程中,还是要多和“男人”接触一下:P 遇到问题的时候,出来看说和上网查之外,就是要多用 linux 下的 man 命令找找帮助。
页: [1]
查看完整版本: Linux编程之Linux 下的 Facade 程序仓酷云