day3 运行脚本方式 调试shell脚本 忽略命令无关输出 记录错误输出 命令组合运用 标准输入和输出 重定向类型 shell变量 字符串变量值 发布全局变量 read命令取值用法 基本运算 随机数 使用seq命令 数值运算的局限性 字符串处理 条件 条件分支 流程控制 退出控制 shell函数 case分支 标准的系统服务管理(不适用与mac) 文件排序及统计 反序输出文本行 命令输出的局限性 tee整合重定向(mac中没有) unix2dos与dos2unix转换 xargs工具及应用 expect预期交互控制 awk命令 sed(文本处理,通过是用命令的方式编辑文本)

脚本内容如下:

#!/bin/bash
# 创建用户账号
useradd yangshimiao
# 将用户登录密码设置为ysm@121388
passwd yangshimiao

第一种方法:

  • sh 代码文件路径 === bash 代码文件路径

第二种方法:

  • 为shell代码文件添加x权限
  • . 代码文件路径 === source 代码文件路径

调试shell脚本

  • 直接观察执行过程
    • 执行中的命令输出、报错信息
    • 与用户的交互
  • 开启调试模式
    • sh -x 脚本文件
  • 插入echo断点
    • echo '提示信息'
  • 在脚本文件中使用set -x开启调试,使用set +x关闭调试
#!/bin/bash
set -x # 开启调试
# 创建用户账号
useradd yangshimiao
# 将用户登录密码设置为ysm@121388
passwd yangshimiao
set +x # 关闭调试

忽略命令无关输出

  • 设备黑洞 /dev/null

    • 相当于只能写入,不能读出的单向文件
    • 存放到其中的数据都会丢失
    • 用法:可执行语句 &> /dev/null>
    echo 12345678 | passwd --stdin yangshimiao &> /dev/null # 忽略输出内容
    

记录错误输出

  • 根据需要,可以将出错信息保存指定文件
    • 用法:可执行语句 2> /路径/文件

命令组合运用

  • 使用分号

    • 命令1;命令2;命令3
    • 一次执行,只有先后顺序、没有逻辑关系
  • 使用&&

    • 命令1&&命令2&&...
    • 逻辑关系为"而且",期望所有的命令都能够符合预期
    • 一旦出现失败,后续命令不在执行
  • 使用||

    • 命令1||命令2||命令3||...

    • 逻辑关系为或者,任何一条命令成功都符合预期

    • 只在前面的命令失败,后续命令才会继续执行

    • 典型应用:

      • id yangshimiao || useradd yangshimiao # 如果没有yangshimiao这个用户,则创建
        
  • 组合逻辑分隔(没有优先级,只有顺序之分)

    • 例子

    命令1&&命令2||命令3

    当命令1执行成功时,会继续执行命令2(忽略命令3)

    当命令1执行失败时,会继续执行命令3(放弃命令2)

    id yangshimiao &> /dev/null && echo yes || echo no  # 如果yangshimia这个用户存在则输出yes,否则输出no
    

标准输入和输出

  • 标准输入:从此设备接收用户输入的数据
  • 标准输出: 通过此设备向用户报告正常的命令输出结果
  • 标准错误:通过此设备报告执行中的出错信息
类型 设备文件 文件描述符
标准输入 /dev/stdin 0
标准输出 /dev/stdout 1
标准错误输出 /dev/stderr 2

重定向类型

day3
运行脚本方式
调试shell脚本
忽略命令无关输出
记录错误输出
命令组合运用
标准输入和输出
重定向类型
shell变量
字符串变量值
发布全局变量
read命令取值用法
基本运算
随机数
使用seq命令
数值运算的局限性
字符串处理
条件
条件分支
流程控制
退出控制
shell函数
case分支
标准的系统服务管理(不适用与mac)
文件排序及统计
反序输出文本行
命令输出的局限性
tee整合重定向(mac中没有)
unix2dos与dos2unix转换
xargs工具及应用
expect预期交互控制
awk命令
sed(文本处理,通过是用命令的方式编辑文本)
day3
运行脚本方式
调试shell脚本
忽略命令无关输出
记录错误输出
命令组合运用
标准输入和输出
重定向类型
shell变量
字符串变量值
发布全局变量
read命令取值用法
基本运算
随机数
使用seq命令
数值运算的局限性
字符串处理
条件
条件分支
流程控制
退出控制
shell函数
case分支
标准的系统服务管理(不适用与mac)
文件排序及统计
反序输出文本行
命令输出的局限性
tee整合重定向(mac中没有)
unix2dos与dos2unix转换
xargs工具及应用
expect预期交互控制
awk命令
sed(文本处理,通过是用命令的方式编辑文本)

shell变量

  • 基本格式

    • 添加变量:变量名 = 值
    • 引用变量值:$变量名
    • 查看变量值:echo $变量名、echo ${变量名}
    • 取消变量:unset 变量名(可以使用空格分开)
  • 变量类型
    day3
