memcachedb应用指南一:为什么选择memcachedb

为什么要选择memcachedb:没 有什么特殊的原因,我们有最好的理由就是,在做到最大不牺牲数据读、写性能的前提下,我们能够让您原来存储在memcache里的数据不再遭受系统宕机或 者系统掉电而丢失,即使服务器电源爆炸了,只要硬盘还能够正常工作,换到另外一台服务器上,您的数据依然安然无恙地在硬盘上。

性能的担忧:我们做过小数据测试,小数据(几十个字节)数据的读写,每秒钟并发能够维持在5000+(单块146Scis硬盘,CPU和内存配置几乎可以忽略因为这不是性能瓶颈)。基本上满足所有互联网高效存储的应用。

应用场合:需 要频繁读写的小数据。例如数字类服务就像点击数,需要频繁写入小数据的例如评论系统,需要记录用户状态的例如在线人数以及在线用户等等。当然,如果您想用 来存储单笔超过10K以上的数据,例如新闻或者文章或者论坛帖子也可以,但是我们没有尝试过,如果您真的用来这样子玩了,可以反馈给我们。

数据备份&&读写分离:memcachedb支持主辅实时无差异同步,配置主服务和辅服务仅仅需要很短的一条启动命令。当然,您也可以利用这一便利特性来实现读写分离,那样子会让您的系统更加的高效。

稳定性:memcachedb目前被应用于新浪互动社区多个产品线中,具有钢铁般的品质,Sina出品,品质毋庸置疑。

memcachedb预热:准备写一些关于memcachedb的东西了

这个是在回忆未来的blog上看到的东西,拿给大家看看。

memcachedb故名思义就是 memcached + bdb,是基于memcached Socket层和berkeley-db存储层结构的实现, 是新浪互动社区技术团队2007年的一项重大的技术成果,现在应用于新浪互动社区多个产品线中,其中包括新浪博客等重头产品。能够实现任意memcache api的调用、数据实时落地以及主辅实时备份。

项目主页:

http://code.google.com/p/memcachedb/

其他相关信息:

新浪发起的UNIX开源软件项目

dbcached──“分布式 key-value 数据库内存缓存系统”发布[原创]

 

优秀程序员的十个特征

1、好奇心
程序员是永远不会接受现成的东西的,他们必须亲自解开内心深处的迷惑和渴望。

2、清晰的思维技巧
编程是一件需要严密逻辑和清晰思维的事情,有强大的数学或者科学背景的程序员通常更加成功。

3、快速的阅读速度和理解能力
相当大一部分程序员的一天都花在阅读上,阅读设计文档,或者其他人的代码,API,注释等等,有些程序员读的快,能很快理解,并且开始行动,另外一些程序员也许要多花三四倍的时间才能阅读完毕,这些程序员的工作效率肯定不如前者。

4、注意细节

注意细节这个特征可能和是好奇心相关的,写程序的人,关注细节,严谨,意味他能够写出高质量,少bug的程序。

5、快速学习编程以外东西的能力
;j+N*^,W3}3f4I6H)Y
应用程序一般都和日常生活和企业运作相关联,比如编写一个会计软件,可能就需要学习一些简单的会计知识,如果拥有快速学习编程以外东西的能力,必将为你决定雇佣这个程序员加分。

6、自我学习技巧

软件行业进化速度很快,为了更好的编程技能,好的程序员必须善于自我学习。

7、激情
这个毫无疑问,你必须雇佣一个热爱这个工作的人。程序员很可能一周7天,一天8小时写代码,如果是例行公事的态度的程序员,很难相信他能做好这份工作。

"z'm:`&e,T"H*_
8、适应性
程序员也许经常遇到短期的项目,变换不同的工作环境,即使在客户公司环境工作,也能保持良好的工作状态。

9、良好的沟通技巧

沟通技巧,不一定意味着有一口流利的英语,这意味着愿意沟通,愿意了解团队中其他人的想法。

10、谁是老板?

这个问题应该有点难以表达,程序员是一个众所周知独立性很强的一个群体,事实上,这也许是他们的一个优点,但是很多时候,即使从技术上,应该这么做,但是从商业和其他角度,管理层不得不选择一个另外一个做法,那么程序员应该尊重经理人的决定,尊重那个做决定也担负责任的人的决定。

给应届毕业生的面试建议

一方面是给自己看的,另一方面是共享给大家的。Linux自由、开放、共享

