现在的位置: 首页 > 操作系统 > 正文

linux期末复习知识点小结(三)—— Shell

2019年08月12日 操作系统 ⁄ 共 2955字 ⁄ 字号 评论关闭

初识shell

shell是操作系统提供的命令接口,其实就是一个命令解释器。



Unix的多种shell

Bourne shell

    Bournshell(sh)是标准的UNIX shell ,用来管理系统。大多数系统管理脚本,如rc启动和停止脚本,关机脚本,都是Bourneshell脚本,这是管理员常用的Shell功能。Bourne shell是AT&T公司的产品,闻名于它的简洁,紧凑,快速。Bourne Shell默认的提示符是美元符号($)

v   C shell

    C Shell(csh)伯克利分校开发的,它增加了一些功能,如命令行历史,别名,内建算术和作业控制。C Shell延续了Bourne Shell的用户交互方式,但管理员更喜欢Bourne Shell脚本方式,因为Bourneshell的脚本简单,速度快于相同脚本在C Shell中的运行速度。默认的C shell提示符是百分号(%)

v   Korn shell

Korn Shell是AT&T公司的David Korn编写的,是Bourne Shell的一个扩展版。默认的Korn shell提示符是美元符号($)

Bourne againshell (bash)

   bash是Unix Bourn shell的GNU版本 ,是Linux系统默认的shell 。bash默认的提示符是美元符号($)。

v   TC shell

   TC Shell(tcsh)它是UNIX C Shell的一个分支,但添加了许多功能。

v   Z shell

   Z Shell是另外一个Linux Shell,它结合了bash,TC Shell和Korn Shell的一些功能。

 

通配符

bash下使用的通配符:

?代表任何单一字符 

* 代表任何字符串,可以是空串

[字符组合] 在中括号中的字符皆符合,例[a-z],[ace]

[!字符组合] 不在中括号中的字符皆符合,例[!0-9]

 

shell的基本功能

v 命令的解释执行

v 环境变量的设置

v 输入/输出重定向

v shell程序设计

 

UNIX下 流的概念

Linux自动为每条执行的命令(进程)打开三个文件,分别用于读取输入数据、发送输出数据和错误信息,这三个文件分别叫标准输入(stdin)、标准输出(stdout)和标准错误文件(stderr)

信息流的标准定义:

v  标准输入流(stdin):     文件描述符0, 默认为键盘.

v  标准输出流(stdout):   文件描述符1, 默认为显示器.

v  标准错误流(stderr):   文件描述符2, 默认为显示器

输入/输出重定向

输入输出重定向就是对系统信息流标准定义的修改

※  输入重定向  <

 例:  prog < infile

※  输出重定向  > ,>>

  例: pwd > outfile   ; ls –l >> file1   ;$ prog < infile > outfile

※  错误流重定向  >&

例:  gcc hello.c >&  log

 

管道线(pipeline)的概念

在命令中利用管道线(|)将命令隔开,实现将一个程序或命令的输出作为另一个程序或命令的输入

下列字符可作命令表的分隔符

&&:若前一命令执行成功,则执行后一命令,例: mail zhang < letter && rm letter

 ||:若前一命令执行失败,则执行后一命令,例: write zhang < letter || mail zhang <letter

 

环境变量的设置

环境变量是系统预定义的一些变量,如PATH,LOGNAME等变量,例如:


查阅命令:env

相关文件:  /etc/profile; ~/.bash_profile ; ~/.bash_login ; ~/.profile

打通路径:

PATH=$PATH:$HOME   //$HOME代表需要添加到路径变量中的目录名



Shell Programming

shell程序:  一种解释执行的脚本(script)语言,类似于DOS 下的.bat文件,但功能更强.

shell是按行解释执行的,注释在行首加#,习惯文件的第一行以”#!/bin/sh”开头,指明使用哪种解释器.

执行方式(三种):

1、$ sh < file.sh

2、$ sh  file.sh

3、首先修改shell程序的权限为用户可执行,如: $ chmod +x file.sh

然后在命令行下直接输入:$./file.sh   (未打通路径,若打通路径,./ 不需要)

 

shell变量的使用

变量的赋值,变量的引用(在变量名前加$)如


不同的引号对shell变量产生不同的效果

1、单引号’ ’:shell将单引号中的内容看成纯粹的字符串

2、双引号” ”:shell对双引号中的特殊字符进行解释

3、反引号`  `:对反引号中的内容作为shell命令执行



变量的作用域

shell变量也有局部定义和全局定义之分。不做特殊说明的变量均是局部变量,只在为它赋值的shell进程中起作用。要是变量在多个进程中都能起作用,通过export命令使其变为全局变量.

 

命令的位置变量

   在shell中命令的位置变量类似于C语言中argc和argv参数的功能,它们主要对命令行中各个参数的位置进行描述。记住$# ; $*  ;$?  ;$$  ;$!的定义

  $# 位置参数的个数

  $* 用单字符串显示传递参数

  $?  为前一命令返回的状态值(0为正常)

  $$ 当前shell进程的pid值

  $!  最近访问的后台进程的pid值

   


test命令的使用

格式: test expre 或 [expre]

当表达式的值为真时,test命令返回真值0,否则返回假值非0.

1、对文件特性的测试:test –[dfrwxs]  file


1、对字符串内容的测试

test s ——当字符串S为非空时,测试结果为真值

test -zs ——当字符串S为空时,测试结果为真值

test s1 = s2  ——当字符串S1与s2相同时,测试结果为真值

test s1! = s2 ——当字符串S1与s2不相同时,测试结果为真值

2、对整数N的测试

test  n1  –eq  n2——当整数n1与n2相等时,返回真值;

test  n1  –ne  n2——当整数n1与n2不相等时,返回真值;

test  n1  –lt  n2——当整数n1小于n2时,返回真值;

test  n1  –le  n2——当整数n1小于等于n2时,返回真值;

test  n1  –gt  n2——当整数n1大于n2时,返回真值;

test  n1  –ge  n2——当整数n1大于等于n2时,返回真值;

  


条件控制语句

v  if语句

    (1) 无分支条件语句:if  then  fi

    (2)二分支条件语句:if  then  else  fi

    (3)多分支条件语句:if  then elif  then fi

 

v  case语句:  case in 结构

caseword  in

        pattern-1)    pat1-list1;;

        pattern-2)    pat2-list2;;

           ……

                  *)    default-list;;

esac





循环语句

v  for循环:  for in  done结构

v  while循环: while  do  done结构

v  until循环: until  do  done

 

将不必要的信息送入系统垃圾文件/dev/null (黑洞)中


抱歉!评论已关闭.