运行脚本方式
调试shell脚本
忽略命令无关输出
记录错误输出
命令组合运用
标准输入和输出
重定向类型
shell变量
字符串变量值
发布全局变量
read命令取值用法
基本运算
随机数
使用seq命令
数值运算的局限性
字符串处理
条件
条件分支
流程控制
退出控制
shell函数
case分支
标准的系统服务管理(不适用与mac)
文件排序及统计
反序输出文本行
命令输出的局限性
tee整合重定向(mac中没有)
unix2dos与dos2unix转换
xargs工具及应用
expect预期交互控制
awk命令
sed(文本处理,通过是用命令的方式编辑文本)

  • 环境变量

    • 配置文件
      • /etc/profile(对所有的用户)、~/.bash_profile(当前用户下)
    • 相关操作
      • env : 列出所有的环境变量(包括值)
      • set : 列出所有的变量
    • 常用的环境变量
      • SHELL、USER等
  • 位置变量

    • 在执行脚本时提供的命令行参数
      • 表示为$n,n为序列号
      • day3
运行脚本方式
调试shell脚本
忽略命令无关输出
记录错误输出
命令组合运用
标准输入和输出
重定向类型
shell变量
字符串变量值
发布全局变量
read命令取值用法
基本运算
随机数
使用seq命令
数值运算的局限性
字符串处理
条件
条件分支
流程控制
退出控制
shell函数
case分支
标准的系统服务管理(不适用与mac)
文件排序及统计
反序输出文本行
命令输出的局限性
tee整合重定向(mac中没有)
unix2dos与dos2unix转换
xargs工具及应用
expect预期交互控制
awk命令
sed(文本处理,通过是用命令的方式编辑文本)
  • 预定义变量

    • 用来保存脚本程序的执行信息
      • 直接使用这些变量
      • 不能直接为这些变量赋值
    • day3
运行脚本方式
调试shell脚本
忽略命令无关输出
记录错误输出
命令组合运用
标准输入和输出
重定向类型
shell变量
字符串变量值
发布全局变量
read命令取值用法
基本运算
随机数
使用seq命令
数值运算的局限性
字符串处理
条件
条件分支
流程控制
退出控制
shell函数
case分支
标准的系统服务管理(不适用与mac)
文件排序及统计
反序输出文本行
命令输出的局限性
tee整合重定向(mac中没有)
unix2dos与dos2unix转换
xargs工具及应用
expect预期交互控制
awk命令
sed(文本处理,通过是用命令的方式编辑文本)

字符串变量值

  • 双引号与单引号
    • 双引号(有空格的时候不能省略)
      • 允许$扩展,可调用其他变量的值
      • 出现特殊字符时,可采用符号转义
      • 当变量值不包括空格、制表符时、双引号通常被省略
    • 单引号
      • 所有字符均视为该字符本身(无特殊含义)
      • 不允许转义

发布全局变量

  • 表达式
    • export 变量名 = 值

read命令取值用法

  • 基本格式
    • read 变量名
    • read -p "提示信息" 变量名
    • read -s -p "提示信息" 变量名 (密码的输入就是使用这个命令)
root@iZwz9e9igexgtzexjocyw7Z:~/shell# read -p "please enter your name:" your_name
please enter your nameyangshimiao
root@iZwz9e9igexgtzexjocyw7Z:~/shell# echo $your_name
yangshimiao
root@iZwz9e9igexgtzexjocyw7Z:~/shell# read -s -p "please enter your name:" your_name
please enter your name:
root@iZwz9e9igexgtzexjocyw7Z:~/shell# echo $your_name
kkkk

基本运算

  • 使用expr命令工具
    • 格式:expr 整数1 运算符 整数2(记得数字和符号之间是有空格)
    • 乘法操作应采用*转义,避免被作为Shell通配符
    • 计算结果直接显示在屏幕上

例子如下:

x=48;y=21
expr $x + $y
expr $x / $y
expr $x * $y
  • 使用$[]表达式
    • 格式:$[整数1 运算符 整数2...]
    • 乘法不需要转义,运算符两侧可以空格,引用变量可省略$符号
    • 计算结果替换表达式本身,结合echo命令才能显示到屏幕上
    • 表达式还支持乘方运算:**

例子如下

x=48;y=21
echo $[x/y]
echo $[x*y]
echo $[10**3]
  • 自增处理
    • 格式:变量运算符=值
    • ++i与i++的区别
      • ++i
        • 先运算
        • 后取值,i的值会改变
      • i--
        • 先取值
        • 后运算,i的值不会变

例子如下

x=48
echo $[x+=2] # 50
echo $x   # 50

echo $[++x]  # 51
echo $x   # 51
  • 使用let命令操作变量
    • 操作变量运算,并保存新结果。也就是不受i++和++i的影响

例子

x=48;y=21
let x++,y/=3
echo $x,$y
# 49,7

随机数

  • 在/bin/bash环境可直接使用RANDOM,每次被调用时,随机生成0~32767之间的的一个整数

例子

echo $RANDOM
# 2940
echo $RANDOM
# 9402
echo $RANDOM
# 12387
  • 变化随机数范围
    • 范围扩大可以相乘:echo $[RANDOM*RANDOM]
    • 范围缩小可以取模:echo $[RANDOM%100]