应届生在参加面试时如何有技巧的回答一系列的问题。

  开始之前务必记住:

  黄金法则:80/20---80%的谈话是有自己完成的而面试官只说20%。

 白金法则:你必须试着控制整个面试过程的节奏和话题。

  钻石法则:对于没有把握的问题,抛给面试官。

  1.在一分钟内介绍一下你自己。

  这似乎是必答题。不要以为这很容易。如果你用一分钟来重复你的简历,恭喜你,你的印象加分没有了!建议你最多用二十秒钟介绍自己的姓名、学校、专业。然后话锋一转,引出自己的优势或强项。一定要在最短时间内激发起面试官对你的好感,或者至少是兴趣。

   成功的模式可以是:我叫XXX,英文名字XXX,XX省XX市人,今年6月将从XX学校XX专业本科(专科)毕业。除了简历上您看到的介绍,我愿意特别 说一下我在XXX方面的特长/我最大的特点是……(给出事例)。正是基于对这方面的自信,让我有勇气来应聘贵公司的XXX这一职位。(看表)一分钟到了, 希望我没有超时。(很阳光的微笑)

  如果面试官不是情商太低,你的最后一句话应该会使他放松和微笑。资历嫩一点的还会接着问:“为什么你会这么认为呢?”如果他真的这么问你,Bingo!让你来操纵这次面试!

   2.应届生经常会被问到的一个问题是:你为什么会选择你目前学习的专业呢?千万当心,这个问题的目的是考察你的DecisionQuality这一项胜 任力,不要简单的回答说“感兴趣”或者“就业前景乐观”等。给大家一个成功的范例(同样适用于诸如‘您所做过的一个成功/最大的决定是什么”):

  问:王先生,您为什么会选择财务专业呢?

   答:的确,财务已经连续多年成为高校热门专业,这造成了就业时无可避免的激烈竞争。可当初我选择财务专业时并不是单纯因为它的热门程度。我早就把就业目 标锁定在苏州工业园区的外资企业。根据我高三时搜集到的统计资料,园区当时有外企XXX家,而且每年以XX%的速度在增加。以每个公司财务部至少5个人计 算(总账,应收应付,税务,出纳再加上一个经理),加上园区的平均离职率是15%,则在我毕业时,可以有XX个空缺。我毕业那年应该全国有XX相关专业的 毕业生。其中可能有10%会瞄准苏州,而我填报的苏州大学在当地口碑尚可,属于中等偏上。那么,有1/2的对手能被我淘汰。再加上我就在南京本地学习,四 年中可以更早的寻求机会,所以,我很有信心的选择了这个专业。

  其实,没有哪个面试官会相信你真的作过如此缜密的调查分析,但你已经展示了你做决策时的思路,所以可以加分。

   记住:所有的回答要符合你专业的特点。不要说得太到位,可以自圆其说就行了,不然,他们会觉得你要么太虚伪,要么太狂妄。还有,应该表示对自己的专业的 确感兴趣,或者增加点戏剧效果:我本来理解的财务管理就是管账,所以开始的时候还真后悔了一阵,直到大三时开始了在企业的实践,才有了改观,并真正喜欢上 了我的专业。这样显得真实可信,更重要的是,很自然的由你引导到准备好的问题:实习的收获。

  3.为了考察您 LearningontheFly这一条胜任力,通常我们会问您在实习期间的收获。此时,不要夸大自己的成绩,谦虚一点。还有,不妨说一下自己的失误(不 用怕,毕竟你是在实习)。记住:详细说明当时的情况(Situation),你要达到的目的(Task),你采取了哪些步骤(Actions),事情的结 果(Result),还有你得到的经验教训(Lessonlearned)以及后来怎样运用到工作中避免犯类似的错误。最后做出总结:原来书本上的知识要 能够在工作中熟练运用,这期间还有很长的一段路要走。还可以说:回到学校后,我对自己的实习经历作了一番总结,发现自己在XXX方面还需要加强。所以,我 很注意利用大学的最后一个学期来弥补这一不足。现在,我对自己很有信心,如果时间能够倒流,我相信我能做到更好。

  4.你有过和别人合作的经历吗?(千万要回答“有”)那么,在这过程中,你是如何处理意见分歧的呢?现在是考察你的ConflictsManagement。现在的绝大部分企业都不欣赏没有原则的老好人。所以,你要把自己包装得强势一些。

  我本人比较满意的回答:

   每个人在团队中都应该可以自由坦诚地发表意见,我会非常认真的聆听,分析;但对于自己的意见我不会没有原则的放弃。民主过后还需要集中。我是学校外语俱 乐部的主席,在组织校际年度联欢时,有两个干事的意见和我不一致。(停顿一下,让面试官记住你的这个闪光点)我和他们开了会。大家都阐述了各自的理由。很 遗憾,我仍然没有说服这两人。在这种情况下,我感谢他们的积极参与,但表示仍然会采用我的方案。我的理念是:Meeting不等于Voting,完全不需 要少数服从多数;我是负责人,我相信自己有能力采取最佳方案;假如失败了,我也会承担主要责任。而如果我是团队的普通一员,我会保留自己的意见,但还是认 真执行管理者已经做出的决策。当然,学校毕竟不同于公司,情况会更加复杂,但是我坚信,只要遵循“对事不对人”的原则,任何问题都可以得到解决。

  在回答时,一定要眼睛看着面试官,微笑,以冲淡你的咄咄逼人。

  如果你实在没有把握,可以把问题抛还给面试官,试举一例(还是同样的问题):

  问:你是如何处理意见分歧的呢?

   答:您问的恰好也是我最困惑的一点,而学校里老师从来不给我们这样的指点。一方面,我不想做没有原则的老好人,另一方面,大家都是朝夕相处的同学,我不 想让他们觉得我盛气凌人。我当时是这样做的:……可一直到现在,我都不知道是否作的正确,也许我可以从您那里得到一些指教,您说我当时这么做有问题吗?

  如果对方马上对你言传身教,那他铁定是菜鸟,你不用紧张了,因为,合理的反应应该是不置可否的说:其实这个问题永远不会有标准答案。

   5.有人问起多个问题同时出现时,应该如何解决。这就是PrioritySetting的胜任力。应对思路是把所有要处理的事情按轻重缓急分成4个象 限:重要而且紧急;重要但不紧急;不重要但紧急;不重要也不紧急。但记住,不要直接叙述这个思路,这会让人觉得你不像应届生。还是通过举例说明比较好。我 面试过的一个比较好的例子:我在大三时正好要复习准备英语6级考试,这时有机会可以去一家企业做兼职部门助理,但需要每周花三个半天。同时,每月一次的英 语沙龙活动要组织安排,还要(不好意思地说)抽空陪陪女朋友(最后一点很重要,可以活跃气氛,还为下面制造了一个不重要不紧急的事例)。我当时利用没有课 程的下午去公司工作,一般要到5点半回学校。在公车上的30分钟正好用来总结当天在公司的收获和需要了解的知识。在食堂与女朋友吃晚饭,六点半去教室自 习,到十点回宿舍。英语沙龙的工作委派给大二的两个干事,他们每天会到自习教室找我谈10分钟,我会给他们一些建议。这样,我没有花太多的精力在沙龙活动 上,可对整个过程都有了解和掌控。后来6级考试顺利通过,那家公司对我的工作评价很高,我也学了很多东西;英语沙龙的活动如期举行,我和女朋友也没有疏 远。

  这同时展示了三条胜任力:prioritysetting;delegation和work/lifebalance

   作为应届生,在面试前,应该了解一下外企的部门架构。以欧美企业为例,一般部门内的职位从低到高依次为:助理(如果是本科生,有时候可以跳过)---专 员---资深专员---主管---资深主管---部门副经理/SectionManager---部门经理。一般,主管要求有5年以上的相关工作经验,这 是一个分水岭。好,回过来谈谈面试时如何回答关于职业生涯规划问题。其实,这种问题并不需要你回答得无懈可击,这也办不到---你说得通俗了,认为你胸无 大志;回答太专业了,又觉得你好高鹜远.

  回答这类问题,有以下几点可以帮你加分:

  1.设定一个与自己专业相关的 长远目标;这个目标要和公司的工作有关但不要局限在企业内部(因为空间有限,会遭遇许多太过于细节的问题)。例如,HR专业的学生可以说,自己的目标是在 35岁之前,也就是10年内,成为一名优秀的人才测评专家或者资深企业人力资源顾问;工程技术专业的学生,可以成为精益生产专家或者黑带大师;IT专业则 可以在信息资源整合和ERP解决方案方面成为专家,等等。注意,要着重在你想做些什么,而不是你想爬到什么级别。

  2.把这个目标分解,以1年,1年,5年,10年的进度,逐步推进。这个就要靠你自己编了,恕在下不能一一举例。记住,每个阶段都要说明你能为公司做出怎样的贡献,你能得到怎样的提高,这与你长远目标的关系在哪里。此时,可以适当联系到刚刚提到的部门架构。

  3.在此过程中,除了自己想办法不断充电,还要说一下你希望公司可以给你怎样的帮助。比如能够有岗位轮换的机会;或者能够参与各种项目等。不要提希望公司会给你培训,送你出国,给你报销学费,要表现得自己希望在实践中成长。

   4.强调自己的稳定的心态。你可以这样说:“中国人最讲究‘名正言顺’或者‘不在其位,不谋其职’,所以很多人都认为,只有给了主管的职位,才能运用主 管的权利,发挥主管的作用。我的理念和别人不同,我认为恰恰相反,当你展示出了主管该具有的能力,能完成更多的工作,公司自然会考虑对你的职位进行调整。 在没有足够的权力时,要使用自己的影响力,所以我鄙视那些成天想着晋升却没有任何建树的人。”这样子,你的自我包装就成功了一大半。

   5.最后要注意,在回答类似问题时,不要显得太胸有成竹。偶尔显示出涉世未深可以让面试官觉得你还有学生的单纯。“这个问题很大,我在学校里也曾经断断续 续的考虑过,现在我简单的讲一下,可能会显得一厢情愿,希望得到您的指教”这样的一个缓冲在许多时候很管用哦。(还记得钻石法则吗?)

   最后想提一下面试的肢体语言。我面试过的应届生应该没有1000也有800了吧。我发现几乎80%以上的人在入座后都采用一种非常闭合的姿势,很拘谨。 这不能说是坏事,但的确会让面试开始的破冰显得艰难。现在,闭上眼睛,想象一对亲密情侣在烛光下甜蜜交谈,他们的姿势应该是几乎一样的;你们平时和好朋友 促膝长谈,相信采用的也是相同的姿势;电视上的国家元首交谈时,绝大多数情况两人的姿势也相同或接近。这是因为:两个人如果在交谈过程中采用同一种姿势, 则双方在潜意识中会有彼此认同的感觉。我们把这样的姿势一致称为Rapport。我本人非常注重采用Rapport来增进沟通效果(特别是,如果有人盛气 凌人的叉腰对我说话,不论他的职位高低,我也会叉腰和他说话---输人不输阵:)

  还有,面试时,手势的运用很重要。特别是回答较大的问题时,用手虚拟的在桌面上列出1,2,3,这样会让人觉得你很有条理,而且不会显得很稚嫩。而说到我会怎样怎样时,把手掌放在心口,真的有强化的效果。

  一句话:面试时,要表现的有教养,容易。

