Shell基础知识(相关概念,执行过程及执行方法)

一.什么是shell:
1.Shell是Linux的外壳,它包在Linux内核的外面,为用户和内核之间提供了一个接口。
2.当用户下达指令给操作系统的时候,实际上是将指令告诉shell,经过shell解释,处理后让内核做出相应的动作。
3.系统的回应和输出的信息也由shell处理,然后显示在用户的屏幕上。

在这里插入图片描述
二.什么是Shell脚本:
1.简单地说,当命令或者程序不在命令行执行,而是通过一个程序文件来执行,这个程序文件就称为
shell脚本。
2.也就是在shell脚本内置了多条命令,语句,循环控制,然后将这些命令一次性执行完毕,这种通过
文件执行命令的方式称为非交互式。

三.为什么使用shell脚本:
1.适合处理操作系统的底层业务,有众多系统命令为其做支撑(还有文本处理三兄弟grep,sed,awk)
2.适合处理纯文本文件,linux中许多服务配置文件,启动脚本,都是纯文本(http,nfs,mysql,lvs)
3.linux系统脚本用shell开发更简单

<企业面试题:如何查看默认shell?>
方法一:echo $SHELL
在这里插入图片描述
方法二:grep root /etc/passwd
在这里插入图片描述
五.简单shell脚本的建立:
1.第一行:#!/bin/bash ##指定解释器:由哪个程序来执行脚本内容
注意:#!/bin/bash必须写在第一行,否则会被认为是注释
<练习1:编写一个脚本输出hello yangyang>
1.vim test.sh ##编写脚本文件(一般以.sh结尾)
在这里插入图片描述
2.sh test.sh ##执行该脚本
在这里插入图片描述
3.还有一种执行方式,先给脚本可执行权限,接着/mnt/test.sh通过路径来执行该脚本
在这里插入图片描述
<练习2:编写脚本来清空/var/log/messages日志>
1.编写脚本,内容如下图
在这里插入图片描述
<echo后面引号里的内容是在执行脚本后显示的内容,一般是提示信息>
<脚本内容还可以为:将中间两行改为cat /dev/null > /var/log/messages>
2.执行该脚本
在这里插入图片描述
<练习3:编写一个自动安装http服务并开机自启的脚本>
1.脚本内容如下图
在这里插入图片描述
注意:##后的内容为解释,可以不写进脚本中
六.比较正规的shell脚本建立(清空日志为例):
–上述脚本的缺陷:
(1).没有用户判断,任何用户都可以执行该脚本
(2).没有流程控制,只是把多条简单的命令进行顺序操作,没有成功与否的判断

1.脚本内容,如下图
在这里插入图片描述
2.分别以root和student用户来执行该脚本,看一下区别
在这里插入图片描述
在这里插入图片描述
七.脚本的执行过程:
(1).先加载环境变量(查看系统环境变量的命令是env)
(2).一条一条命令执行,遇到子脚本,先执行子脚本,然后返回给父脚本继续执行
在这里插入图片描述
八.脚本的执行方法:
1.sh script.sh 或 bash script.sh ##此方式不需要给脚本执行权限
在这里插入图片描述
2.path/script.sh (绝对路径) 或 ./script.sh (在当前目录下) ##此方式前提是必须给脚本执行权限
在这里插入图片描述
3.source script.sh 或 . script.sh ## 此方式会使用source 或 . 来读如指定shell文件,并会把其它
shell中的变量值或函数返回给父shell继续使用

在这里插入图片描述
三种方式的区别:
1.编写脚本,我们用cat命令来查看内容
在这里插入图片描述
在这里插入图片描述
<只有source 或 . 的方式才会将子shell中的变量值返回给父shell继续执行>
<面试题1,如下图:>
在这里插入图片描述
答案选C,因为只有source 或 . 执行方式才会返回变量值,其他执行方式均为无输出
九.脚本的规范性:
1.一般在脚本开头我们要写清时间,该脚本是谁写的,该脚本是用来干什么的等一些解释性信息,方便自己以及其他用户来查看
在这里插入图片描述
2.我们也可以在脚本中的一些命令或一些步骤后面做相关解释来说明此命令或此步骤是干什么的

猜你喜欢

转载自blog.csdn.net/y_yang666/article/details/85250920
今日推荐