使用seq命令

  • 根据指定条件输出一组整数
    • 默认从整数1开始
    • 缺省的增量步长也是1
    • 默认分隔符为换行

例子

seq 1 6
1
2
3
4
5
6
  • seq的命令格式
    • seq 末数
    • seq 首数 末数
    • seq 首数 步长 末数

例子(-s 可以改变分隔符 -w 可以显示等宽的数值)

seq -s ' '  10
# 1 2 3 4 5 6 7 8 9 10
seq -s ' ' 1 10
# 1 2 3 4 5 6 7 8 9 10
seq 1 5 10
# 1 5 10

数值运算的局限性

  • bash内建机制仅支持整数运算

    • expr命令和$[]表达式 不支持有小数的运算
      day3
运行脚本方式
调试shell脚本
忽略命令无关输出
记录错误输出
命令组合运用
标准输入和输出
重定向类型
shell变量
字符串变量值
发布全局变量
read命令取值用法
基本运算
随机数
使用seq命令
数值运算的局限性
字符串处理
条件
条件分支
流程控制
退出控制
shell函数
case分支
标准的系统服务管理(不适用与mac)
文件排序及统计
反序输出文本行
命令输出的局限性
tee整合重定向(mac中没有)
unix2dos与dos2unix转换
xargs工具及应用
expect预期交互控制
awk命令
sed(文本处理,通过是用命令的方式编辑文本)
  • 使用bc计算器

    • 多数Linux系统默认安装此工具

      • 支持高精度的数值运算
      • 直接运行bc可进入交互运算界面,quit退出
      • 设计scale=n可约束小数位
    • day3
运行脚本方式
调试shell脚本
忽略命令无关输出
记录错误输出
命令组合运用
标准输入和输出
重定向类型
shell变量
字符串变量值
发布全局变量
read命令取值用法
基本运算
随机数
使用seq命令
数值运算的局限性
字符串处理
条件
条件分支
流程控制
退出控制
shell函数
case分支
标准的系统服务管理(不适用与mac)
文件排序及统计
反序输出文本行
命令输出的局限性
tee整合重定向(mac中没有)
unix2dos与dos2unix转换
xargs工具及应用
expect预期交互控制
awk命令
sed(文本处理,通过是用命令的方式编辑文本)

    • 结合管道向bc发送表达式

      • 多个表达式以分号分隔
      • 通过echo命令+管道传递要计算的表达式
    • day3
运行脚本方式
调试shell脚本
忽略命令无关输出
记录错误输出
命令组合运用
标准输入和输出
重定向类型
shell变量
字符串变量值
发布全局变量
read命令取值用法
基本运算
随机数
使用seq命令
数值运算的局限性
字符串处理
条件
条件分支
流程控制
退出控制
shell函数
case分支
标准的系统服务管理(不适用与mac)
文件排序及统计
反序输出文本行
命令输出的局限性
tee整合重定向(mac中没有)
unix2dos与dos2unix转换
xargs工具及应用
expect预期交互控制
awk命令
sed(文本处理,通过是用命令的方式编辑文本)

    • 小数值比较

      • day3
运行脚本方式
调试shell脚本
忽略命令无关输出
记录错误输出
命令组合运用
标准输入和输出
重定向类型
shell变量
字符串变量值
发布全局变量
read命令取值用法
基本运算
随机数
使用seq命令
数值运算的局限性
字符串处理
条件
条件分支
流程控制
退出控制
shell函数
case分支
标准的系统服务管理(不适用与mac)
文件排序及统计
反序输出文本行
命令输出的局限性
tee整合重定向(mac中没有)
unix2dos与dos2unix转换
xargs工具及应用
expect预期交互控制
awk命令
sed(文本处理,通过是用命令的方式编辑文本)

字符串处理

截取

  • 使用expr命令(从开始)
    • 基本用法
      • expr substr $var2 起始位置 截取长度
  • 使用cut命令(从1开始)
    • 命令输出 | cut -c 起始位置-结束位置
    • 输出命令 | cut -d '分隔符' -f 字段编号(从1开始)

例子

var="CenterOS6.5"
echo $var1 | cut -c 5-6
# OS
echo $var1 | cut -c -6  # 简写从零开始
CentOS
echo $var1 | cut -d "t" -f2   # 使用t进行分隔
OS6.5
  • 使用${}表达式
    • 基本用法
      • ${var1:起始位置:截取长度}
      • ${var1:截取长度}

例子

var1="CentOS6.5"
echo ${var1:1:4}
# entO
echo ${var1::4} # mac不能使用
# Cent
echo ${var1:6:3}
# 6.5