Shell简介及基础知识

Shell

Shell是一种具备特殊功能的程序,它是介于使用者和 UNIX/Linux 操作系统之核心程序(kernel)间的一个接口。为什么我们说  shell 是一种介于系统核心程序与使用者间的中介者呢?读过操作系统概论的读者们都知道操作系统是一个系统资源的管理者与分配者,当您有需求时,您得向系统提出;从操作系统的角度来看,它也必须防止使用者因为错误的操作而造成系统的伤害?众所周知,对计算机下命令得透过命令(command)或是程序(program);程序有编译器(compiler)将程序转为二进制代码,可是命令呢?其实shell 也是一支程序,它由输入设备读取命令,再将其转为计算机可以了解的机械码,然后执行它。

各种操作系统都有它自己的Shell,以 DOS 为例,它的 shell 就是  command.com 檔。如同 DOS 下有 NDOS,4DOS,DRDOS 等不同的命令解译程序可以取代标准的 command.com , UNIX 下除了 Bourne shell(/bin/sh) 外还有 C shell(/bin/csh)、Korn shell (/bin/ksh)、Bourne again shell(/bin/bash)、Tenex C shell(tcsh) … 等其它的  shell。UNIX/Linux 将 shell 独立于核心程序之外,使得它就如同一般的应用程序,可以在不影响操作系统本身的情况下进行修改、更新版本或是添加新的功能。

