打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
计算机等级考试三级linux Shell复习

1.shell本身是一个用c语言编写的程序,是连接用户 和 UNIX/Linux内核的桥梁,用户的大部分工作是通过shell完成的。

2.脚本的第一行“#! /bin/bash”的作用是 决定了shell 将到哪些目录中寻找命令或可执行程序,当用户运行一个命令或可执行程序时,一定会在这些目录下,按顺序依次搜寻。

3.环境变量PACH的作用是  :决定了shell将到哪些目录中寻找命令或可执行程序;当用户执行一个名灵活可执行程序时,linux在这些目录下依次搜寻。

4.后台进程在运行过程中与用户无交互,无交互指的是 不响应用户的输入和中断信号,在后台运行的命令一样会将结果输出到屏幕上。

5.命令别名设置命令:alias 

格式:alias ll ='ls -l'

输入别名后,bash寻找它维护的别名表,若找到,该命令就被定义的内容替换。

6.脚本的运行方法:

A. 增加可执行权限,绝对路径+文件名执行。可以带参数。

B. 脚本名作为参数传递给shell程序执行,可以带参数。

C. 将脚本以输入重定向的方式传给bash。bash< sh01,不能带参数。

6.通配符

* 任意字符0到多个;

?  任意字符1个;

[  ]  括号中的字符(限定范围)任意1个,用逗号隔开,也可以是0-9,a-z等范围;

[^ ] 或[! ]  括号中的字符之外的字任意符1个;

{str1,str2,…}匹配括号中指定的1个字符串。逐个全部匹配,如ls /{etc,dev,opt} 等同同时加三个参数。

7.引号

A.单引号:引用一串字符,解释为普通字符串;

B.双引号:引用一串字符,保留$、`也就是倒引号、\转义符的意义,其他解释为普通字符;如要在双引号中输出$和倒引号,需要用转义符转义;

C. 倒引号`

范围内的字符串解释为命令行。shell将先执行范围内的命令,用执行结果替换整个倒引号部分。

D. 转义字符\

引用单个字符,称为转义了这个字符。

8.输入、输出重定向字符

输入重定向:

command < file 文件作为命令输入;

command << 分界符 从标准输入中读入直到遇到分界符停止;

输出重定向:

cmd 2>file 错误信息输出到文件,覆盖方式;

cmd 2>>file 追加当时输出错误信息到文件;

完整格式是 fd>file,fd表示文件描述符。在每个进程中,为了表示和区分已经打开的文件,linux会给每个文件分配一个ID,是一个整数,成为文件描述符(file Descriptor)。进程创建的时候,系统为每个进程自动打开3个标准文件:标准输入stdin、标准输出stdout、错误输出stderr。其文件描述符分别是0、1、2。文件描述符为1时为默认值,可以忽略不写。如果正确信息和错误信息都输出到一个文件,要写为 2>& 1 样式,注意,fd、>、&时间不能有空格;

特殊情况:/dev/null 设备是系统垃圾箱,放入其中的数据将被丢弃。

9.命令执行操作符:

A.顺序执行:用“;”号连接的多条命令将会依次执行,命令之间没有逻辑关系。

B.逻辑与:使用“&&”连接的多条命令,只有第一条命令正确执行了,第二条命令才会执行。

C.逻辑或:使用||连接多条命令,前一条命令执行错误,第二条命令才执行。

优先级:逻辑与和逻辑或优先级相同。

判断依据:命令执行后,会有一个$?变量,返回值为0,执行正确,非0则执行错误。

10.小括号和大括号:都可以奖若干名伶组合在一起,逻辑上被视为一条命令;

大括号{}使用时,左括号后必须有空格,右括号前必须用分号“;”或者换行符终止,括号中的命令可以换行,每个命令独占一行。运行时是在当前shell中。

小括号()使用时,命令之间用分号“;”隔开,运行时开启一个子shell运行。

10.管道符、后台命令符、注释符

管道符用竖线“|”符号,用来连接多条命令,每条命令都有一个独立的进程,前一个命令的输出是下一个命令的输入。

后台命令符“&”,命令后加上后台命令符后,命令进入后台模式,在运行过程中,与用户无交互,不想赢用户的输入和终端控制信号。

注释符“#”,以井号开头的正文行表示单行注释,shell会自动忽略不执行。

脚本开头的#!后边跟的是解释该脚本的shell的绝对路径,表示首先按绝对路径找到shell程序,启动shell程序解释脚本。

11.变量

