shell 总结

来源:互联网 发布:电影票比价软件哪个好 编辑:程序博客网 时间:2024/05/22 16:46

1. shell 是什么?

         shell是一个命令行解释器,它呈现给你一界面,让你方便的操作计算机。

2. 当在shell提示符下,执行命令行时,shell处理命令行的步骤是什么?

          a,历史替换(如果可用的话)

          b,把命令行划分成词

          c,更新历史(如果可用的话)

          d,处理引号

          e,定义别名替换和函数(如果可用的话)

          g,设置重定向,后台和管道

          h,执行变量替换(如$user, ${HOME} 等)

          i,执行命令替换(如 `date`, $(pwd), 等)

          j,执行文件名替换(如 cat abc.?? , rm *.c等)

          k,执行程序(别名, 内置命令, 函数, 可执行程序,解释器文件-就是脚本文件,第一行指明脚本使用的解释器)

          上面的顺序是摘自unix shell 第二版的,有一点不明白,只有执行到 K 部时,才会根据情况看是否派生子进程来执行程序(如内置命令不派生,可执行程序派生),而这之前就已经执行了重定向等操作,总不会是把重定向设置在父进程上,然后传给子进程吧

3.正规表达式

             正规表达式就是一种规范,模式,具体由其它用它的工具实现,如 grep , sed, awk

4.sed如何工作的?

               sed是一种行编辑器,它每次一行的读入文本行,放入模式空间(pattern space)中,如何对模式空间的行进行模式匹配和命令处理,然后把模式空间内容打印在屏幕上(除非禁止打印),然后清空模式空间再读入下一行进行处理,直到处理完最后一行退出。sed 还有一固定缓存(holding space), 在处理文本行时,可以用命令把模式空间的内容与固定缓冲的内容互相传递或交换。

5.awk

             awk也是一种行编辑器。与sed不同的是,它主要侧重域编辑,认为行(记录)是由域分隔符(FS)分隔的域组成,提供内置变量得到行号,每行域的个数;提供BEGIN模式,即在处理任何行之前执行的命令块;提供END模式,在处理完所有行后执行的命令块;提供丰富的编程元素,编程风格与c语言很相似。

             如果大家想学习shell编程,建议看看unix shell 第二版这本书,讲得很好,就是错字特多。

                        

 

原创粉丝点击