Shell 的激活

在系统起动的时候,核心程序会被加载内存,负责管理系统的工作,直到系统关闭为止。它建立并控制着处理程序,管理内存、档案系统、通讯等等。而其它的程序,包括 shell 程序,都存放在磁盘中。核心程序将它们加载内存,执行它们,并且在它们中止后清理系统。Shell 是一个公用程序,它在您签入时起动。藉由解译使用者输入的命令(由命令列或命令档), Shell 提供使用者和核心程序产生交谈的功能。

当您签入(login)时,一个交谈式的shell 会跟着起动,并提示您输入命令。在您键入一个命令后,接着就是 shell 的工作了,它会进行:  

1. 语法分析命令列

2. 处理万用字符(wildcards)、转向(redirection)、管线(pipes)与工作控制(job control)

3. 搜寻并执行命令

当您刚开始学UNIX/Linux系统时,您大部份的时间会花在于提示符号(prompt)下执行命令。

如果您经常会输入一组相同形式的命令,您可能会想要自动执行那些工作。如此,您可以将一些命令放入一个档案(称为命令档,script),然后执行该档。一个shell 命令档很像是 DOS 下的批次檔(如 Autoexec.bat):它把一连串的 UNIX 命令存入一个档案,然后执行该档。较成熟的命令档还支持若干现代程序语言的控制结构,譬如说能做条件判断、循环、档案测试、传送参数等。要写着写命令档,不仅要学习程序设计的结构和技巧,而且对  UNIX/Linux 公用程序及如何运作需有深入的了解。有些公用程序的功能非常强大(例如 grep、sed 和awk),它们常被用于命令档来操控命令输出和档案。在您对那些工具和程序设计结构变得熟悉之后,您就可以开始写命令档。当由命令档执行命令时,此刻,您就已经把 shell 当做程序语言使用了。

