文本处理工具
tr | 替换 压缩 删除功能 |
---|---|
tr 1 a | 遇到1换成a |
tr -s | 压缩 |
tr -d | 删除 |
seq 10 | 打印10个数字 |
---|---|
seq -s + 100 |bc | 算出1到100的和 |
cut | 切列 |
---|---|
cut -d | 指明分隔符 |
cut -f | 获取想要的字段 |
注意cut 不能将连续的字符当做分隔符
sort | 排序 默认不是以数字排序 |
---|---|
-n | 执行按数字大小整理 |
-r | 倒序显示 |
uniq 去重 只能将连续的重去掉
shell 的作用
Shell(壳) 是一类程序的总称,用于将人类使用的高级语言转换成机器能看懂的二进制语言,为用户和内核之间的交互提供接口
不同的shell内部指令、运行环境等会有所区别
shell 脚本的组成
解释器:第一行开头“#!/binbash"表示一下代码语句是通过/bin/bash程序来解释执行
注释:以#开头的语句表示为注释信息 #注释
执行的命令:比如echo命令用于输出” “之间的字符串
#!/bin/bashecho “hello world”
[root@localhost ~]# vim l1.sh
#!/bin/bash
echo "当前日期和时间:"
date
[root@localhost ~]# bash l1.sh
当前日期和时间:
2024年 05月 09日 星期四 09:59:15 CS
执行脚本
1.直接使用 shell 程序来读取脚本命令不需要执行权限
2.使用路径执行 绝对路径 相对路径 需要权限
3.source和 . 点等于source 不需要使用权限
第一和第二钟执行方式不会影响当前环境中bash设置,会开启一个新的bash环境
不推荐使用source 会影响当前bash环境中的配置
脚本错误调试
1.命令错误
命令出错不会影响接下来的命令继续
2.语法错误·
会影响接下来的命令继续
3.逻辑错误
只能自己去筛查代码是否正确
总结:
1.语法错误,会导致后续的命令不继续执行,可以用bash -n 检查错误,提示的出错行数不一定是准确的
2.命令错误,默认后续的命令还会继续执行,用bash -n 无法检查出来 ,可以使用 bash -x 进行观察
3.逻辑错误:只能使用 bash -x 进行
set -e
在脚本的前面输入set -e 一旦出错立即停止
重定向
标准输入 | /dev/stdin | 0 | 键盘 |
---|---|---|---|
标准输出 | /dev/stdout | 1 | 显示器 |
标准错误输出 | /dev/stder | e | 显示器 |
重定向操作
类型 | 操作符 | 用途 |
---|---|---|
重定向输入 | < | 从指定的文件读取数据,而不是从键盘输入 |
重定向输出 | 1> | 将输出结果保存到指定的文件(覆盖原有内容) |
>> | 将输出结果追加到指定的文件尾部 | |
标准错误输出 | 2> | 将错误信息保存到指定的文件(覆盖原有内容) |
2>> | 标准错误输出结果追加到指定的文件尾部 | |
混合输出 | &>无论对错都可以重定向 | 将标准输出、标准错误的内容保存到同一个文件中 |
管道符
将管道符号“|”左侧的命令输出的结果,作呕为右侧命令的输入(处理对象),同一行命令可以使用多个管道。
类型 | 设备文件 | 文件描述编号 | 默认设备 |
---|---|---|---|
标准输入 | /dev/stdin | 0 | 键盘 |
标准输出 | /dev/stdout | 1 | 显示器 |
标准错误输出 | /dev/stderr | 2 | 显示器 |
- 标准输入:从该设备接收用户输入的数据
- 标准输出:通过该设备向用户输出数据
- 标准错误:通过该设备报告执行出错信息
重定向操作
类型 | 操作符 | 用途 |
---|---|---|
重定向输入 | < | 从指定的文件读取数据,而不是从键盘输入 |
重定向输出 | 1> | 将输出结果保存到指定文件(覆盖原有内容) |
>> | 将输出结果追加到指定的文件尾部 | |
标准错误输出 | 2> | 将错误信息保存到指定的文件(覆盖原有内容) |
2>> | 标准错误输出结果追加到指定的文件尾部 | |
混合输出 | &>无论对错都可以重定向 | 将标准输出、标准错误的内容保存到同一个文件中 |
Shell脚本变量
作用
Shell 变量用来存放系统和用户需要使用的特定参数(值),而且这些参数可以根据用户的设定或系统环境的变化而相应变化
变量类型
-
自定义变量:由用户自己定义,修改和使用
-
特殊变量:环境变量、只读变量、位置变量、预定义变量
自定义变量
变量名等于变量值
例子:
a=10 定义了一个新变量,变量名a,变量值为10
调用变量
echo $cto
echo $变量名
特殊符号
{} | 确定了变量起始结束的范围,只要有变量就加 |
---|---|
“ ” | 弱引用可以识别变量 |
’ ‘ | 强引用不识别变量 |
`` | 反撇 调用命令执行结果 效果与{}$相同 |
取消变量
unset 变量名
read -p
是一个常用的bash命令,用于从用户输入中读取值并将其存储在变量中
-p 选项用于显示提示信息,提示用户输入
[root@localhost data]# vim mz.sh
#!/bin/bashread -p "请输入你的名字:" name
echo "你好,$name!"
:wq
[root@localhost data]# bash mz.sh
请输入你的名字:lisi
你好,lisi!
将局部变量变为全局变量
局部变量:新定义的变量只在当前的shell环境中有效,当进入子程序或新的shell环境中,局部变量将无法再起作用
全局变量:在新的shell环境中可以继续使用
通过内部命令export将局部变量为全局变量
格式1:export 变量名
格式2:export 变量名=变量值
环境变量
环境变量由系统提前创建,用来设置用户的工作环境
环境变量的全局配置文件
#配置文件位置
/etc/profile
##修改此文件,全局生效,可用于长期变更或设置环境变量
只读变量
将变量声明为只读(read-only)后,不能再修改变量的值
readonly 变量名 #将变量声明为只读变量
位置变量
$1, $2, $3, … $n 表示命令行参数的位置值
$1 表示第一个参数,$2 表示第二个参数,以此类推。
当n大于9时,需要加上{ },比如第十个位置,要用 ${10}表示
预定义变量
状态变量 | 功能 |
---|---|
$* | 表示所有位置参数的内容堪称一个整体返回 |
$@ | 表示所有位置参数的内容分割成n份,每份作为一个独立的个体返回 返回所有 |
$? | 表示前一条命令执行后的返回状态,返回值为 0 表示执行正确,返回任何非 0值均表示执行出现异常 |
$# | 表示命令行中位置参数的总个数 |
$0 | 表示当前执行的脚本或程序的名称即程序本身 |
$$ | 当前进程id |
$! | 后台任务最后一个id |