一.shell基础知识

参考网站:http://billie66.github.io/TLCL/book/chap08.html

1.字符“*”--展开

[me@linuxbox ~]$ echo *
Desktop Documents ls-output.txt Music Pictures Public Templates Videos

注:这个”*“字符意味着匹配文件名中的任意字符,就是 shell 在 echo 命 令被执行前把”*“展开成了另外的东西(在这里,就是在当前工作目录下的文件名字)。 当回车键被按下时,shell 在命令被执行前在命令行上自动展开任何符合条件的字符, 所以 echo 命令的实际参数并不是”*“,而是它展开后的结果。

 2.通配符所依赖的工作机制叫做路径名展开,给定一个家目录,它看起来像这样:

[me@linuxbox ~]$ ls
Desktop   ls-output.txt   Pictures   Templates
....

我们能够执行以下的展开:

[me@linuxbox ~]$ echo D*
Desktop  Documents
[me@linuxbox ~]$ echo *s
Documents Pictures Templates Videos

查看家目录之外的目录:

[me@linuxbox ~]$ echo /usr/*/share
/usr/kerberos/share  /usr/local/share

3.算术表达式

[me@linuxbox ~]$ echo $((2 + 2))
4
[me@linuxbox ~]$ echo $(((5**2) * 3))
75

这是一个使用除法和取余操作符的例子。注意整数除法的结果:

[me@linuxbox ~]$ echo Five divided by two equals $((5/2))
Five divided by two equals 2
[me@linuxbox ~]$ echo with $((5%2)) left over.
with 1 left over.

4.花括号展示

[me@linuxbox ~]$ echo Front-{A,B,C}-Back
Front-A-Back Front-B-Back Front-C-Back
[me@linuxbox ~]$ echo Number_{1..5}
Number_1  Number_2  Number_3  Number_4  Number_5

一系列以倒序排列的字母:

[me@linuxbox ~]$ echo {Z..A}
Z Y X W V U T S R Q P O N M L K J I H G F E D C B A

那么这对什么有好处呢?最常见的应用是,创建一系列的文件或目录列表。例如, 如果我们是摄影师,有大量的相片。我们想把这些相片按年月先后组织起来。首先, 我们要创建一系列以数值”年-月”形式命名的目录。通过这种方式,可以使目录名按照 年代顺序排列。我们可以手动键入整个目录列表,但是工作量太大了,并且易于出错。 反之,我们可以这样做:

[me@linuxbox ~]$ mkdir Pics
[me@linuxbox ~]$ cd Pics
[me@linuxbox Pics]$ mkdir {2007..2009}-0{1..9} {2007..2009}-{10..12}
[me@linuxbox Pics]$ ls
2007-01 2007-07 2008-01 2008-07 2009-01 2009-07
2007-02 2007-08 2008-02 2008-08 2009-02 2009-08
2007-03 2007-09 2008-03 2008-09 2009-03 2009-09
2007-04 2007-10 2008-04 2008-10 2009-04 2009-10
2007-05 2007-11 2008-05 2008-11 2009-05 2009-11
2007-06 2007-12 2008-06 2008-12 2009-06 2009-12

 5.双引号

[me@linuxbox ~]$ ls -l two words.txt
ls: cannot access two: No such file or directory
ls: cannot access words.txt: No such file or directory
[me@linuxbox ~]$ ls -l "two words.txt"
-rw-rw-r-- 1 me   me   18 2008-02-20 13:03 two words.txt

7.转义字符

[me@linuxbox ~]$ echo "The balance for user $USER is: \$5.00"
The balance for user me is: $5.00

为了允许反斜杠字符出现,输入”\“来转义。注意在单引号中,反斜杠失去它的特殊含义,它 被看作普通字符。

posted @ 2018-04-02 14:58  秋水潺流  阅读(174)  评论(0编辑  收藏  举报