《UNIX编程环境》——5.10 后记

简介: shell是一种很好的编程语言,虽然它的语法有些特殊。shell属于高级语言,它的操作对象为整个程序。由于shell是交互式语言,所以shell程序能够交互式地开发,可以逐级求精直至它能够令人满意地工作。

本节书摘来自异步社区《UNIX编程环境》一书中的第5章,第5.10节,作者:【美】Brian W. Kernighan , Rob Pike著,更多章节内容可以访问云栖社区“异步社区”公众号查看

5.10 后记

当需要编写一个新程序时,自然立刻会想到如何用你最喜欢的语言来编写这个程序。对我们来说,最常用的语言是shell。

shell是一种很好的编程语言,虽然它的语法有些特殊。shell属于高级语言,它的操作对象为整个程序。由于shell是交互式语言,所以shell程序能够交互式地开发,可以逐级求精直至它能够令人满意地工作。如果是一个面向更多的用户,可以对shell程序进一步改造,使之更精巧和更实用,以满足广泛使用的需要。不能用shell程序高效地解决问题的情况微乎其微。如果遇到这种例外情况,在手中拥有可靠的设计和和工作实现的情况下可以用C语言编写全部或部分程序。(我们在下一章将遵循这种方法。)

UNIX环境下编程有其特有原则—将工作建筑在已有成果之上,而不是白手起家;从小做起,逐步发展;使用各种工具验证新的想法。

我们在本章列举了很多例子,用现有的程序和shell很容易实现它们。有时,只需要重新设置参数就可以工作,如cal程序。有时,shell在一组文件名或一个命令执行序列上执行循环,如watchfor程序和checkmail程序。对于比较复杂的例子,用shell编程比用C语言编程要简洁得多,例如,我们完全可以用20行的shell程序news版本代替350行的C语言程序[sic]版本。

有了一个可编程序的命令语言和许多实用的程序还不够。重要的是所有这些组件能够协同工作!它们采用相同的信息表示和通信格式。每一个组件都出色地完成自己的份内工作,shell则根据你的意愿将它们简单高效地连接起来。这种合作能力正是UNIX程序设计环境如此富有成效的关键所在。

相关历史和文献
get和put来源于Source Code Control System(SCCS),这最早是由Marc Rochkind提出来的(“The source code control system”,IEEE Trans. on Software Engineering,1975)。SCCS是一个比我们上面这些简单的程序更强大和灵活得多的系统,它的目标是在工业环境中维护大型程序。然而,SCCS的基础是同一个diff程序。

相关文章
|
Unix 程序员 C语言
《UNIX编程环境》——导读
本书的目的是传播UNIX程序设计的基本原则,由于这个基本原则是以程序间的关系为基础的,因此我们必须用大量的篇幅专门对单个的工具进行讨论,但同时贯穿了程序组合的主题和运用程序进行创建程序的内容。
1728 0
|
Unix Shell Perl
《UNIX编程环境》——5.9 get和put:追踪文件变动
程序在开发过程中不断地改正错误和增加新功能。版本追踪往往是不可少的。特别是有的用户把程序移植到其他的机器上使用—他们常常跑回来问“在我们的版本之后又有哪些改动”,或者“这个那个错误是怎么改的”。
1569 0
|
Unix Shell
《UNIX编程环境》——5.8 news命令:社团服务信息
我们在第1章提到您的系统可以有一个news命令,用以报告用户社团方面的信息。大部分系统都提供新闻服务,尽管命令名和命令细节有所不同。这里给出一个news命令,不是要代替原有的本地命令,而旨在说明在shell里编写这样一个程序是多么地容易。
1268 0
|
Unix Shell C语言
《UNIX编程环境》——5.7 pick命令:空格和参数
本节书摘来自异步社区《UNIX编程环境》一书中的第5章,第5.7节,作者:【美】Brian W. Kernighan , Rob Pike著,更多章节内容可以访问云栖社区“异步社区”公众号查看
1566 0
|
Unix Shell
《UNIX编程环境》——5.6 zap:使用名字终止进程
kill命令只能通过指定进程号来终止进程。要终止某个后台进程时,一般要运行ps命令以得到进程标识号,然后再把它作为kill的参数输入。通过一个命令程序打印一个参数,再把这个参数手工输入到另一个命令中,这个方法似乎有些笨拙。
1306 0
|
Unix Shell
《UNIX编程环境》——5.4 trap:捕获中断
如果在运行watchwho时突然按下Delete键或挂断电话,在目录/tmp中,将保存一个或两个临时文件。Watchwho应该在退出之前清除这些暂存文件。我们需要一定的手段来检测各种中断事件,并进行恢复处理。
1606 0
|
Unix Shell Perl
《UNIX编程环境》——5.3 while和until循环:观察情况
在第3章中,for循环用于一些简单的迭代程序。一般地,for对一组文件名进行循环,如在for i in .c中;或对shell程序的所有参数进行循环,如for i in $。但实际上,shell中的for循环可以有更大的用途,如在which里的for循环。
1897 0
|
Unix Shell Perl
《UNIX编程环境》——5.2 which
建立自己的命令版本,如cal命令的新版本,会带来一些其他的问题。最明显的例子是,如果Mary一起工作,并且以mary登录,则此时的cal还是标准的版本,除非Mary把新的cal命令连接到她的bin目录里。你可能会非常疑惑—原先的cal命令给出的错误信息不足以使人弄清发生错误的原因。
1890 0
|
Unix Shell
《UNIX编程环境》——第5章 shell程序设计 5.1 定制cal命令
和其他很多命令一样,shell程序的使用细节通常可以通过实践很快地掌握。shell手册常常不易于理解,而一个好的例子有时是将问题解释清楚的最好方法。鉴于这一原因,本章围绕着程序实例而不是围绕着shell的特性来组织,是shell编程指南,而不是shell所有功能的罗列。
1708 0
|
Unix 程序员 编译器
《UNIX编程环境》——1.5 UNIX系统的其余部分
UNIX系统中的内容远远多于本章中所讨论的内容,也远比本书的内容多。现在,你应可放心地使用系统,特别是要尽量使用手册。当对如何使用命令有疑问时,应查询手册。
1038 0