替换

  • 使用${}表达式(只能连续)
    • ${var1/old/new}只替换一个
    • ${var1//old/new}替换所有

例子

var1="CentOS6.5Server"
echo ${var1/CentOS/yes}
# yes6.5Server
echo ${var1//e/o}
# ContOS6.5Sorvor
  • 使用tr单字替换工具
    • 基本用法
      • 命令输出 | tr 'abc' 'ABC'
      • 命令输出 | tr -d 'abc' ,删除abc单个字符

例子

head -1 /etc/passwd | tr 'or' 'OR'
# ROOT:x:O:O:ROOt:/bin/bash

路径处理

  • 文件路径 /etc/passwd的含义
    • 文件所在位置:/etc
    • 文件名称:passwd
  • dirname取目录位置
    • 基本用法
      • dirname 字符串
  • basename取基本名称
    • 基本用法
      • basename 字符串

例子

dirname "/etc/passwd"
# /etc
basename "/etc/passwd"
# passwd

使用随机字符串

  • 随机设备或工具
    • 常见的随机工具
      • 随机数变量:RANDOM
      • 特殊设备文件:/dev/urandom(会有乱码)
      • UUID生成命令:uuidgen(有-)

例子

day3
运行脚本方式
调试shell脚本
忽略命令无关输出
记录错误输出
命令组合运用
标准输入和输出
重定向类型
shell变量
字符串变量值
发布全局变量
read命令取值用法
基本运算
随机数
使用seq命令
数值运算的局限性
字符串处理
条件
条件分支
流程控制
退出控制
shell函数
case分支
标准的系统服务管理(不适用与mac)
文件排序及统计
反序输出文本行
命令输出的局限性
tee整合重定向(mac中没有)
unix2dos与dos2unix转换
xargs工具及应用
expect预期交互控制
awk命令
sed(文本处理,通过是用命令的方式编辑文本)

  • md5sum校验工具,只会生成数值和字母的字符串,但是mac不支持
    • 根据输入文本计算出256位的md5编码值
    • 输入文本有任何差异,编码结果都会不同步

例子

echo $RANDOME | md5sum
# 1badd736

多条命令嵌套使用

  • 使用$(命令)
  • 使用``

条件

  • 返回状态值$?(不受&>/dev/null影响)
    • 判断前一条命令是否执行成功(成功意思:能够输出预期结果)
      • 查看$?的值,如果为0,表示前一条命令执行成功
      • 如果$?的值为1或者其他数值,表示前一条命令失败异常

例子

ls -ld /root &>/dev/null;echo $?
# 0
ls -ld /rootx &>/dev/null;echo $?
# 2
  • 检查文件是否存在的方法
    • [-f /etc/hosts]如果是普通文件则返回0,如果不是返回1。但是这种方式在mac的命令行中不适配。命令行中将中括号替换为test
  • 比较整数数值(不是大于号小于号等于号进行判断,因为这些都有特殊意义)

day3
运行脚本方式
调试shell脚本
忽略命令无关输出
记录错误输出
命令组合运用
标准输入和输出
重定向类型
shell变量
字符串变量值
发布全局变量
read命令取值用法
基本运算
随机数
使用seq命令
数值运算的局限性
字符串处理
条件
条件分支
流程控制
退出控制
shell函数
case分支
标准的系统服务管理(不适用与mac)
文件排序及统计
反序输出文本行
命令输出的局限性
tee整合重定向(mac中没有)
unix2dos与dos2unix转换
xargs工具及应用
expect预期交互控制
awk命令
sed(文本处理,通过是用命令的方式编辑文本)

  • 字符串比较

    • 基本用法
      • [字符串1 选项 字符串2]
      • [选线 字符串]
    • day3
运行脚本方式
调试shell脚本
忽略命令无关输出
记录错误输出
命令组合运用
标准输入和输出
重定向类型
shell变量
字符串变量值
发布全局变量
read命令取值用法
基本运算
随机数
使用seq命令
数值运算的局限性
字符串处理
条件
条件分支
流程控制
退出控制
shell函数
case分支
标准的系统服务管理(不适用与mac)
文件排序及统计
反序输出文本行
命令输出的局限性
tee整合重定向(mac中没有)
unix2dos与dos2unix转换
xargs工具及应用
expect预期交互控制
awk命令
sed(文本处理,通过是用命令的方式编辑文本)
  • 将条件取反

    • 使用!操作符号
      • [! 测试条件]

条件分支

if 条件测试1 then
	命令序列
elif 条件测试2 then
	命令序列
eles
	命令序列
fi

流程控制

for

for 变量名 in 值列表 
do
	命令序列
done


## 例如
List=[]
for username in $List 
do
	echo username
done

while

while 条件测试
do 
	命令 序列
done

######
a=0
while [!a eg 10]
do 
	echo a
	a+=1
done

中断或跳过当前循环

  • continue
  • break

退出控制

  • 退出整个shell脚本,并返回状态值
    • exit

shell函数

  • 基本格式
function 函数名{
	命令序列
}
  • 调用已定义的函数
    • 格式:函数名
    • 先定义了才能调用,就好比脚本的内部命令
  • 函数传值
    • 格式:函数名 值1 值2
    • 传递的值作为函数的位置参数

case分支

case 变量值 in
模式1)
	命令序列;;
模式2)
	命令序号;;
*)
	默认命令序列
esac

标准的系统服务管理(不适用与mac)

