Linux Bash Shell学习(二):目录和通配符
转自: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 上的Cygwin 和MSYS 系统中,以实现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} |