第一章 shell简介
1.1 shell是什么?
shell是外壳的意思,连接系统核心和操作者之间的接口。
1.4 简易bash shell程序的编写
注意三点,.sh后缀,chmod +x加上可执行权限,执行。
第三章 基本概念介绍
3.1登陆注销
登陆主机可以分为本机登陆和远程登录。
(1)本机登陆接口可以是文本接口或图形接口。linux tty1-tty6为文本接口,tty7为图形接口。ctrl+Alt+F1切换
(2)远程登录通过网络,以虚拟终端程序登陆主机
3.2 文件和目录
(1) linux下一切视为文件。可分为一般文件,目录文件,设备文件(字符文件和磁盘文件),内部进程通信文件(Socket文件和管道文件),符号链接文件。
(2)ls命令以及file命令都可以查看文件类型。(-,d,l,b,c,s,p)
(3)cd,pwd命令
(4)文件权限(文件形态,文件拥有者权限,同组权限,其他用户权限),权限的数字表示方法,421
(5)权限修改命令 chmod
3.3 通配符和转义符
(1)*以及?通配符
(2)反斜线(\)为转义符,目的是去除特殊字符的作用。
例子 echo 9*9 =81改 echo 9 \*9=81,也可以使用单引号包括特殊字符或者整个字符串。需注意单引号中不能包括单引号,使用转义符也不可以,可以换双引号或去除最外单引号。
(3)续行符号
\后接换行符(Enter)为续行符
3.4 字符集合
例【abc】,【a-z】,【!a-z】
3.5 符号扩展
例 {g,nc,s}
3.6 系统默认开启的文件
每一个shell script执行时 (进程),系统默认开启3个标准文件,标准输入,标准输出以及标准错误。文件描述符为0,1,2
3.7 标准输入/输出转向
(1)转向输出>
(2)cat,more,less命令获取文件内容
(3)转向附加>>
(4)转向输入<,配合wc -l命令可以计算文件有多少行信息
(5)利用cat命令和转向输出做简易编辑,ctrl+D结束编辑
3.8 管道
形式,命令1|命令2,一个程序的输出变成另一个程序的输入
3.9 前台工作,后台工作
&符号,是程序在后台执行
第四章 bash shell的程序结构
4.1 shell程序的组成
(1) 变量设定,内置命令,shell的语法结构,函数以及其他命令行程序
(2)程序执行权限添加以及程序的执行
4.4 Bash Script排错方法
(1)检查script语法 bash -v test.sh
(2)查看script代码 bash -n test.sh
(3)追踪script执行 bash -x test.sh
(4)echo命令的插入使用
4.5 Bash Script执行原理
(1)父shell和子shell
(2)login shell
4.6 Bash shell的启动配置文件总结
第五章 基本操作介绍
5.1 内置命令
(1)常见内置命令
(2)必备内置命令
help,echo,printf,cd,pwd,:,source,alias,unalias,exit,logout,umask,history,fc,type,set,shopt,time,read,exec,eval
5.2 命令行程序(即单独存在的执行文件)
(1)常见命令行程序
(2) 必备命令行程序
which,locate,date,who,whoami,ls,cat,head,tail,wc,ln,mkdir,rmdir,rm,find,tar,gzip,basename,dirname,sort,unip,cut,paste,tr,grep,
tee,diff,comm,xargs
5.3 执行多个命令的方法
;,&&,||,(),{ }
5.4 记录命令的执行过程
script命令
第六章 变量与字符操作
6.1 变量是什么
bash shell把任何存储在变量中的值,皆视为以字符组成的字符串
6.3 变量的设定
(1)方法 变量名称=值
(2)若值含有空白,要用引号括起来
6.4 取得变量值
$变量名称
6.5 取消与清空变量
(1)取消变量 unset (后面可以接变量与函数名称)
(2)清空变量 变量名称=(给变量设定一个空值)
6.6 变量和引号
(1)双引号与单引号区别 :单引号的作用是形成一个所见即所得的字符串,不会进行任何替换变量的操作
(2)可以利用转义操作符(\)抑制双引号替换变量
6.7 变量的有效范围
变量一旦设定,只在各自的shell环境中有效
6.8 环境变量
(1)父shell设定环境变量为子shell所用
(2)export
6.9 bash内置变量
6.10 调整变量属性
(1)只读 readonly
(2)变量属性调整 delcare
6.11 别名
(1)为指令取别名 alias 别名=指令
(2)取消别名 unalias
6.12 自定义环境
bash shell的启动配置文件
6.13 数组
(1)数组的用法
数组的两种初始化方式,(A[0]=1 A[1]=10 A[2]="bash shell" ) ,(A=(1 10 "bash shell")
(2)取得元素值
取得一个元素,${ A[1] }
取得所有元素,${ A[@] }
(3)取得数组元素的个数
${#数组[@]} 或${#数组[*]}
(4)取得数组元素长度
若数组元素为字符串,获得长度,${#数组[索引]}
(5)取消数组或数组元素
unset,同取消变量一样
6.14 Here Document
(1)Here Documnet的基本语法(把命令和标记之间的内容,利用转向输入的方式交给命令处理
命令<
.....
HERE(标记)
(2)利用Here Document设定变量
(3)利用Here Documnet做多行批注
第七章 高级变量
7.1 变量扩展:测试存在性以及空值
(1)变量扩展的基本型:${变量名称},变量扩展是一种简易的条件判断,对不同的条件赋予变量不同的替换值。
(2)“变量存在”的定义
(3)测试变量“存在与否”的基本用法
${待测变量-默认值}
(4)测试变量“不存在”或其值为空:“传回”一个默认值
${待测变量:-默认值}
(5)测试变量"不存在“或其值为空:给变量设定一个默认值
${待测变量:=默认值)
(6)测试变量“不存在”或其值为空:提示错误信息
${待测变量:?提示信息}
(7)测试变量的“存在性”:变量存在且非空,传回真值
${待测变量:+真值}
7.2 变量扩展:取字符串切片,字符串长度
(1)取字符串切片
语法一:${变量:位置起点}
语法二:${变量:位置起点:长度}
(2)取部分位置参数
位置参数的概念
取部分位置参数的用法:${@:起点},${@:起点:个数}
(3)计算字符串长度
${#变量名称}
7.3 变量扩展:对比样式
(1)由字符串前面对比,删除最短的相符者
语法:${变量#样式}
(2)由前面对比,删除最长的相符者
语法:${变量##样式}
(3)由字符串后面对比,删除最短相符者
语法:${变量%样式}
(4)由后面对比,删除最长的字符
语法:${变量%%样式}
(5)取代或删除部分字符串(最长)
只替换第一个对比符合的字符串:${变量/样式/ 替换字符串}
替换全部对比符合的字符串:${变量//样式/替换字符串}
(6)把对比符合的字符串删除(最长)
只删除第一个:${变量/样式/}
删除所有:${变量//样式/}
(7)要求样式在句首或句末
要求样式在句首:样式前加上#
要求样式在句末:样式前加上%
7.4 变量扩展:取变量名称列表、数组索引列表
(1)取变量名称列表
把所有以指定字符串开头的变量名称列出:${ !开头字符串@}
取数组索引列表:把数组变量所有的索引列出:${ !数组变量[@] }
注:当取索引列表出现在双引号中,取得的变量不是一个字符串,而是将索引值视为单独的字符串
7.5 命令替换
将命令执行后的标准输出存放于变量中:变量名称=$(命令)
7.6 算数扩展
Bash变量没有数据型,全部以字符视之,不会自动进行算数运算。
算数扩展语法:$( (算数式) )