例谈Bash与Tcsh的主要区别

来源 :电脑知识与技术·学术交流 | 被引量 : 0次 | 上传用户:liandakj2005
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:Bash与tcsh是目前Unix/Linux操作系统中两种流行的shell。通过举例,对这两种shell常用的功能和特性进行了对比,内容包括变量赋值、数组、环境设置、命令参数、数值计算、条件流程控制、循环语句和信号处理等。这些比较是对这二者主要区别的一个很好的总结,能够为bash与tcsh的学习和使用者提供便利和帮助。
  关键词:Unix;Linux;Bash;Tcsh
  中图分类号:TP316文献标识码:A文章编号:1009-3044(2008)33-1390-03
  Main Differences between Bash and Tcsh by Examples
  SHI Qing-dong
  (Motorola (China) Technologies Ltd., Beijing 100102, China)
  Abstract: Bash and tcsh are two kinds of popular shell in the present Unix/Linux operating system. Through some examples, this paper has carried on the contrast to more commonly used functions and the characteristics of the two kinds of shell, the content including variable assignment, array, environment setting, command parameters, numerical calculus, condition flow control, looping construct, signal-catching and so on. The contrast is a very good summary that distinguish the two, which can provides convenience and help for the bash and tcsh learners and users.
  Key words: Unix; Linux; Bash; Tcsh
  1 引言
  Shell是提供用户与操作系统之间交互的特殊程序,它是一个解释器,解释用户输入的命令。Tcsh与bash是Unix/Linux操作系统中两种最常用的shell。Bash,即Bourne Again shell,是Bourne shell的超集,是绝大多数Linux操作系统的缺省shell,直观而又灵活,适于初学者使用,同时对高级和专业用户来说也是一个强有力的工具。Tcsh,即Turbo C shell,是csh(C shell)的超集,语法类似于C语言,因为C语言的广泛使用,tcsh受到广大程序员的青睐。下面通过举例,谈谈二者主要的不同点。
  2 变量赋值
  给变量赋值,bash直接赋值即可,tcsh则需要使用set命令(见表1)。
  Bash与tcsh都可以将某个命令的输出赋给一个变量,赋值时,命令的两边为反引号,即`command`,bash还可以用$(command)。下例,将date命令的输出(当前日期)赋给变量today(见表2)。
  Bash与tcsh都能够通过键盘输入对变量赋值。Bash使用read命令读取键盘输入,tcsh使用set命令,并有两种方法,一种使用"$<"(两边为双引号),另一种使用`line`(两边为反引号),(见表3)。
  3 数组
  Bash与tcsh都支持数组,其赋值方法与普通变量的一致。需要注意的是,bash数组的下标从0开始,tcsh的从1开始(见表4)。
  修改某个元素的值,并显示数组所有元素及元素个数(见表5)。
  4 环境设置
  对于bash用户,可以修改其主目录下面的隐藏文件.bashrc来设置自己的环境; tcsh相应的文件是.tcshrc。最常见的环境设置项包括环境变量、别名和系统提示。
  4.1 环境变量设置
  设置环境变量时,bash使用export命令,tcsh使用setenv命令。例如,在搜索路径后面添加/usr/sbin(见表6)。
  4.2 别名设置
  设置别名时,bash需要带等号,tcsh不能带等号。下列,设置别名后,运行xe就相当于运行/usr/bin/xemacs(见表7)。
  4.3 系统提示设置
  对于bash,通过设置内置变量PS1来设置系统命令行提示符,比较常见的是将PS1设为"[\h] \w \$ ",\h表示机器名,\w表示当前工作目录,当前工作目录为用户的主目录时显示为~,\$显示为$。Tcsh相应的内置变量是prompt,比较常见的是将prompt设为"[%m] %~ %# ",%m表示机器名,%~表示当前工作目录,同样,当前工作目录为用户的主目录时显示为~,%#显示为>。下列当中,bash环境的机器名为terrylnx01,tcsh环境的机器名为margesrv02(见表8)。
  对PS1和prompt的设置,都各自有很多可选项,这里就不一一列举了。此外,bash还有PS2、PS3和PS4等用于设置系统提示的内置变量,tcsh还有prompt2和prompt3等内置变量。
  5 命令参数
  Bash和tcsh脚本都可以带参数,bash通过$1、$2、$3等读取参数;tcsh既可以用$1、$2、$3,也可以用$argv[1]、$argv[2]、$argv[3]等读取参数。Bash通过$#得到参数个数;tcsh则用$#argv,也可以用$#得到参数数量。下面两段脚本作用相同,先打印人数(参数个数),然后向第一个人(参数)说Hello(见表9)。
  6 数值计算
  Bash的数值计算要么在双括号中进行,要么在let后面进行;tcsh的数值计算在@后面进行,@的后面和双目运算符的两边必须有空格(见表10)。
  7 条件流程控制
  7.1 条件判断
  Bash与tcsh对于两个整型数的比较判断符不一样,见表11。
  对于字符串,tcsh只能比较两个字符串是否相等,而bash能够按照字典顺序判断两个字符串的大小关系。判断字符串是否为空串,bash可以用“-z $string”,而tcsh只能通过与空串的比较来判断(见表12)。
  7.2条件控制
  Bash和tcsh都有if、if/else、if/elseif/else和switch/case等条件控制语句,二者条件控制语法的思想是一致的,具体的语法是不同的。表13中两段脚本的作用相同,根据分数score的值,输出及格Pass或者不及格Fail。
  下面两段脚本的作用也是相同的,变量day的值为1、2、3时,对应地输出Monday、Tuesday或Wednesday(见表14)。
  
  
  8 循环语句
  Bash支持while和until循环,tcsh支持while循环而不支持until循环。下面两段脚本的作用相同,计算1 2 … 100的值,结果存储在变量sum中(见表15)。
  Bash支持for循环,tcsh也支持,但关键字是foreach。下面两循环语句作用相同,将主目录下的所有的txt文件备份,文件名后面加“_bak”作为备份文件名(见表16)。
  另外,tcsh支持goto和repeat语句,bash不支持。例如,repeat 5 uname就是执行5次uname命令。
  9 信号处理
  Bash用trap命令捕捉信号以及采取相应的处理动作,语法格式为trap ’command-list’ signal。Tcsh相应的命令为onintr,语法格式为onintr [-| label],此命令控制tcsh在被中断时的动作:不带任何参数,将采取默认的动作,即中断shell,回到脚本开始运行的地方;如果带-参数,则忽略中断;如果用label参数,tcsh将执行goto label,即执行label标号后面的命令。下面两段脚本的作用相同,每2秒打印一次“Program is running”,当输入Ctrl-C时,打印“Interrupt”并终止运行(见表17)。
  
  10 结束语
  Bash与tcsh都拥有各自的内置命令和变量,二者间不是一一对应的,有些能够找到对应的命令或变量,有些则不能,从前面的内容可以发现这一点,再例如,bash支持函数和select语句,tcsh不支持。
  以上讲述了bash与tcsh的主要不同之处,所举的例子大多点到为止,但对这二者的主要区别是一个很好的总结,为掌握了其中一种shell想使用另一种的用户提供了便利,也为已经熟悉了这两种shell,仍时常弄混的用户提供了帮助。
  
  参考文献:
  [1] 邢国庆.UNIX从入门到精通(普及版)[M].北京:电子工业出版社,2006.
  [2] 孟庆昌,牛欣源. Linux教程[M].2版.北京:电子工业出版社,2007.
  [3] Quigley E.Linux Shell实例精解[M].吴雨浓,译.北京:中国电力出版社,2002.