这里放置蓝牙开光、网络开关等服务

  • 查看服务列表,自启状态
    • chkconfig --list [服务名]
    • chkconfig 服务名 on|off
  • 启动/停止/重启服务
    • service 服务名 start|stop|restart
    • /etc/init.d/服务名 start|stop|restart

文件排序及统计

  • ls列表的顺序

    • 默认按字母升序排列
      • --S:按文档大小降序排列
      • --t:按文档修改时间降序排列
      • --r:反序排列
  • uniq去重工具(优缺点,只能将连续的字符串进行删除)

    • 基本用法

      • 用法1: uniq 文件
      • 用法2: 命令|uniq
    • 缺点

      • day3
运行脚本方式
调试shell脚本
忽略命令无关输出
记录错误输出
命令组合运用
标准输入和输出
重定向类型
shell变量
字符串变量值
发布全局变量
read命令取值用法
基本运算
随机数
使用seq命令
数值运算的局限性
字符串处理
条件
条件分支
流程控制
退出控制
shell函数
case分支
标准的系统服务管理(不适用与mac)
文件排序及统计
反序输出文本行
命令输出的局限性
tee整合重定向(mac中没有)
unix2dos与dos2unix转换
xargs工具及应用
expect预期交互控制
awk命令
sed(文本处理,通过是用命令的方式编辑文本)
    • 解决缺点方式

      • 先排序后去重
        • day3
运行脚本方式
调试shell脚本
忽略命令无关输出
记录错误输出
命令组合运用
标准输入和输出
重定向类型
shell变量
字符串变量值
发布全局变量
read命令取值用法
基本运算
随机数
使用seq命令
数值运算的局限性
字符串处理
条件
条件分支
流程控制
退出控制
shell函数
case分支
标准的系统服务管理(不适用与mac)
文件排序及统计
反序输出文本行
命令输出的局限性
tee整合重定向(mac中没有)
unix2dos与dos2unix转换
xargs工具及应用
expect预期交互控制
awk命令
sed(文本处理,通过是用命令的方式编辑文本)
  • sort排序工具

    • 基本用法
      • 用法1:sort 文件
      • 用法2:命令|sort
    • 常用命令选项
      • --u:去除重复行
      • --n:按数字顺序升序排列
      • --r:反向排序
      • --k:优先对第几列的内容排序

反序输出文本行

  • tac命令工具(mac不支持)
    • 以行为单位反序,与cat命令显示效果相反
  • rev命令工具
    • 以字符为单位反序,与echo命令效果相反

命令输出的局限性

  • 标准输出、管道
    • 只在当前终端上显示
    • 无法保存结果
  • 重定向输出操作
    • 只保存到指定文件
    • 无法显示结果

tee整合重定向(mac中没有)

  • 作用:即显示结果,也保存结果
  • 典型用法
    • 命令 | tee 文件

unix2dos与dos2unix转换

  • unix2dos表示linux转化为win;dos2unix表示win转化为Linux

xargs工具及应用

  • 根据给定的参数组(以行为单位)分次执行目标命令行
    • 用法1:提供参数的命令 | xargs 目标命令
    • 用法2:xargs --arg-file=提供参数的文件 目标命令行

例子

find / | xargs ls -lh

xargs处理参数调用

  • 文件改名、复制等操作
    • 选项-I定义标记,比如-I{}(相当于每一行的值)
    • 在目标命令中可以嵌入{}引用

例子

day3
运行脚本方式
调试shell脚本
忽略命令无关输出
记录错误输出
命令组合运用
标准输入和输出
重定向类型
shell变量
字符串变量值
发布全局变量
read命令取值用法
基本运算
随机数
使用seq命令
数值运算的局限性
字符串处理
条件
条件分支
流程控制
退出控制
shell函数
case分支
标准的系统服务管理(不适用与mac)
文件排序及统计
反序输出文本行
命令输出的局限性
tee整合重定向(mac中没有)
unix2dos与dos2unix转换
xargs工具及应用
expect预期交互控制
awk命令
sed(文本处理,通过是用命令的方式编辑文本)

xargs获取值列表

  • 结合选项-d指定分隔

例子

day3
运行脚本方式
调试shell脚本
忽略命令无关输出
记录错误输出
命令组合运用
标准输入和输出
重定向类型
shell变量
字符串变量值
发布全局变量
read命令取值用法
基本运算
随机数
使用seq命令
数值运算的局限性
字符串处理
条件
条件分支
流程控制
退出控制
shell函数
case分支
标准的系统服务管理(不适用与mac)
文件排序及统计
反序输出文本行
命令输出的局限性
tee整合重定向(mac中没有)
unix2dos与dos2unix转换
xargs工具及应用
expect预期交互控制
awk命令
sed(文本处理,通过是用命令的方式编辑文本)

expect预期交互控制

  • 手动交互
    • 直接运行expect命令
    • 进入交互式指令测试环境
  • 自动交互

awk命令

  • 语法格式
    • 格式1:前置命令 | awk [选项] '[条件]{编辑命令}'
    • 格式2:awk [选项] '[条件]{编辑命令}' 文件... (如果命令有多条,可以使用分号分隔)
  • 常用命令选项
    • -F:指定分隔符,可省略(默认空格或着tab位)
    • -f:调用awk脚本进行处理