Shell 的发展历史

第一个有重要意 义的,标准的 UNIX shell 是V7(AT&T的第七版)UNIX,在1979 年底被提出,且以它的创造者  Stephen Bourne 来命名。Bourne shell 是以 Algol 这种语言为基础来设计,主要被用来做自动化系统管理工作。虽然  Bourne shell 以简单和速度而受欢迎,但它缺少许多交谈性使用的特色,例如历程、别名和工作控制。

C shell  是在加州大学柏克来分校于70年代末期发展而成,而以2BSD UNIX的部分发行。这个 shell 主要是由 Bill Joy 写成,提供了一些在标准 Bourne shell 所看不到的额外特色。C shell 是以C 程序语言作为基础,且它被用来当程序语言时,能共享类似的语法。它也提供在交谈式运用上的改进,例如命令列历程、别名和工作控制。因为 C shell 是在大型机器上设计出来,且增加了一些额外功能,所以 C shell  有在小型机器上跑得较慢,即使在大型机器上跟 Bourne shell 比起来也显得缓慢。

有了  Bourne shell 和 C shell 之后,UNIX 使用者就有了选择,且争论那一个 shell 较好。AT&T 的 David Korn 在 80 年代中期发明了 Korn shell,在 1986 年发行且在 1988 年成为正式的部分 SVR4 UNIX。 Korn shell 实际上是 Bourne shell 的超集,且不只可在 UNIX 系统上执行,同时也可在 OS/2、VMS、和 DOS上执行。它提供了和 Bourne shell 向上兼容的能力,且增加了许多在 C shell 上受欢迎的特色,更增加了速度和效率。  Korn shell 已历经许多修正版,要找寻您使用的是那一个版本可在 ksh 提示符号下按 Ctrl-v 键。

三种主要的 Shell 与其分支

在大部份的UNIX系统,三种著名且广被支持的shell 是Bourne shell(AT&T shell,在 Linux 下是BASH)、 C shell(Berkeley shell,在 Linux 下是TCSH)和 Korn shell(Bourne shell的超集)。这三种  shell 在交谈(interactive)模式下的表现相当类似,但作为命令文件语言时,在语法和执行效率上就有些不同了。

Bourne shell 是标准的 UNIX shell,以前常被用来做为管理系统之用。大部份的系统管理命令文件,例如 rc start、stop 与shutdown 都是Bourne shell 的命令档,且在单一使用者模式(single user mode)下以 root 签入时它常被系统管理者使用。Bourne shell 是由 AT&T 发展的,以简洁、快速著名。 Bourne shell 提示符号的默认值是 $。