其他文献
书名:走向语文素养的阅读教学  作者:梁增红  出版社:华东师范大学出版社  出版时间:2021年  ISBN:9787576012736  定价:49.8元  阅读教学一直是语文教学中的重点。通过阅读教学培养学生的语文核心素养是当前语文教学的难点,对阅读教学的理论创新和实践探索也是当下语文教育教学研究的热点。华东师范大学出版社出版的《走向语文素养的阅读教学》,是语文特级教师梁增紅基于多年的一线教
摘要:嵌入式系统的Internet网络化的研究与应用是近几年来嵌入式应用领域的一个研究热点。该文针对应用广泛的ARM7系列的处理器为核心的嵌入式系统,对网络层协议进行了研究分析,提出了基于嵌入式封装、分用、重组方案、附属协议ICMP的回显应答功能等方案,使之适应嵌入式系统。  关键词:嵌入式系统;网络层协议;ICMP协议  中图分类号:TP393文献标识码:A文章编号:1009-3044(2008
摘要:该文介绍了RFID技术在载货车辆称重系统中的应用,并对RFID在这个系统中数据安全问题进行详尽的分析同时给出了认为比较合理的安全策略。  关键词:RFID;安全;假名标签;Key值更新随机Hash锁  中图分类号:TP391文献标识码:A文章编号:1009-3044(2008)34-1755-03  Weight Automation Management System Combining
摘要:Sobel算子是图像边缘检测中常用的方法之一,利用像素的左、右、上、下邻域的灰度加权算法,根据在边缘点处达到极值这一原理进行边缘检测。该方法不但产生较好的检测效果,而且对噪声具有平滑作用,可以提供较为精确的边缘方向信息。本文提供了利用Sobel算子实现灰度图像边缘检测的C 源程序。  关键词:边缘检测;Sobel算子;梯度;噪声  中图分类号:TP183文献标识码:A文章编号:1009-3
摘要:在VB中变量的数据类型有很多种类,如字符型串型、数值型、日期型、布尔型等。还有一种特殊类型:可变类型(Variant)。定义了一个可变类型变量后,该变量可以存放任何类型的数据(数值、字符、日期等),这样在给变量赋值时就不用对数据进行转换了,VB系统会根据赋給变量的值的不同自动进行数据类型的转换。  关键词:变量;数据类型;可变类型;程序设计  中图分类号:TP311文献标识码:A文章编号:1
摘要:信息技术与通讯技术的发展为微格教学系统奠定了基础并且提供了新的契机,本文对微格教学系统先进行分析,介绍了微格教学系统走向数字化和网络化的优势,并对基于网络的数字微格教学系统加以设计并实现。  关键词:微格教学;数字微格;网络  中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)21-30474-03    Design of Microteaching Enviro
摘要:随着多媒体教育技术飞速发展,教学过程中多媒体技术得到了广泛的应用,本文针对多媒体技术在AutoCAD教学应用中存在的问题进行了分析,通过说明多媒体技术的优点,结合传统的教学方法,不仅可以提高教学质量,还能促进学生的学习兴趣。最后针对存在的问题提出了一些科学的应用多媒体的方式和方法。  关键词:多媒体;课件;教学方式  中图分类号:TP391文献标识码:A文章编号:1009-3044(2008
摘要:Access2003软件具有强大的数据库管理功能,同时又具有操作简单,易于学习和使用的优点,十分适合医院的基层人员在管理医疗械是使用。  关键词:Access;医疗器械管理  中图分类号:R197文献标识码:B文章编号:1009-3044(2008)22-835-02  Microsoft Access2003 (以下简称Access)是Office2003的一个套装程序,普遍装于近年出售的
摘要:随着社会主义新农村建设的不断深入,农村人民生活水平的不断提高,新农村的规划和管理也相应的提高到一个新的层次。运用现代技术手段提高新农村发展规划水平和建设的可视化效果,本文结合适普公司IMAGIS软件,对新农村建设的三维场景问题进行讨论,并且根据三维地理信息系统的原理和方法来建立农村的三维模型场景,给出了系统空间数据和属性数据的管理方法。  关键词:IMAGIS;三维地理信息系统;三维建模;高
摘要:对基于IE内核(如IE,Maxthon)与基于Gecko内核(如Firefox)的浏览器的网页内容获取与分析的技术进行了研究,采用Visual C 6.0为平台,基于COM技术和微软的MSAA技术,采用了多种方式实现了基于以上两类不同内核的浏览器的网页内容获取,并对这几种获取方式进行了优劣比较。  关键词:COM; DOM; MSAA; IE; Gecko; windows编程  中图分