例子

day3
运行脚本方式
调试shell脚本
忽略命令无关输出
记录错误输出
命令组合运用
标准输入和输出
重定向类型
shell变量
字符串变量值
发布全局变量
read命令取值用法
基本运算
随机数
使用seq命令
数值运算的局限性
字符串处理
条件
条件分支
流程控制
退出控制
shell函数
case分支
标准的系统服务管理(不适用与mac)
文件排序及统计
反序输出文本行
命令输出的局限性
tee整合重定向(mac中没有)
unix2dos与dos2unix转换
xargs工具及应用
expect预期交互控制
awk命令
sed(文本处理,通过是用命令的方式编辑文本)

  • 内置变量

day3
运行脚本方式
调试shell脚本
忽略命令无关输出
记录错误输出
命令组合运用
标准输入和输出
重定向类型
shell变量
字符串变量值
发布全局变量
read命令取值用法
基本运算
随机数
使用seq命令
数值运算的局限性
字符串处理
条件
条件分支
流程控制
退出控制
shell函数
case分支
标准的系统服务管理(不适用与mac)
文件排序及统计
反序输出文本行
命令输出的局限性
tee整合重定向(mac中没有)
unix2dos与dos2unix转换
xargs工具及应用
expect预期交互控制
awk命令
sed(文本处理,通过是用命令的方式编辑文本)

例子

day3
运行脚本方式
调试shell脚本
忽略命令无关输出
记录错误输出
命令组合运用
标准输入和输出
重定向类型
shell变量
字符串变量值
发布全局变量
read命令取值用法
基本运算
随机数
使用seq命令
数值运算的局限性
字符串处理
条件
条件分支
流程控制
退出控制
shell函数
case分支
标准的系统服务管理(不适用与mac)
文件排序及统计
反序输出文本行
命令输出的局限性
tee整合重定向(mac中没有)
unix2dos与dos2unix转换
xargs工具及应用
expect预期交互控制
awk命令
sed(文本处理,通过是用命令的方式编辑文本)

  • awk处理时机

    • 处理前,BEGIN{}

      • 读入第一行文本之前执行
      • 一般用来初始化操作
    • 逐行处理,{}

      • 逐行读入文本执行相应的处理
    • END{}

      • 处理完最后一行文本之后执行

例子

day3
运行脚本方式
调试shell脚本
忽略命令无关输出
记录错误输出
命令组合运用
标准输入和输出
重定向类型
shell变量
字符串变量值
发布全局变量
read命令取值用法
基本运算
随机数
使用seq命令
数值运算的局限性
字符串处理
条件
条件分支
流程控制
退出控制
shell函数
case分支
标准的系统服务管理(不适用与mac)
文件排序及统计
反序输出文本行
命令输出的局限性
tee整合重定向(mac中没有)
unix2dos与dos2unix转换
xargs工具及应用
expect预期交互控制
awk命令
sed(文本处理,通过是用命令的方式编辑文本)

  • awk处理条件

    • 条件表示形式
      • 正则表达式

        • /正则表达式/
        • 匹配,!不匹配
        • day3
运行脚本方式
调试shell脚本
忽略命令无关输出
记录错误输出
命令组合运用
标准输入和输出
重定向类型
shell变量
字符串变量值
发布全局变量
read命令取值用法
基本运算
随机数
使用seq命令
数值运算的局限性
字符串处理
条件
条件分支
流程控制
退出控制
shell函数
case分支
标准的系统服务管理(不适用与mac)
文件排序及统计
反序输出文本行
命令输出的局限性
tee整合重定向(mac中没有)
unix2dos与dos2unix转换
xargs工具及应用
expect预期交互控制
awk命令
sed(文本处理,通过是用命令的方式编辑文本)
      • 数值/字符串比较

        • ==等于、!=不等于
        • >大于,>= 大于或等于
      • 逻辑比较

        • && 逻辑与
        • || 逻辑或
        • day3
运行脚本方式
调试shell脚本
忽略命令无关输出
记录错误输出
命令组合运用
标准输入和输出
重定向类型
shell变量
字符串变量值
发布全局变量
read命令取值用法
基本运算
随机数
使用seq命令
数值运算的局限性
字符串处理
条件
条件分支
流程控制
退出控制
shell函数
case分支
标准的系统服务管理(不适用与mac)
文件排序及统计
反序输出文本行
命令输出的局限性
tee整合重定向(mac中没有)
unix2dos与dos2unix转换
xargs工具及应用
expect预期交互控制
awk命令
sed(文本处理,通过是用命令的方式编辑文本)
      • 运算符

        • 加减乘除,取模
        • 自增、自减
        • day3