A.命名:字母或下划线开头,字母、数字、下划线组成。用户定义变量一般用小写字母,大写字母变量一般是系统默认变量;

B.声明:shell所有变量类型默认字符串型,可不必声明。也可以用命令声明为其他类型。

declare命令,DECLARE,选项如下:

- 给变量设定类型属性

+取消变量的类型属性

-a声明为数组型

-i声明为整数型(Integer)

-r声明为只读变量。一旦设定了只读属性,既不能修改值,也不能删除变量,甚至不能用+号取消只读属性,只有结束该shell,重新登陆或重启,这个变量才会消失。

-x声明为环境变量;edclare -x 变量名的用法等同于export 变量名。

-p显示变量被声明的类型。

数组声明:定义数组的形式:array 变量名=(变量1 变量2 … 变量n),数组元素用空格分隔。下标可以不连续,下标的范围也没有限制。也可以用declare -a name 的形式声明数组。

C.赋值:用等号“=”赋值,两边不能有空格。如字符串包含空格,需要加引号。

数组赋值时可以一起赋值,也可指定下标单独赋值,如array name[0]=value。

D.引用:变量引用时,在变量名前加上美元符号“$”,变量名和后面的字符需要区分时,把变量名放到大括号“{}”中界定,或者把美元符号和变量名一起放到双引号中。

美元符号加小括号$()等价于倒引号,作用是把括号内命令的执行结果赋值给变量。

E.变量查询:

命令1:set 变量名。拼写SET,查询所有局部变量和全部变量;

命令2:env,拼写为ENV,查询所有环境变量,包括本进程及祖先进程全局(环境)变量;

命令3:export,拼写为EXPORT,显示本进程利用export定义的全部变量(全局变量);

三者用法基本相同,输入命令不带参数。

F.变量删除:unset 变量名,拼写UNSET,用法为命令加变量名,环境变量和自定义变量用法相同。

数组引用:格式为美元符号大括号数组名中括号变量名下标,${name[2]};

如果下标为星号*,则读取整个数组,将整个数组扩展为一个字符串,字符串内容为空格分开的各个数组元素;

如果下标为at符号@,则读取整个数组,将数组扩展为多个字符串;

如果不给出下标,或者类似普通标量一样引用,则默认下标为0,即$name==${name[0]}

12.系统预定义变量(也就是环境变量,环境变量是全局变量,在当前shell及其子shell中生效,修改时进修该内存中的变量值,没有修改配置文件,shell终止变量的修改就失效;用户定义变量是局部变量,仅在当前shell中生效):

声明:用export或者declare -x定义环境变量,,命令拼写EXPORT。export命令将变量送入进程转出区,进程转出区的变量将被子进程继承。命令格式为export 变量名,此用法等同于declare -x 变量名。

赋值:和用户自定义变量相同,但是不修改配置文件。

查询:列出已经定义的所有环境变量,可以用env命令,拼写EVN。

主要环境变量有以下:

HOME:家目录绝对路径;可以通过cd ~、cd $HOME、cd不带参数进入家目录;

PATH:shell查找命令的目录列表,包含带冒号分界符的字符串;通常,用户会在家目录下建一个bin目录,存放自己编写的命令,把这个路径加入PATH中,用户执行自定义命令时就可以不加路径,像系统命令一样使用,加入方法:PATH=$PATH:$HOME/bin,注意事项,用户自定义命令路径要放在最后,因为系统寻找时会根据路径先后顺序寻找。

PS1:拼写,字母PS加数字1,是shell的主提示符,它定义主提示符的构成,默认是用户名@主机名、工作目录、美元符号。常用转义字符及其含义如下:

\$:美元符号,为提示字符,root用户显示#号,普通用户显示$美元符号;

\t:小写字母t,显示时间,24小时格式,HH:MM:SS;

\T:大写字母T,显示时间,12小时格式;

\h:显示完整主机名;

\s:小写字母s,所用shell名称;

\v:小写字母v,bash的版本号。

PWD:当前工作目录的绝对路径。

SHELL:当前使用的shell,指出解释程序放在什么地方;

$? :美元符号加问号,上一条命令执行后的返回值(又叫返回码,退出状态等),十进制数,执行成功为0,执行失败为非0.

$$:当前进程的进程号(PID)

$!:上一个后台命令的进程号(PID)

$-:当前命令选项。用set命令可以更改运行时的选项设定。

$#:命令行上参数的个数。

$n:美元符号加整数,整数为0代表命令本身,大于0代表对应的参数,大于9时需要用大括号。

