计算机等级考试三级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之间的随机数

(0)

相关推荐

  • 【Linux 笔记】Linux 基本操作 - 02. shell编程基础

    笔记接上篇[Linux 笔记]Linux 基本操作 - 01. 系统认知-文本处理-软件安装-环境变量.笔记大部分源于生信技能树的B站视频教程[生信技能树]生信人应该这样学linux(更新至第14集) ...

  • shell字符串单双引号的坑

    入门生信时,我最接触的编程语言是python和R,最后才是shell.学习shell时,我也只是草草了事,没有仔细对比三种编程语言间的差别和特点,自认为很聪明的把python和R的相关基础知识直接迁移 ...

  • php代码审计总结(上)

    一.审计前的准备 1.核心配置详解 register_globals 全局变量注册开关 PHP5.4.0以下可用 allow_url_include 是否允许远程文件包含 php5.2.0及以后默认o ...

  • 计算机等级考试三级 linux 章节复习笔记

    第二章: 1.内核是提供什么功能的系统软件,是操作系统的核心:设备驱动,文件系统,进程管理,网络通讯. 2.基于linux的便携系统:安卓,android. 第三章: 3. 命令的基本格式是:命令 [ ...

  • 等级考试三级linux VI编辑器 朗读复习版

    一.工作模式:1.命令模式,2.文本编辑模式,3.末行模式. 命令模式:启动时便进入命令模式.使用过程中按下"ESC"键进入命令模式.该模式下,可以输入各种合法的VI命令,键盘上输 ...

  • 计算机等级考试三级考试总结

    参加全国计算机等级考试三级Linux应用与开发,由于是第一次举行考试,只有大纲,没有习题,在这里总结一下,为以后考试的朋友提供一点帮助. 一.操作系统基本概念和原理 这部分内容主要体现在选择题中,就不 ...

  • 一级、二级、三级刷题全国计算机等级考试

    2021年3月全国计算机等级考试(第60次) 定于3月27日至29日举行 也就是过完年返校不久即开始考试 所以我们一定要利用好假期这段时间 这期给小伙伴们带来了计算机二级备考资料 题库展示 本次更新资 ...

  • 河南省2021年9月全国计算机等级考试报考简章

    二.报名条件和要求:   报名者不受年龄.职业.学历等限制,持有效证件(按国家相关规定,港澳台居民居住证属于有效身份证件)均可根据自己学习和实际能力选考相应级别和科目.   同次考试,考生最多可报三个 ...

  • 计算机等级考试二级Office题库附考试大纲

    自从2月份以来,本公众号"office2016"的关键词出现次数飙升,啥原因呢?因为这个: 而且,自2021年3月考试起,一级计算机基础及MS Office应用(科目代码15).二 ...

  • 全国计算机等级考试二级MS Office高级应用考试大纲(2020年版)

    2020年9月全国计算机等级考试信息通知 01 通知 目前[江西]已经处于报名期间,距离报名截止仅剩六天时间,江西还未报名的同学们,赶紧抓紧时间报名哦,早日拿到计算机二级MS Office高级应用证书 ...

  • 全国计算机等级考试一级MS Offic考试大纲(2020年版)

    2020年9月全国计算机等级考试信息通知 目前[江西]已经处于报名期间,距离报名截止仅剩七天时间,江西还未报名的同学们,赶紧抓紧时间报名哦,早日拿到计算机一级证书,多一份保障,将来在工作中将会更加出色 ...

  • 记得收藏!| 如何高效备考2021全国计算机等级考试二级C

    提到全国二级C考试,大家都会不由得问道"它"难不难啊?好不好学,其实,二级C只是将来从事程序设计工作的基础性课程,因此,大多数题目也都只是基础性知识的考查.就像我们遇到一个新的东西 ...