02_Shell小工具与判断语法

一、Shell编程小工具

1.1、tr命令

tr 命令是 Linux 文本处理中的基础工具之一。

trtranslate)命令用于对来自标准输入(stdin)的文本进行:

基本语法

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了



![](/assets/feishu-images/358975c0b2b82a3da861bf80.png)


![](/assets/feishu-images/f5bb873bad1e8a5c51d56901.png)


![](/assets/feishu-images/31fdf74620e6b2aac32fbf32.png)


![](/assets/feishu-images/f53e7c1b61fff5cfab18a213.png)

![](/assets/feishu-images/c12d43eb99a95e36d8fe2d04.png)





| **写法** | **示例** | **说明** |
|---|---|---|

> 

示例命令:

成立

有此文件

没有此目录

有目录

存在

#!/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` | 【核心】 | 递归创建目录;父目录不存在时一并创建,目录已经存在也不报错。 |

**注意事项:**

注意事项: