Shell 学习笔记(一)特殊字符

1、点(.)字符匹配.作为正则表达式的一部分,匹配字符时,单点(.)表示匹配任意一个字符

2、: [冒号].

         空命令 这个命令意思是空操作(即什么操作也不做). 它一般被认为是和shell的内建命令true是一样的

                                e.g. 死循环

                                        while :

                                        do
                                          .....

                                        done

         域分割符。比如说在/etc/passwd和环境变量$PATH里. /usr/local/bin:/bin:/usr/bin:。。。。

3、* 通配符[星号].

         用于匹配文件名扩展的一个通配符.它自动匹配给定的目录下的每一个文件

         也用于正则表达式中匹配任意数字字符

         两个星号(**)表示求幂运算符

4、$

         变量替换 (引用一个变量的内容).

         正则表达式,行的结尾

$$  进程ID变量

5、() 

由圆括号括起来的命令是新开一个 子shell来执行的. 因为是在子shell里执行,在圆括号里的变量不能被脚本的其他部分访问。因为 父进程(即脚本进程)不能存取子进程(即子shell)创建的变量
数组初始化,Array=(element1 element2 element3) 

6、{} 

a)扩展支持. {xxx,yyy,zzz,...}

   cat {file1,file2,file3} > combined_file     # 连接file1,file2,和file3的内容并写到文件combined_file里去.

     

  echo {file1,file2}\ :{\ A," B",' C'}

        file1 : A file1 : B file1 : C file2 : A file2 : B file2 : C

          b)花括号括起的代码块可以引起输入输出的I/O重定向

             {echo "a" ; echo "b"} > file1

7、 |

       管道以新进程方式运行

 

8、 -

       用于stdin或stdout重定向的源或目的

       e.g.  当用管道时,对于多参数,就可以用-解决啦,重定向源: grep Linux file1 | diff file2 -

                                          重定向目的: tar -cvf - file1 > file2.tar

 

9、!

      感叹号表历史命令

      在命令行上,把感叹号"!"放在双引号里执行命令会出错(译者注:比如说:echo "hello!"). 因为感叹号被解释成了一个历史命令. 然而在一个脚本文件里,这么写则是正确的,因为在脚本文件里Bash的历史机制被禁用了。

10、双引号 单引号

      使用双引号除了变量名前缀($)、后引符(`)和转义符(\)外,其余均只解释为字面

      在单引号内,除了字符',每个特殊字符都只是字面的意思。单引号(全局引用)比双引号(部分引用)更严格的处理引用部分。

      若想打印 ‘号: echo \'

                              echo 'can' \' 't'         #can ' t

                              echo 'can'\''t'           #can't

 

11、转义

      \v  :   垂直制表符

      \a  :   蜂鸣声(禁止操作声音)

     echo -e “\n”            ==         echo $'\n'

     $'\xxx'  : 转义字符取值     e.g. ABC=$'\101\102\103\010\t'

    

     出乎意料:

     echo \z                     #  z
     echo "\z"                  # \z    
     echo `echo \\z`       # z      

     echo `echo \\\z`      # \z     未转义过的还可加\转义,已转义过的之前\只能输出字面啦

     echo `echo "\z"`      # \z     双引号一加,就绝对化啦
     

     转义\的赋值

     variable=\
     23skidoo
     echo "$variable"        #  23skidoo   这样就能工作,因为\将其后的换行符转义了哦

12、快捷操作

      ctl+D:标准输入结束
      ctl+H:Backspace
      ctl+K:在控制台或 xterm 窗口输入文本时, Ctl-K 会删除从光标所在处到行尾的所有字符
      ctl+L:清屏
      ctl+U:删除从光标到行首的一行输入.在某些设置里, Ctl-U 删除整行的输入,而不管光标的位置.
      c tl+W:删除前面的词,直到遇到空格

猜你喜欢

转载自fionajw.iteye.com/blog/899153