[连载]笨兔兔的故事

关于Ubuntu的故事或对Ubuntu的感慨及心情
回复
头像
gypublic2007
帖子: 4
注册时间: 2009-10-05 12:19

Re: [连载]笨兔兔的故事

#1336

帖子 gypublic2007 » 2010-04-27 16:32

来顶个,第一次在这里发贴,在坛子里潜水好久,从去年开始关注蜗牛的这个文章。
:em11 :em11 :em11 :em11 :em11
头像
懒蜗牛Gentoo
论坛版主
帖子: 7362
注册时间: 2007-03-02 17:36
系统: Linux Mint

Re: [连载]笨兔兔的故事

#1337

帖子 懒蜗牛Gentoo » 2010-04-27 17:24

又赚到一个处女帖 :em04
虽然世上没有完美的东西,但这并不影响我们追求完美,因为只有偏执狂才TMD能成功。
10.04新手入门——笨兔兔讲述自己的故事
woodlynn
帖子: 23
注册时间: 2008-09-21 20:25

Re: [连载]笨兔兔的故事

#1338

帖子 woodlynn » 2010-04-28 23:25

:em11 :em11 :em11 :em11 :em11 :em11 :em11 哈哈又更新了,蜗牛哥现在是俺的精神支柱了啊!
头像
remeber
论坛版主
帖子: 13030
注册时间: 2009-01-06 15:18
来自: 人间

Re: [连载]笨兔兔的故事

#1339

帖子 remeber » 2010-05-01 13:36

已批阅!! :em09
牛哥写成武侠了。。哈哈
“有一种被人抛诸脑后的过去,包含一些不该遗忘的点点滴滴。欢笑之余,我将故旧拾起,才刹见自己的薄情。人世间似乎存在着某种公平,每个人都曾被抛掷在他人的遗忘中;而今你所有哽咽难宣的话语,也正是你曾为人所期盼,却永远听不见的字句。” —赫曼 赫塞
头像
懒蜗牛Gentoo
论坛版主
帖子: 7362
注册时间: 2007-03-02 17:36
系统: Linux Mint

Re: [连载]笨兔兔的故事

#1340

帖子 懒蜗牛Gentoo » 2010-05-01 22:19

(90) shell
说起编程,编程就得有语言。语言有很多种,可以分成两类:编译型和解释型。编译型就是像C语言那样,用C语言写出来的源代码就像图纸,前面说过了,需要GCC施工队来把图纸变成真正能够运行的程序。解释型语言就不需要施工队了,解释型的语言写出来的代码不是一份图纸,倒像是一份任务清单,上面用某种语言写明先做什么,后做什么,最后做什么。写好之后保存成一个脚本文件,随便起个名字,然后赋予可执行权限,就可以直接执行了。有的人怀疑,这个文件写出来就是一个文本嘛,又不是一个程序,他怎么会自己跑到内存里去执行?问的好,脚本文件当然不可能自己跑到内存里运行,除非是闹鬼了。解释型的语言既然是一份任务清单,那么就得有一个可以照着这个列表执行命令的家伙,我们管这个角色叫做解释器。

比如我们说的shell编程,shell有很多种,我这里默认的shell是bash,他就是shell脚本程序的一个解释器。主人随便建一个文件,里面写上:
echo “Hello World!”
然后保存成ttttt文件,赋予可执行权限,然后运行./ttttt。这时候,首先,我会判断这个文件可执行,并且是个一文本文件,那么说明这是个脚本,是个解释型语言的脚本。然后根据当前系统的设置,找到默认的shell,比如我这里默认的shell是bash,于是我叫醒bash,把这个脚本交个他,让他去执行。那如果不想用默认的shell呢?那就在脚本文件的第一行明确写明要用什么shell执行。格式类似这样“#!/bin/bash”,记住,这行必须写在脚本的最开头,这个好理解吧。总不能我打开了这个脚本,叫来了默认的bash执行了一半了,才发现您在中间写着一行:#!/bin/csh,这时候才知道脚本应该叫c shell来执行,你这不捣乱么。所以,一定要在脚本的最开始搞清楚这个脚本是用于哪个shell的。

