02_Shell小工具与判断语法
一、Shell编程小工具
1.1、tr命令
tr 命令是 Linux 文本处理中的基础工具之一。
tr(translate)命令用于对来自标准输入(stdin)的文本进行:
- 字符替换(replace)
- 字符删除(delete)
- 字符压缩(squeeze)
基本语法
tr [选项] [SET1] [SET2]
SET1 要查找(匹配)的字符集合
SET2 要替换成的字符集合
# 选项 控制行为(删除、压缩等)
-d: 删除(delete)指定字符
-s: 压缩(squeeze)重复字符
-c: 取反(complement)匹配集合以外的字符
----------------------------------------- 特殊字符集合
[a-z] 匹配所有小写字母
[A-Z] 匹配所有大写字母
[0-9] 匹配所有数字
[0-9a-zA-Z] 匹配所有数字与大小写字母案例1:小写转大写
# 把字符串中小写的字母,全替换成大写 hello这样的字母给替换成大写
[root@node1 /scripts/day03]# echo 'hello world' | tr 'hello' 'HELLO'
HELLO wOrLd命令作用:
- 把命令后的文本或变量展开结果写到标准输出;配合
>或>>时会改为写入文件,前者覆盖、后者追加。
执行结果:
- 成功后文本或变量展开结果会输出到终端;带重定向时会写入目标文件。
关键参数:
注意事项:
6
**关键参数:**
**注意事项:**
192.168.50.213
#!/bin/bash
6
0注意事项:
sort它将文件的每一行作为一个单位,从首字符向后,依次按ASCII码值(字典排序)进行比较,最后将他们按升序输出。
基本语法
语法:
案例1:对文件内容排序
----------------------------------------------
2222
1111
1011
22121
33332
5555
4444
2222$
1111$
1011$
22121$
33332$
5555$
4444$
-----------------------------------------------
1011
1111
22121
2222
33332
4444
5555注意事项:
1011 1111 2222 4444 5555 22121 33332
33332 22121 5555 4444 2222 1111 1011
案例3:指定分隔符与字段
itwu:x:1000:1000::/home/itwu:/bin/bash案例4:排序后写入新文件
案例5:按文件大小排序
注意事项:
基本语法
常见选项:
案例1:去除相邻重复行
-------------------------------
Alice$
Alice$
Bob$
Bob$
Bob$
Charlie$
--------------------------------注意事项:
**注意事项:**注意事项:
**案例5:**在Linux服务器上,运维团队检测到多次失败的登录尝试,怀疑存在潜在的恶意入侵。为了提高服务器的安全性,运维团队需要快速找到频繁失败登录的IP地址,以便采取进一步的安全措施(如阻止IP、加强认证机制等)
>
注意事项:
应用场景:
保存日志文件:在执行长时间运行的命令时,可以实时查看输出并保存为日志,方便追踪问题。
结合管道使用:在复杂的管道命令中,将中间结果保存到文件中,同时继续传递给下一个命令。
基本语法
选项:
案例1:查看并保存系统状态
注意事项:
192.168.50.213 192.168.50.213
**注意事项:**
基本语法
-d:delimiter,自定义间隔符,默认是tab
-s:合并到同一行准备数据
1 2 3
**注意事项:**案例2:使用自定义分隔符
a,1 b,2 c,3 d,
a,b,c注意事项:
name,age a,1 b,2 c,3 d,
**注意事项:**
https://code.visualstudio.com/download
一路下一步就ok了





| **写法** | **示例** | **说明** |
|---|---|---|
>
示例命令:
成立
有此文件
没有此目录
有目录
存在
#!/bin/bash
**注意事项:**
案例:
有读
#!/bin/bash
这是一个测试 完成
**注意事项:**
案例演示:
相同 相同
**注意事项:**
案例:
#!/bin/bash
num1=1 num2=2
成立
**注意事项:**
注:在比较时建议给加上双引号括起来案例演示:
#!/bin/bash
t1='a' t2='b'
字符存在
**注意事项:**
在条件判断中,可以组合多个条件:
| **运算符** | **含义** | **示例** | **说明** |
|---|---|---|---|
| `-a` | 与(AND) | `[ $a -gt 0 -a $b -gt 0 ]` | 两个条件同时满足,整个大条件为真 |
| `-o` | 或(OR) | `[ $a -eq 1 -o $b -eq 2 ]` | 两个条件满足任意一个,整个大条件为真 |
| `!` | 非(NOT) | `[ ! -f /etc/passwd ]` | 取反 |
| 运算符 | 含义 | 示例 | **说明** |
|---|---|---|---|
| `&&` | 与 | `[[ $a -gt 0 && $b -gt 0 ]]` | 两个条件同时满足,整个大条件为真 |
| `\|\|` | 或 | `[[ $a -eq 10 \|\| $b -eq 10 ]]` | 两个条件满足任意一个,整个大条件为真 |
案例演示:
#!/bin/bash
## || 或
没有
没有@注意事项:
在日常运维中,管理员往往需要定期执行一系列检查操作,例如:
检查系统负载、活动进程和日志信息。
目前,手动执行这些检查任务耗时且容易出错,因此需要一个自动化脚本来定期执行这些任务,并将检查结果保存为日志,以供运维人员查看和分析。
#!/bin/bash
dirLogPath="/var/log/systemCheck" logName="$(hostname)-${dt}.log"
logPath=$dirLogPath/$logName
#第1行 #第2行 #标识符名称,它一定要顶格
----------------------------------
**命令拆解:**
| 命令部分 | 重要程度 | 详细解释 |
|---|---|---|
| `-p` | 【核心】 | 递归创建目录;父目录不存在时一并创建,目录已经存在也不报错。 |
**注意事项:**注意事项:
本文由飞书云文档同步生成。涉及命令、SQL、配置示例时,请以飞书源文档和实际环境执行结果为准。