Shell编程

Shell既是Linux的命令解释程序,又是一种程序设计语言。

 

shell的主要功能

 

 

一 alias功能

  alias指令,单纯输入的话,可以显示现有的所有的指令的别名。

  

  具体格式 alias[别名]=[指令名称]

  如alias lll="ls"

 

  如果想要删除这个别名的话,那么久unalias 别名

二 如何使用shell脚本

三 shell中的特殊字符

  # 和Python一样,之后的代码变成注释

  

&

在后台执行进程。

*

匹配任意长度的字符串。

?

匹配单个字符。

[ ]

匹配方括号中的任何一个字符。

[! ]

匹配不在方括号中的任何一个字符。

\

转义字符,使特殊字符失去其特殊含义。

;

命令分隔符。

 

四 输入输出重定向

  有关的四个符号分别为 >和>>和<和<<

  输出重定向

  如果希望命令的执行结果保存到一个文件中而不是在屏幕上输出。

  $ 命令 > 文件名

  比如gcc 1.c     ./a.out   >   2.c    1.c的输出结果就会出现在2.c这个文件中

  

  一个用法,如果想要将当前目录下的所有文件名输入到一个文件xx中,可以   $   ls >  xx

 

  >>和>的用法区别。很明显,>使用过一次之后就会覆盖该文件原有的输出结果。

使用>>可以将结果添加到该文件的结尾的位置。

  比如合并两个文件的操作。w1,和w2合并到myfile

  cat w1 > myfile   #cat 可以一次显示一个文件的所有的内容。

  cat w2 >>myfile 

 

  输入重定向

  一般格式为

 

 

 

  举一个例子 介绍一下 wc命令

  wc  [选项]  [文件名],可以统计一个文件的字节数,单词数,行数

  选项 -c  ,-w,-l,分别对应。没有选项的话就三个都输出。

 

  使用输入重定向完成这个指令,如统计myfile的行数

  代码为$wc -l < myfile

  

  here文件和<<

  能够将分割符之间的作为输入传递给命令

  

下例将一对分隔符“!”之间的正文作为wc命令的输入,统计出正文的行数、单词数和字符数。
   $ wc << !
   this text forms the content
   of the here document, which
   continues until the end of
   text  delimiter.
   !
  4  17  98

 

  将错误输出重定向 

 

   读取到 2>的时候就会把错误输出重定向了。

 

  为运行程序myprog并把错误信息输出重定向到myfile,

可以  myprog 2> myfile

五 管道及组合命令

  一个命令行如果有多条命令的话,需要用分割符;分割开。

 

1 管道

  将一个命令的输出作为输入传递到下一个命令 , | 即为管道

  $ 命令1 | 命令2  #即将命令1的输出作为输入给命令2

 

 这个例子讲的很清楚了。

  利用管道操作符连起来就形成了管道线。管道线每个命令都作为一个单独的进程。

 

2 命令的执行次序

  不同的分割符会产生不同的命令执行次序

  下面就四种分割符作说明。

  1. ; 即最常见的分号,命令按前后执行

  2. &  表示在后台进行的命令

  3. && 逻辑执行,只有前面的命令执行成功了,才能继续去执行后面的命令

  4. || 逻辑执行 , 先执行前面的命令,之后前面的失败了,才会去执行后面的命令。

  5 | 管道符号,前面已经说明过了。

 

  Linux中各种命令分割符的优先级如下。

  1. && 和 || 优先级最高,且相同。其他分割符优先级相同。

  2.优先级相同的情况下,从左到右执行命令。

 

  分析如下代码

  date; pwd

  cat temp >> file &

  cp f1,f2 && rm f1

  cat abc|| pwd

3 shell的命令组合

   1 用{}将命令结合在一起

    命令组在本shell内执行,不产生新的进程。

   2 用()将命令结合在一起

    生成一个子进程来执行命令

例:

 

 六 shell 变量

赋值形式上区分,shell不支持数据类型

 

 同python,直接赋值即可说明变量

注意变量说明后 ,使用$ 变量名来使用该变量

posted @ 2019-12-10 16:18  TheDa  阅读(176)  评论(0编辑  收藏  举报