shell有很多种,比如Bourne Again Shell,C Shell, K Shell,Debian Almquist SHell等等。我们Linux最常用的就是Bourne Again Shell,也就是BASH。关于这个shell的历史,这怕是要追溯倒Unix的年代……

那个时候,最初的UNIX系统的shell,是那个研究铃铛(Bell)的实验室里的一个叫做Ken Thompson发明的,叫做Thompson shell。这个shell是一个很简单的程序,它不过是作为UNIX系统的用户接口而已。(就像现在bash作为linunx系统的命令行接口。用户输入的命令都是由bash来解释和执行的。)那时候的Thompson shell顶多是可以把几条命令一起写在一个文件里来执行,类似批处理,没有流控制,没有变量,没有函数,所以还完全谈不上shell编程。后来觉得有必要加入一些条件判断阿,跳转阿之类的功能,就依靠外部命令实现了。与此同时,铃铛实验室的另一个牛人,Steve Bourne,也设计了一个shell,叫做Bourne shell。(他们都生怕别人不知道程序是谁写的,都以自己的名字命名)这个shell就强大些了,有了基本的流控制源语,if else之类的。这俩人都力挺自己设计的shell,渐渐的两种shell有了各自的追随者。有觉得这个简洁的,有觉得那个好用的。有道是一山不容二虎,到了1970年代末,打起来咯~ 由于两个shell互相不兼容,而一个和平统一的UNIX弄两套shell是不大合适的,(大概是因为那时候他们没有好好学习一国两制的理论)所以必须确定一个UNIX 的标准shell。于是,一场旷日持久的战斗打响了,两派相互争论各自shell的优缺点,您看见K派跟G帮怎么吵架的了么?估计他们也差不多。最终,以Bourne shell的胜出结束,Bourne shell作为默认的shell出现在UNIX 第7版系统中,其二进制程序被命名为sh放在了/bin。直到现在,linux发行版中依然都存在着/bin/sh这个文件,不过现在这个sh一般都只是个链接了,链接倒默认的shell。

那bash呢?那是1987年,一个叫做Brian Fox的家伙(狐狸大脑?汗-_-b)创作的,这个shell兼容Bourne shell,算是对Bourne shell的改进版,于是叫做Bourne Again Shell,简称Bash。这个shell成为了GNU计划默认shell,应用在绝大多数的类UNIX系统中。
虽然世上没有完美的东西,但这并不影响我们追求完美,因为只有偏执狂才TMD能成功。
10.04新手入门——笨兔兔讲述自己的故事
头像
wangdu2002
帖子: 13284
注册时间: 2008-12-13 19:39
来自: 物华天宝人杰地灵

Re: [连载]笨兔兔的故事

#1341

帖子 wangdu2002 » 2010-05-02 2:06

:em11 先顶后看。 :em11
行到水穷处,坐看云起时。
海内生明月,天涯共此夕。
--------------------吾本独!
头像
懒蜗牛Gentoo
论坛版主
帖子: 7362
注册时间: 2007-03-02 17:36
系统: Linux Mint

Re: [连载]笨兔兔的故事

#1342

帖子 懒蜗牛Gentoo » 2010-05-03 11:07

(91) 乱七八糟

