转自:http://blog.csdn.net/flowingflying/archive/2009/09/21/4576782.aspx

先讲历史:第一个重要的shell是Bourne shell,他在1979年Unix version7中加入,即sh,很多UNIX的应用的管理仍然依赖它。第一个广泛使用的其他shell是几年后C shell,因为他和C编程有些相似。还有就是Korh shell,他集合了前面两者的优点并加上自己的特点,但是虽然下载是免费的,作为一个商业的shell,他在某些场合使用时需要付费的。而bash,即 Bourne Again shell是免费,他提出一个发布的方式,copyleft,有FSF(Free Software Foundation)的Brain Fox提供的,后来又Chet Ramey维护和发布新的版本,在GNU(GNU's Not Unix)中使用。他取缔了所有和商业性质与有关的UNIX部分。

  在wiki是这样描述bash:

bash 是一个为GNU 项目编写的Unix shell 。它的名字是一系列缩写:B ourne-A gain SH ell — 这是关于Bourne shell (sh)的一个双关语(Bourne again / born again)。Bourne shell是一个早期的重要shell,由Stephen Bourne在1978年前后编写,并同Version 7 Unix一起发布。bash则在1987年由Brian Fox创造。在1990年,Chet Ramey成为了主要的维护者。

bash是大多数Linux 系统以及Mac OS X v10.4 默认的shell,它能运行于大多数Unix风格 的操作系统之上,甚至被移植到了Microsoft Windows 上的CygwinMSYS 系统中,以实现windows的POSIX 虚拟接口。

  在现在的desktop linux中,都是bash,倒是少了我们去设定bash的方式。Linux都支持sh,如果可以在命令行中敲入sh,尽可以进入sh模式。不过我们有 bash,没必要进去sh。在login后,可以通过Ctrl-D来进行logout,这种方式我好像没有用过,不过使用exit或者logout一样可 以达到目的,就没比较记下这么多的快捷键。

  bash中的间隔符合可以是空格或者tab。

  接着介绍文件结构和读取方式,这些都很熟悉,直接翻过去。有一些我们很少使用的,下面列举一下:

  • 例如~user,表示进入user的home directory,而我们一般很少跨用户使用,~/user,表示使用我们home目录下面的user,例如是/home/wei/user。
  • cd相当于cd ~。
  • 使用cd –将返回上次位置。

下面例举了一下通配的处理以及大括号的用法:

wildcard 说明 例子
匹配一个字符 a?b,表示三个字符,中间的为任意
* 匹配一个或者多个字符 a*b,表示开始为a,结束为b的字符串
[set] 表示在set中定义的一个字符 例如[abc],以及[a-zA-Z0-9]
[!set] 表示不在set中定义的一个字符 例如[!a-z],如果我们希望!包含在set中,可以使用\!,例如[\!.;]
{a,b,c} 表示三个字符,分别是a,b,c,可以认为只某种组合方式 例如a{df,d,s},表示adf,ad和as
{a..d} 表示一个范围 例如{a..d},表示a,b,c,d。{}表示至少有两个以上的组合,所以一定需要逗号,或者表示一个范围的..例 如:echo a{x,y},得到ax ay,而echo a{x},得到a{x}

发表评论

您的电子邮箱地址不会被公开。