$*、$@:美元符号加星号,代表命令号所有参数,视为一个整体;美元符号加AT符号,代表命令行所有参数,每个参数区别对待。

13.数值运算:默认变量都是字符串型,需要运算时,可以用declare声明为整数型,或者使用以下命令:

A.expr命令:拼写EXPR,用法:a=$(expr $b + $c),加号两侧必须有空格。

B.let命令:拼写LET,用法为 let a=$b+$c ,let n+=1 ,符号之间不能有空格;实测 let c=a+b也可以使用。

C.使用$((算术表达式))运算:美元符号加双小括号内的算术表达式,只能包含一个算数表达式。

14.条件测试语句

A.test命令,拼写TEST,用法test加测试运算符加测试语句,可以用方括号代替test命令,也就是把测试预算符合测试语句放到方括号中,方括号内两端有空格。如 test -f file 等同于[ -f file ]。

B.用双小括号包含测试语句,如((m<=n))。

C.常用文件测试运算符,格式为运算符加文件名。

-r :字符r,文件存在且可读;

-w:字符w,文件存在且可写;

-x:字符x,文件存在且用户可执行;

-f:字符f,文件存在且为普通文件;

-d:字符d,文件存在且是目录;

-L:字符大写L,文件存在且是符号链接;

-b:字符b,文件存在且是块设备文件;

-c:字符c,文件存在且是字符设备文件;

-s:字符s,文件存在且长度大于0;

-e:字符e,文件是否存在。

以下运算符格式为两个文件名中间放运算符,比较两个文件:

-nt,左边文件是否比右边文件新;

-ot,左边文件是否比右边文件旧;

D.字符串测试运算符:

-z:字符z,字符串长度为0,返回真;

-n:字符n,字符串长度大于0,返回真;

=、!=:等于符号,等号两边字符串是否相等,注意等号两边要有空格;感叹号加等号,两边字符串是否不相等。

E.数值测算运算符:放于两个数字中间。

-eq:等于;-ne:不等于;-lt:小于;-le:小于等于;-gt:大于;-ge:大于等于。

E.测试运算语句可以逻辑与(&&符号)和逻辑或(||符号)连接。

15.控制结构

A.if分支:if [测试条件];then 命令1;else 命令2;fi,中间语句用分号隔开,结束符不用分号。如果写成多行,则每条语句占一行,不用分号,如下:

if 逻辑表达式

   then 命令1

   exit  1        #注释:exit后面的值赋给变量$?,exit后的所有语句不再执行

   elif 逻辑表达式

 else 命令2

fi

B.多分支

case 变量 in

“值1”)    命令1

                   命令n;;     # 注释双引号结束。

"值2")   命令1

              命令2;;   # 双引号结束。

*)     命令1     # 星号可以缺省。

         命令n;;

esac           #case反过来写。

C.select循环,拼写SELECT

格式:

select 加新变量名 加 in空格隔开的值。此处与for in相似。

do

语句

done

运行时输入in后面各个值的序号,该循环为死循环,ctrl加D退出,通常和case连用。

连用举例:

echo “Where are you?”

select name in "beijing"  "shanghai"  "nanjing"

do

case $name in

   "beijing")

        echo " you are in Beijing."

        break;;

"shanghai")

      echo "you are in shanghai."

     break;;

      "nanjing")

        echo "you are in nanjing."

     break;;

*)

      echo " I do nont know!"

      easc

done

D.while循环

while 判断条件

do

   语句

done

E.until循环

until  判断条件

do

语句

done

F.for循环

第一种

for ((exp1;exp2;exp3))

   do

语句

done

第一次运行依次执行3个exp,循环中依次执行exp2、exp3。

第二种

for n in value list(空格隔开的值)

    do

     语句

  done

第三种,缺省valuelist

for str (空格隔开的值)

do

    语句

done

G.break和continue,拼写BREAK、CONTINUE

break n n表示跳出循环的层数,省略n跳出整个循环;

continue n 表示循环的层数,缺省仅对当前循环有效。

14.函数FUNCTION

function name(){

语句

[return value]

}

name是函数名,return value是返回值;

可以省略function,如果不省略function,可以省略函数名称后的小括号。

参数传递方法和普通命令一样。

15.系统函数

$RANDOM     产生0~32767之间的随机数

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Linux之通配符
Linux革命性工具shell脚本自动化(内含可以放大的视频教程)
CTFWEB-RCE篇
第7章 shell程序设计
UbuntuLinux操作系统与实验教程
【Linux 笔记】Linux 基本操作 - 02. shell编程基础
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服