除了shell以外,我们Linux下还有很多很好用的脚本语言,比如perl就是其中之一。Perl是一种很有名的脚本语言,是由一个叫做LarryWall的人,在1987年设计的。“它也是shell编程么?”不,它不是shell,它是一种脚本语言,shell也是一种(或者说一类)脚本语言,但是脚本语言不一定就是shell。越说越乱了是吧。
什么是shell?是海鲜馆的扇贝?是汽车用的那种润滑油?都不是,shell是一种人机交互的界面,之所以用shell这个词,是用来对立于kernel,也就是我,内核。从根本上来说,计算机的运作就是用户(就像我的主人那样的人类)和我的交流。可是我们是不可能直接交流的,所以,就需要给kernel套上一个可以与人类交流的”壳”,也就是shell。各种各样的shell虽然语法上会有些不同,但是都同样是解释用户的命令,然后向我汇报用户到底想干什么,之后我再去叫醒相应的软件或者我自己亲自去干活。Perl呢,就不负责这种工作,而只是一个脚本语言,你可以用它编程。虽然Perl编出来的程序要不C语言编出来的程序在执行的时候耗费更多的CPU——因为是解释型的嘛。但是编写的过程相对简单而快速,很适合写一些偶尔需要一些简单功能的脚本程序。写Perl脚本跟写shell脚本没什么区别,还是随便找个文本编辑器,按照Perl的语法写成一个脚本文件,在第一行写明#!/usr/bin/perl,说明这是一个Perl脚本,需要/usr/bin/perl程序来解释。
首行的这个指名解释器的写法没什么神秘,只是为了简便而定义的一种写法。如果你不写这行也行,比如你在当前目录下有一个ttttt脚本,是个perl脚本,那么你完全可以运行/usr/bin/perl ./ttttt来执行。如果写了#!/usr/bin/perl这行,那么直接运行./ttttt的时候,其实我也是先读取第一行,发现,哦,原来是一个需要perl程序执行的文件,然后我就会运行/usr/bin/perl ./ttttt命令来执行。效果是一样的,只是省的你打了而已。如果你写#!/bin/cat 呢?语法上也是可以的,运行它的时候,,我还是先读取第一行,发现,哦,原来是一个需要cat程序执行的文件,然后我就会运行/bin/cat ./ttttt。效果?你说呢。
虽然世上没有完美的东西,但这并不影响我们追求完美,因为只有偏执狂才TMD能成功。
10.04新手入门——笨兔兔讲述自己的故事
头像
wqoldbig
帖子: 273
注册时间: 2010-03-23 23:08

Re: [连载]笨兔兔的故事

#1343

帖子 wqoldbig » 2010-05-03 17:36

写得真不错,就适合我这样的新手学习,慢慢看,哈哈
yeshiping
帖子: 11
注册时间: 2010-05-02 19:42

Re: [连载]笨兔兔的故事

#1344

帖子 yeshiping » 2010-05-06 23:18

这们哥们,做的教程真的很棒!
kycoos
帖子: 2
注册时间: 2010-05-06 23:27

Re: [连载]笨兔兔的故事

#1345

帖子 kycoos » 2010-05-06 23:34

做的教程,很棒很精采!
头像
懒蜗牛Gentoo
论坛版主
帖子: 7362
注册时间: 2007-03-02 17:36
系统: Linux Mint

Re: [连载]笨兔兔的故事

#1346

帖子 懒蜗牛Gentoo » 2010-05-07 9:02

来了很多新同志,欢迎欢迎~ :em11
虽然世上没有完美的东西,但这并不影响我们追求完美,因为只有偏执狂才TMD能成功。
10.04新手入门——笨兔兔讲述自己的故事
woodlynn
帖子: 23
注册时间: 2008-09-21 20:25

Re: [连载]笨兔兔的故事

#1347

帖子 woodlynn » 2010-05-07 23:13

YEAH!顶蜗牛哥!
头像
wangdu2002
帖子: 13284
注册时间: 2008-12-13 19:39
来自: 物华天宝人杰地灵

Re: [连载]笨兔兔的故事

#1348

帖子 wangdu2002 » 2010-05-07 23:15

继续审阅蜗件新篇。。。 :em11
行到水穷处,坐看云起时。
海内生明月,天涯共此夕。
--------------------吾本独!
头像
懒蜗牛Gentoo
论坛版主
帖子: 7362
注册时间: 2007-03-02 17:36
系统: Linux Mint

Re: [连载]笨兔兔的故事

