什么是shell
在Linux内核与用户之间的解释器程序
通常指/bin/bash
负责向内核翻译及传达用户指令
解释器有哪些?在哪里查看解释器?
/bin/sh /bin/bash /sbin/nologin
/bin/tcsh /bin/csh /bin/ksh
cat /etc/shells
脚本创建三步走?
1.新建文本文档
2.添加可执行的脚本语句
3.添加x执行权限
脚本的构成?
脚本声明(使用哪种解释器)
可执行语句
注释信息
脚本执行方法?
1,添加x权限
2,使用解释器直接执行脚本,新开启解释器
bash test1.sh //执行完毕后退出新开启的解释器
3,使用source直接执行脚本,使用当前解释器
source test1.sh //执行完毕后退出当前解释器
什么是变量?优点是什么?
以固定名称存放,可能会变化的值。
优点:提高脚本对任务需求,运行环境变化的适应能力
方便在脚本中重复使用
自定义变量的命名要求?
1.等号两边不要有空格
2.变量名由字母,下划线,数字组成,区分大小写
3.变量名不能以数字开头,不要使用关键字和特殊字符
shell****变量的类型?
### 1、环境变量
PWD:当前位置
USER:当前用户名
HOSTNAME:主机名
SHELL:当前用户的解释器
HOME:当前用户的家目录
UID:当前用户的UID号
PATH:系统命令所在地
PS:1一级提示符
PS2:二级提示符
### 2.位置变量
$1 $2 $3 …
### 3.预定义变量
$* 显示所有位置变量的值
$# 统计位置变量的个数
$$ 当前程序的进程号
$? 上一条指令的执行结果,0是正确,非0是异常
$0 显示脚本名称
4.自定义变量**env和set****的区别?
env:列出所有环境变量
set:列出所有变量等于:
请说出单引号、双引号和反撇号的区别**?**
单引号:用来界定范围,可以屏蔽特殊符号的作用
双引号:用来界定范围
反撇号:取命令执行的结果(也可用“$()”)
如何关闭和恢复回显?
关闭回显:stty -echo
恢复回显:stty echo
请写出重定向操作的含义(<、>、>>、2>、2>>、&>)
<:重定向输入,将文本输入来源由键盘改为制定的文件(导入,将文件里面的东西导出来)
> :重定向输出,将命令行的正常执行输出保存到文件,而不是直接显示在屏幕上(覆盖重定向)
> > 两个大于号:重定向输出,与>类似,但是追加而不是覆盖
2>:重定向错误,将命令行的执行出错信息保存到文件,而不是直接显示在屏幕上
2>>:重定向错误,与2>类似,但是追加而不是覆盖
&>:混合重定向,相当于>和2>,覆盖到同一个文件(正确错误都输出)
局部变量和全局变量的区别?
局部变量:只在当前shell环境中有效,无法在子shell环境中使用
全局变量:在当前shell和子shell环境中都有效,使用export可将局部变量声明为全局变量,export -n 取消全局属性
请写出进行数值比较时,等于、不等于、大于等于、小于等于、
大于、小于的操作符是?
等于:-eq
不等于:-ne
大于等于:-ge
小于等于:-le
大于:-gt
小于:-lt
请写出下列操作符所代表的含义
-e:判断对象是否存在
-d:判断对象是否为目录
-f:判断对象是否为文件
-r:判读对象是否有读权限
-w:判读对象是否有写权限
-x:判读对象是否有执行权限
请写出**"&&“、”||“以及";”**的含义
&& 前一个执行结果成功即可执行下条指令
|| 前一个执行结果失败即执行下一条指令
; 逻辑或,成立其中一个即可
break,continue,exit的区别?
break:跳出当前循环,执行循环后的语句
continue:跳过当前循环,执行下一个循环
exit:退出脚本,默认返回值是0
请写出字串截取的三种方式**,起始位置分别是?
${变量名:起始位置:长度};起始位置为0
expr substr “$变量名” 起始位置 长度;起始位置为1
echo $变量名 | cut -b 起始位置-结束位置;起始位置为1
请写出字串替换的格式?
替换一个:${变量名/old/new}
替换所有:${变量名//old/new}
所有为空(删除):${变量名//old/}
字串的删除方法?
字符串掐头去尾:
- 从左向右,最短匹配删除:${变量名#*关键词}
- 从左向右,最长匹配删除:${变量名##*关键词}
- 从右向左,最短匹配删除:${变量名%关键词*}
- 从右向左,最长匹配删除:${变量名%%关键词*}
请写出下列正则表达式所代表含义?
^ 匹配行首
$ 匹配行尾
[] 集合,匹配集合中的任意单个字符
[^] 对集合取反
. 匹配任意单个字符
*匹配前一个字符任意次数,不能单独使用
{n,m} 匹配前一个字符n到m次
{n} 匹配前一个字符n次
{n,} 匹配前一个字符n次以上
() 保留
\b 单词边界(空,空格,tab,特殊符号)| 或者
sed工具概述?
sed — 流式编辑器
非交互,基于模式匹配过滤和修改文本
逐行处理,并将结果输出到屏幕上
可以实现对文本的输出,删除,替换,复制,剪切,导入,导出等操作。
sed工具的基本选项?
-n(屏蔽默认输出,默认sed会输出读取文档的全部内容)
-r(让sed支持扩展正则)
-i(sed直接修改源文件,默认sed只是通过内存临时修改文件,源文件无影响)
常用动作指令:
p:打印行
d:删除行
s:字符串替换
sed工具的多行文本处理操作?
i: 在指定的行之前插入文本
a:在指定的行之后追加文本
c:替换指定的行
grep的选项?
-v 取反
-n显示行号
-i 忽略字母大小写
-c 统计匹配的行数
awk****的概述?
基于模式匹配检查输入文本,逐行处理并输出
通常用在shell脚本中,获取指定数据
单独使用时,可对文本数据做统计
awk常用内置变量?$0 文本当前行的全部内容
$1 文本的第1列
$2 文件的第2列
NR 文件当前行的行号
NF 文件当前行的列数(有几列)
AWK的处理时机?
BEGIN{ } 行前处理,读取文件内容前执行,指令执行1次
{ } 逐行处理,读取文件过程中执行,指令执行n次
END{ } 行后处理,读取文件结束后执行,指令执行1次