运行脚本方式
调试shell脚本
忽略命令无关输出
记录错误输出
命令组合运用
标准输入和输出
重定向类型
shell变量
字符串变量值
发布全局变量
read命令取值用法
基本运算
随机数
使用seq命令
数值运算的局限性
字符串处理
条件
条件分支
流程控制
退出控制
shell函数
case分支
标准的系统服务管理(不适用与mac)
文件排序及统计
反序输出文本行
命令输出的局限性
tee整合重定向(mac中没有)
unix2dos与dos2unix转换
xargs工具及应用
expect预期交互控制
awk命令
sed(文本处理,通过是用命令的方式编辑文本)
  • awk分支流程

    • 单分支
      • if(条件){编辑指令}
    • 双分支
      • if(条件){编辑指令}else{编辑指令}
    • 多分支
      • if(条件){编辑指令}else if{编辑指令} else{编辑指令}
    • day3
运行脚本方式
调试shell脚本
忽略命令无关输出
记录错误输出
命令组合运用
标准输入和输出
重定向类型
shell变量
字符串变量值
发布全局变量
read命令取值用法
基本运算
随机数
使用seq命令
数值运算的局限性
字符串处理
条件
条件分支
流程控制
退出控制
shell函数
case分支
标准的系统服务管理(不适用与mac)
文件排序及统计
反序输出文本行
命令输出的局限性
tee整合重定向(mac中没有)
unix2dos与dos2unix转换
xargs工具及应用
expect预期交互控制
awk命令
sed(文本处理,通过是用命令的方式编辑文本)
  • while循环结构

    • while(条件){编辑指令}
    • do{编辑指令}while(条件)
    • day3
运行脚本方式
调试shell脚本
忽略命令无关输出
记录错误输出
命令组合运用
标准输入和输出
重定向类型
shell变量
字符串变量值
发布全局变量
read命令取值用法
基本运算
随机数
使用seq命令
数值运算的局限性
字符串处理
条件
条件分支
流程控制
退出控制
shell函数
case分支
标准的系统服务管理(不适用与mac)
文件排序及统计
反序输出文本行
命令输出的局限性
tee整合重定向(mac中没有)
unix2dos与dos2unix转换
xargs工具及应用
expect预期交互控制
awk命令
sed(文本处理,通过是用命令的方式编辑文本)
  • for循环
    -day3
运行脚本方式
调试shell脚本
忽略命令无关输出
记录错误输出
命令组合运用
标准输入和输出
重定向类型
shell变量
字符串变量值
发布全局变量
read命令取值用法
基本运算
随机数
使用seq命令
数值运算的局限性
字符串处理
条件
条件分支
流程控制
退出控制
shell函数
case分支
标准的系统服务管理(不适用与mac)
文件排序及统计
反序输出文本行
命令输出的局限性
tee整合重定向(mac中没有)
unix2dos与dos2unix转换
xargs工具及应用
expect预期交互控制
awk命令
sed(文本处理,通过是用命令的方式编辑文本)

  • 流程控制

    • day3
运行脚本方式
调试shell脚本
忽略命令无关输出
记录错误输出
命令组合运用
标准输入和输出
重定向类型
shell变量
字符串变量值
发布全局变量
read命令取值用法
基本运算
随机数
使用seq命令
数值运算的局限性
字符串处理
条件
条件分支
流程控制
退出控制
shell函数
case分支
标准的系统服务管理(不适用与mac)
文件排序及统计
反序输出文本行
命令输出的局限性
tee整合重定向(mac中没有)
unix2dos与dos2unix转换
xargs工具及应用
expect预期交互控制
awk命令
sed(文本处理,通过是用命令的方式编辑文本)

    • day3
运行脚本方式
调试shell脚本
忽略命令无关输出
记录错误输出
命令组合运用
标准输入和输出
重定向类型
shell变量
字符串变量值
发布全局变量
read命令取值用法
基本运算
随机数
使用seq命令
数值运算的局限性
字符串处理
条件
条件分支
流程控制
退出控制
shell函数
case分支
标准的系统服务管理(不适用与mac)
文件排序及统计
反序输出文本行
命令输出的局限性
tee整合重定向(mac中没有)
unix2dos与dos2unix转换
xargs工具及应用
expect预期交互控制
awk命令
sed(文本处理,通过是用命令的方式编辑文本)

sed(文本处理,通过是用命令的方式编辑文本)

  • 主要用法
    • 格式1:前置命令|sed [选项] '编辑指令'
    • 格式2:sed [选项] '编辑指令' 文件
      • 编辑指令:[定址符]处理动作
        • 定支付:[地址1,地址2]

day3
运行脚本方式
调试shell脚本
忽略命令无关输出
记录错误输出
命令组合运用
标准输入和输出
重定向类型
shell变量
字符串变量值
发布全局变量
read命令取值用法
基本运算
随机数
使用seq命令
数值运算的局限性
字符串处理
条件
条件分支
流程控制
退出控制
shell函数
case分支
标准的系统服务管理(不适用与mac)
文件排序及统计
反序输出文本行
命令输出的局限性
tee整合重定向(mac中没有)
unix2dos与dos2unix转换
xargs工具及应用
expect预期交互控制
awk命令
sed(文本处理,通过是用命令的方式编辑文本)

  • 常见命令选项
    • -n:屏蔽默认输出(全部文本)
    • -i:直接修改文件内容
    • -f:使用sed脚本
    • -e:可指定多个处理动作
    • -r:启动扩展的正则表达式,若与其他选项一起使用,应用为首个选项
    • {}:可组合多个命令,以分号分隔
  • 处理动作