#1349

帖子 懒蜗牛Gentoo » 2010-05-09 15:19

(92)文泉驿

今天说说文泉驿。

文泉驿是个什么呢?用Linux的中国人不知道文泉驿那就白混了。这个文泉驿是一套大名鼎鼎的中文字体。各位要有兴趣,我说说,您听听,在想当初,很久很久以前(对你们人类来说其实也不算久啦,也就6,7年以前),那时候的Linux日趋完善,不少国内的开源同好们,都来尝试安装各种各样的Linux。虽然硬件兼容的越来越多,应用程序的安装越来越便利,但中华儿女们安装了Linux之后无一例外的遇到了中文化的问题——没有一个合适的中文字体。要知道,Linux是自由的,开源的,其中很多是免费的。那么自然不可能在免费的Linux中带有任何需要付费的字体。那Linux上自带的免费字体是从哪来的呢?都是世界各地热心的爱好者们贡献的。爱好者们自己创作一套字体,然后无偿贡献出来,给大家使用。因此,有很多优秀的,免费的英文字体可以用。可为什么其他国家有热心爱好者贡献字体,就没有热心的中国人贡献字体呢?是因为中国人懒?不是。是因为中国人自私?也不是。是因为中国人少?靠,更不是了。答案很简单,因为中国字多!人家做一套英文字体,总共也就二十六个字母的大写加小写,外带十个数字和一些标点符号,加在一起不超过一百个。一个人花一周时间就能做完了。汉字有多少?找本新华字典翻开前言看看——收录汉字一万个左右!这要是让一个人把这一万个汉字都做成电脑中的字体,还不得累吐了血阿。就算是只作常用汉字也得有四千多个,这还不算繁体字和各种数字,标点。那么那时候有没有中文字体呢?当然是有的,否则难道十年以前中国人都不用电脑?可是一般中文字体都是需要收费使用的——这个很合理吧,这么困难的东西,人家一个人(也可能几个人)费了好大劲作出来了,人家也得穿衣吃饭,养家糊口嘛。就算有几个不免费的中文字体,也是有很多问题,丢字阿,显示效果不好阿之类的。所以那个时候,Linux的中文用户就只有忍受着质量差,总丢字的中文字体,或者偷偷的把其他系统下的付费字体复制过来用。说起来偷付费字体这件事,虽然不至于今天偷来用了,明天警察就来敲你家门,可毕竟不算光明正大不是。

直到2004年,中文字体的事情有了转机,带来转机的,是一位美国哈佛大学医学院的博士。这位仁兄倒不是来发扬国际主义精神的,他之所以关注中文字体,是因为他本身是个中国人——房骞骞博士。不知道是不是因为他家房子被拆迁了,所以被逼无奈去美国当博士去了,反正他在接触到Linux的时候,发现缺少中文字体是个很头疼的事情。他也知道要是自己作出整套中文字体一定要吐血的,但是他还知道,积少成多,集腋成裘,众人拾柴火焰高,一个好汉三个帮,一个篱笆三个桩……(此处略去类似俗语若干)他利用网络为平台,创建了“文泉驿”项目,目的是要创作出一套高质量的,免费的中文字体。他自己动手编码,设计网站,简化设计字体的复杂程度,把汉子字体的设计搬到了网页上。这让每一个热心的志愿者都可以按照网站上的指导,完成一个个汉字字体的设计。就这样借助全球草根志愿者的力量,他开始了“万里长征”。经过数年的连续奋战,至今取得一项永留史册的硕果。这就是“文泉驿”汉字库,其中包括点阵和矢量字体。
虽然世上没有完美的东西,但这并不影响我们追求完美,因为只有偏执狂才TMD能成功。
10.04新手入门——笨兔兔讲述自己的故事
widget
帖子: 104
注册时间: 2009-03-15 19:33

Re: [连载]笨兔兔的故事

#1350

帖子 widget » 2010-05-09 18:26

咦?沙发?
回复