C shell  是柏克莱大学(Berkeley)所开发的,且加入了一些新特性,如命令列历程(history)、别名(alias)、内建算术、档名完成(filename completion)、和工作控制(job control)。对于常在交谈模式下执行 shell 的使用者而言,他们较喜爱使用 C shell;但对于系统管理者而言,则较偏好以 Bourne shell 来做命令档,因为 Bourne shell 命令檔比  C shell 命令档来的简单及快速。C shell 提示符号的默认值是 %。

Korn shell 是 Bourne shell 的超集(superset),由 AT&T 的 David Korn 所开发。它增加了一些特色,比  C shell 更为先进。Korn shell 的特色包括了可编辑的历程、别名、函式、正规表达式万用字符(regular expression wildcard)、内建算术、工作控制(job control)、共作处理(coprocessing)、和特殊的除错功能。Bourne shell 几乎和 Korn shell 完全向上兼容(upward compatible),所以在  Bourne shell 下开发的程序仍能在 Korn shell 上执行。Korn shell 提示符号的默认值也是 $。在 Linux 系统使用的 Korn shell 叫做 pdksh,它是指 Public Domain Korn Shell。

除了执行效率稍差外,Korn shell 在许多方面都比 Bourne shell 为佳;但是,若将 Korn shell 与 C shell 相比就很困难,因为二者在许多方面都各有所长,就效率和容易使用上看,Korn shell 是优于 C shell,相信许多使用者对于 C Shell 的执行效率都有负面的印象。

在shell 的语法方面,Korn shell 是比较接近一般程序语言,而且它具有子程序的功能及提供较多的资料型态。至于 Bourne shell,它所拥有的资料型态是三种 shell 中最少的,仅提供字符串变量和布尔型态。在整体考量下  Korn shell 是三者中表现最佳者,其次为 C shell,最后才是 Bourne shell,但是在实际使用中仍有其它应列入考虑的因素,如速度是最重要的选择时,很可能应该采用 Bourne shell,因它是最基本的 shell,执行的速度最快。

tcsh 是近几年崛起的一个免费软件(Linux 下的C shell 其实就是使用 tcsh)执行,它虽然不是UNIX 的标准配备,但是从许多地方您都可以下载到它。如果您是 C shell 的拥护者,笔者建议不妨试试 tcsh,因为您至少可以将它当作是 C shell 来使用。如果您愿意花点时间学习,您还可以享受许多它新增的优越功能,例如:  

1. tcsh 提供了一个命令列(command line)编辑程序。  

2. 提供了命令列补全功能。  

3. 提供了拼字更正功能。它能够自动检测并且更正在命令列拼错的命令或是单字。  

4. 危险命令侦测并提醒的功能,避免您一个不小心执行了rm* 这种杀伤力极大的命令。  

5. 提供常用命令的快捷方式(shortcut)。  

bash  对 Bourne shell 是向下兼容(backward compatible),并融入许多C shell 与Korn shell 的功能。这些功能其实 C shell(当然也包括了tcsh)都有,只是过去 Bourne shell 都未支持。以下笔者将介绍 bash 六点重要的改进:

1. 工作控制(job contorl)。bash 支持了关于工作的讯号与指令,本章稍后会提及。

2. 别名功能(aliases)。alias 命令是用来为一个命令建立另一个名称,它的运作就像一个宏,展开成为它所代表的命令。别名并不会替代掉命令的名称,它只是赋予那个命令另一个名字。

3. 命令历程(command history)。

BASH shell  加入了C shell 所提供的命令历程功能,它以 history 工具程序记录了最近您执行过的命令。命令是由 1 开始编号,默认值为500。 history 工具程序是一种短期记忆,记录您最近所执行的命令。要看看这些命令,您可以在命令列键入 history,如此将会显示最近执行过之命令的清单,并在前方加上编号。

这些命令在技术上每个都称为一个事件。事件描述的是一个已经采取的行动(已经被执行的命令)。事件是依照执行的顺序而编号,越近的事件其编号码越大,这些事件都是以它的编号或命令的开头字符来辨认的。history 工具程序让您参照一个先前发生过的事件,将它放在命令列上并允许您执行它。最简单的方法是用上下键一次放一个历程事件在您的命令列上;您并不需要先用 history 显示清单。按一次向上键会将最后一个历程事件放在您的命令列上,再按一次会放入下一个历程事件。按向下键则会将前一个事件放在命令列上。  

4. 命令列编辑程序。