day3
运行脚本方式
调试shell脚本
忽略命令无关输出
记录错误输出
命令组合运用
标准输入和输出
重定向类型
shell变量
字符串变量值
发布全局变量
read命令取值用法
基本运算
随机数
使用seq命令
数值运算的局限性
字符串处理
条件
条件分支
流程控制
退出控制
shell函数
case分支
标准的系统服务管理(不适用与mac)
文件排序及统计
反序输出文本行
命令输出的局限性
tee整合重定向(mac中没有)
unix2dos与dos2unix转换
xargs工具及应用
expect预期交互控制
awk命令
sed(文本处理,通过是用命令的方式编辑文本)

  • 输出文本

day3
运行脚本方式
调试shell脚本
忽略命令无关输出
记录错误输出
命令组合运用
标准输入和输出
重定向类型
shell变量
字符串变量值
发布全局变量
read命令取值用法
基本运算
随机数
使用seq命令
数值运算的局限性
字符串处理
条件
条件分支
流程控制
退出控制
shell函数
case分支
标准的系统服务管理(不适用与mac)
文件排序及统计
反序输出文本行
命令输出的局限性
tee整合重定向(mac中没有)
unix2dos与dos2unix转换
xargs工具及应用
expect预期交互控制
awk命令
sed(文本处理,通过是用命令的方式编辑文本)

  • 删除文本

day3
运行脚本方式
调试shell脚本
忽略命令无关输出
记录错误输出
命令组合运用
标准输入和输出
重定向类型
shell变量
字符串变量值
发布全局变量
read命令取值用法
基本运算
随机数
使用seq命令
数值运算的局限性
字符串处理
条件
条件分支
流程控制
退出控制
shell函数
case分支
标准的系统服务管理(不适用与mac)
文件排序及统计
反序输出文本行
命令输出的局限性
tee整合重定向(mac中没有)
unix2dos与dos2unix转换
xargs工具及应用
expect预期交互控制
awk命令
sed(文本处理,通过是用命令的方式编辑文本)

  • 替换文本

day3
运行脚本方式
调试shell脚本
忽略命令无关输出
记录错误输出
命令组合运用
标准输入和输出
重定向类型
shell变量
字符串变量值
发布全局变量
read命令取值用法
基本运算
随机数
使用seq命令
数值运算的局限性
字符串处理
条件
条件分支
流程控制
退出控制
shell函数
case分支
标准的系统服务管理(不适用与mac)
文件排序及统计
反序输出文本行
命令输出的局限性
tee整合重定向(mac中没有)
unix2dos与dos2unix转换
xargs工具及应用
expect预期交互控制
awk命令
sed(文本处理,通过是用命令的方式编辑文本)

sed文本块处理

  • 处理动作

day3
运行脚本方式
调试shell脚本
忽略命令无关输出
记录错误输出
命令组合运用
标准输入和输出
重定向类型
shell变量
字符串变量值
发布全局变量
read命令取值用法
基本运算
随机数
使用seq命令
数值运算的局限性
字符串处理
条件
条件分支
流程控制
退出控制
shell函数
case分支
标准的系统服务管理(不适用与mac)
文件排序及统计
反序输出文本行
命令输出的局限性
tee整合重定向(mac中没有)
unix2dos与dos2unix转换
xargs工具及应用
expect预期交互控制
awk命令
sed(文本处理,通过是用命令的方式编辑文本)

sed导入导出

day3
运行脚本方式
调试shell脚本
忽略命令无关输出
记录错误输出
命令组合运用
标准输入和输出
重定向类型
shell变量
字符串变量值
发布全局变量
read命令取值用法
基本运算
随机数
使用seq命令
数值运算的局限性
字符串处理
条件
条件分支
流程控制
退出控制
shell函数
case分支
标准的系统服务管理(不适用与mac)
文件排序及统计
反序输出文本行
命令输出的局限性
tee整合重定向(mac中没有)
unix2dos与dos2unix转换
xargs工具及应用
expect预期交互控制
awk命令
sed(文本处理,通过是用命令的方式编辑文本)

例子

day3
运行脚本方式
调试shell脚本
忽略命令无关输出
记录错误输出
命令组合运用
标准输入和输出
重定向类型
shell变量
字符串变量值
发布全局变量
read命令取值用法
基本运算
随机数
使用seq命令
数值运算的局限性
字符串处理
条件
条件分支
流程控制
退出控制
shell函数
case分支
标准的系统服务管理(不适用与mac)
文件排序及统计
反序输出文本行
命令输出的局限性
tee整合重定向(mac中没有)
unix2dos与dos2unix转换
xargs工具及应用
expect预期交互控制
awk命令
sed(文本处理,通过是用命令的方式编辑文本)

本次笔记是学习下面学习视频的笔记:如果觉得侵犯了,麻烦说明下,我很乖的

https://www.bilibili.com/video/BV1sq4y1K7nM?p=19&spm_id_from=pageDriver