BASH shell  命令列编辑能力是内建的,让您轻松地在执行之前修改您输入的命令。若是您在输入命令时拼错了字,您不需重新输入整个命令,只需在执行命令之前使用编辑功能纠正错误即可。这尤其适合于使用冗长的路径名称当作参数的命令时。命令列编辑作业是 Emacs 编辑命令的一部份。您可以用 Ctrl-F 或向右键往前移一个字符,Ctrl-b 或向左键往回移一个字符。Ctrl-d 或DEL 键会删除光标目前所在处的字符。要增加文字的话,您只需要将光标移到您要插入文字的地方并键入新字符即可。无论何时,您都可以按 ENTER 键执行命令。 ;

5. 允许使用者自订按键。

6. 提供更丰富的变量型态、命令与控制结构至 shell 中。  

bash  与tcsh 一样可以从许多网站上免费下载,它们的性质也十分类似,都是整合其前一代的产品然后增添新的功能,这些新增的功能主要都着重在强化  shell 的程序设计能力以及让使用者能够自行定义自己偏好的作业环境。除了上述的五种 shell 之外,zsh 也是一个广为UNIX 程序设计人员与进阶使用者所采用的 shell,zsh 基本上也是 Bourne shell 功能的扩充。

Shell 的使用

不 论是哪一种Shell,它最主要的功用都是解译使用者在命令列提示符号下输入的指令。Shell 语法分析命令列,把它分解成以空白区分开的符号(token),在此空白包括了跳位键(tab)、空白和换行(New Line)。如果这些字包含了metacharacter,shell 将会评估(evaluate)它们的正确用法。另外,shell 还管理档案输入输出及幕后处理(background processing)。在处理命令列之后,shell 会寻找命令并开始执行它们。

Shell 的另一个重要功用是提供个人化的使用者环境,这通常在 shell 的初始化档案中完成(.profile、.login、.cshrc、.tcshrc 等等)。这些档案包括了设定终端机键盘和定义窗口的特征;设定变量,定义搜寻路径、权限限、提示符号和终端机类形;以及设定特殊应用程序所需要的变量,例如窗口、文字处理程序、及程序语言的链接库。Korn shell 和  C shell 加强了个别化的能力:增加历程、别名、和内建变量集以避免使用者误杀档案、不慎签出、并在当工作完成时通知使用者。

Shell  也能当解译性的程序语言(interpreted programing language)。Shell 程序,通常叫做命令文件,它由列在档案内的命令所构成。此程序在编辑器中编辑(虽然也可以直接在命令列下写作程序, online scripting),由 UNIX 命令和基本的程序结构,例如变量的指定、测试条件、和循环所构成。您不需要编译 shell 命令檔。Shell 本身会解译命令档中的每一行,就如同由键盘输入一样。shell  负责解译命令,而使用者则必须了解这些命令能做什么。这本书的索引列出了一些有用的命令和它们的使用方法。

Shell 的功用

为了确保任何提示符号下输入的命令都能够适当地执行。shell 担任的工作包括有:  

1. 读取输入和语法分析命令列  

2. 对特殊字符求值  

3. 设立管线、转向、和幕后处理  

4. 处理讯号

5. 设立程序来执行

Linux下的软件开发工具

在Windows下开发软件有众多工具可以选择,并且都非常好用。常用的工具有VB,VC,C#,DELPHI,JBUILDER,ECLIPS等,可是在linux下找一个比较好的集成开发环境是比较困难的,我说的困难可能是我们对linux下的软件集成开发工具不熟悉吧。

1)Eclipse或Netbean,用java开发程序,用这两种工具比较好,功能强大,而且又都是开源的。并且都是跨平台的集成开发环境。但是如果不想用java写程序的话,就没有吸引力了。

2)Lazarus,是free pascal的集成开发环境,目标是代替delphi,功能比较强大,开源并且跨平台。数据库方面支持odbc,mysql, Firebird/interbase,sqlite等。我在windows下用ODBC连接ms access但没有配置成功。不过lazarus的界面及各个方面同delphi都是相同的。如果熟悉delphi开发的话,用lazarus应该是没有问题的了。

3)kdevelop ,可以用c/c++开发,不过要用Qt。

4)gtk+/gnome+glade+vim,也是一个不错的开发环境,但是不是集成的开发环境。

5)Mono,把Ms的.net移植到linux下了,可以开发.net程序。

6)Anjuta C/C++ IDE,这个是gnome下的集成开发环境。功能很强大。

7)Kylix--,linux下的delphi。