Linux中Shell脚本的常用命令

一、设置主机名称

1、通过修改系统文件来修改主机名称

复制代码
[root@sakura1 桌面]# vim /etc/hostname
sakura
  • /etc/hostname:Linux 系统中存储主机名的配置文件。
  • 修改完文件后,在当前的shell中是不生效的,需要关闭当前shell后重新开启才能看到效果。

2、通过命令来更改主机名称

复制代码
[root@sakura1 桌面]# hostnamectl hostname sakura
  • 修改后立即生效,无需重启shell

二、简单处理字符

seq的基本语法:

复制代码
seq [选项] 终止值
seq [选项] 起始值 终止值
seq [选项] 起始值 步长 终止值

seq常用选项详解

选项 说明 示例 输出
无选项 默认生成整数序列 seq 3 1 2 3
-f, --format=格式 指定输出格式(支持 printf 样式) seq -f "%03g" 3 001 002 003
-s, --separator=分隔符 指定分隔符(默认是换行符 \n seq -s " " 3 1 2 3
-w, --equal-width 等宽输出(自动补零) seq -w 8 10 08 09 10
指定步长 seq 1 2 10 1 3 5 7 9

printf的基本语法:

复制代码
printf 格式字符串 [参数1 参数2 ...]
  • 格式字符串 :包含普通文本和格式化占位符(如 %s%d)。
  • 参数:依次替换格式字符串中的占位符。

1、printf常用格式说明符

说明符 含义 示例 输出
%s 字符串 printf "%s" "hello" hello
%d 十进制整数 printf "%d" 255 255
%f 浮点数 printf "%f" 3.14 3.140000
%x 十六进制(小写) printf "%x" 255 ff
%X 十六进制(大写) printf "%X" 255 FF
%o 八进制 printf "%o" 64 100
%c 单个字符 printf "%c" 65 A (ASCII 65)
%% 百分号 printf "%%" %

2、printf常用修饰符

修饰符 功能 示例 输出
%Ns 最小宽度N(不足空格填充) printf "%5s" "hi" hi
%-Ns 左对齐字符串,并确保输出宽度至少为 5 个字符。若字符串长度不足,会在右侧补空格;若超过 5 个字符,则完整显示。 printf "%-5s" "hi" hi
%0Nd 数字补零 printf "%05d" 42 00042
%.Mf 浮点数保留M位小数 printf "%.2f" 3.14159 3.14
%x.yf 总宽度x,小数位y printf "%8.3f" 3.14 3.140
\n 换行 printf "Line1\nLine2" 两行文本
\t 制表符 printf "A\tB" A B
\\ 反斜杠 printf "\\" \

echo的基本语法:

复制代码
echo [选项] [字符串...]
  • 若不指定选项,echo 会将所有参数连接并输出,参数间用空格分隔。

1、echo的常用选项(GNU 扩展版)

选项 说明 示例 输出
-n 不输出结尾的换行符 echo -n "Hello"; echo " World" Hello World
-e 启用反斜杠转义解释 echo -e "Line1\nLine2" Line1 Line2
-E 禁用反斜杠转义解释(默认) echo -E "Line1\nLine2" Line1\nLine2
--help 显示帮助信息 echo --help 帮助文档
--version 显示版本信息 echo --version 版本信息

2、转义字符(需配合 -e 使用)

转义序列 含义 示例 输出
\n 换行 echo -e "A\nB" A B
\t 水平制表符 echo -e "A\tB" A B
\\ 反斜杠 echo -e "\\" \
\a 警报(响铃) echo -e "\a" 终端响铃
\b 退格 echo -e "123\b4" 124
\r 回车 echo -e "Old\rNew" New
\v 垂直制表符 echo -e "A\vB" A   B
\c 禁止继续输出 echo -e "Hello\c World" Hello
\0NNN 八进制值字符 echo -e "\0101" A (ASCII 65)
\xHH 十六进制值字符 echo -e "\x41" A

1. 打印连续数字

(1)连续打印3个数字

(2)指定打印格式

(3)设定打印步长

2. 反向打印文件内容

3. 打印字符

(1)使用printf命令

打印字符

指定格式打印字符

打印百分号

打印整数、浮点数

(2)使用echo命令

默认会换行打印字符

不换行打印字符

解析转义字符

4. 使用 sort 命令对内容进行排序

sort 命令常用选项速查表

选项 长选项 功能描述 使用示例
基础排序
-r --reverse 逆序排序(降序) sort -r file.txt
-n --numeric-sort 按数值大小排序 sort -n numbers.txt
-h --human-numeric-sort 按人类可读数值排序(2K, 1G) `du -h
-f --ignore-case 忽略大小写 sort -f mixed_case.txt
字段处理
-k POS --key=KEYDEF 按指定字段/列排序 (POS格式:开始[.字符],结束[.字符] sort -k 2,2 data.txt sort -k 3n,3 data.txt
-t SEP --field-separator=SEP 指定字段分隔符 sort -t',' -k2n data.csv
输出控制
-u --unique 排序并去重 sort -u duplicates.txt
-o FILE --output=FILE 结果输出到文件(支持原地排序) sort file.txt -o file.txt
-c --check 检查文件是否已排序 sort -c sorted.txt

测试文件:

复制代码
[root@sakura 桌面]# vim master
 3
 5
 4
 52
 64
 12
 4
 2
 5
 4
 3
 52

按数值大小排序

按数值大小逆序排列

按数值大小逆序排列并且去除重复的

然后修改测试文件成下列代码这样:

复制代码
 [root@sakura 桌面]# vim master
 3:5
 5:33
 4:5
 52:42
 64:56
 12:24
 4:42
 2:11
 5:09
 4:2
 3:42
 52:11

使用冒号 : 作为字段分隔符,以第 2 个字段作为排序键并且按数值排序 。

5. 使用 uniq 命令对 sort 命令输出的字符冗余部分进行处理

uniq 命令常用选项速查表

选项 功能描述 使用示例
-c 在行首显示重复次数 uniq -c file.txt `sort file.txt
-d 仅显示重复行(每组重复行显示一次) uniq -d file.txt
-D 显示所有重复行 uniq -D file.txt
-u 仅显示唯一行(不重复的行) uniq -u file.txt

uniq的关键说明:

必需的预处理 :uniq只能对有序的文件进行处理,所以uniq通常要与sort一起使用
uniq 只能检测相邻的重复行,通常需要先排序:

复制代码
sort file.txt | uniq [选项]

测试文件:

复制代码
 [root@sakura 桌面]# vim tec9 
 2
 4
 5
 2
 42
 56
 5
 6
 1
 24

使用sort按数值排序,uniq起到在行首显示重复次数的作用

仅显示重复的行(每组重复行显示一次)

显示唯一的行

6. 使用 cut 命令对字符进行截取

cut 命令核心选项速查表

选项 长选项 功能描述 使用示例
-d --delimiter 指定字段分隔符(默认是TAB) cut -d ',' -f1 file.csv
-f --fields 选择指定的字段(列) cut -d':' -f1,3-5 /etc/passwd
-c --characters 选择指定的字符位置(按字符计数) (数字用法同 -f) cut -c1-5,10-15 file.txt

如图:/etc/passwd里面的信息被冒号:分割成了7列。

下图 cut 命令详解

-f 1代表第一列。

-f 1,5 代表第一列和第五列。

-f 1-5 代表第一列到第五列

-f 5- 代表从第五列开始到最后一列,因为5-后面没跟数字。

-f -7 代表从第一列开始到第七列。

下图的测试文件以如下代码为准:

复制代码
[root@sakura 桌面]# vim passwd
passwd

对文件内字符的截取

四、xargs 命令

xargs 命令核心功能

作用 :将标准输入(stdin)转换为命令行参数,能够处理管道或者标准输入并将其转换成特定命令
的命令参数

典型场景 :与 find, grep, rm 等命令结合使用

xargs的常用选项速查表

选项 长选项 功能描述 使用示例
-n --max-args 每次执行命令使用的最大参数数量 `echo {1..10}
-I --replace 定义替换字符串,用于参数插入 `find . -name "*.txt"
-p --interactive 交互模式,执行前确认 `ls
-t --verbose 详细模式,打印要执行的命令 `find . -name "*.log"
-d --delimiter 指定自定义输入分隔符(默认是空格/换行) `echo "a,b,c"
-r --no-run-if-empty 输入为空时不执行命令 `find /tmp -empty

1、xargs命令的作用

2、多行输入单行输出

测试文件如下:

复制代码
[root@sakura media]# vim /media/lcf
a a a a a a
b b b b b b
c c c c c c
d d d d d d
e e e e e e
f f f f f f

3、指定每行输出的个数

4、指定分隔符

5、用字符代替接收值

6、输入为空时不执行命令

相关推荐
AOwhisky3 分钟前
Python 学习笔记(第十四期)——运维自动化(下·中篇):远程文件传输——paramiko进阶篇
运维·python·学习·云原生·自动化·文件传输·paramiko
imc.1133 分钟前
linux基础IO
linux·运维·服务器
躺不平的理查德34 分钟前
让Ubuntu 的第二块网卡 ens37 永久固定为 192.168.30.111
运维·服务器
bitbrowser1 小时前
Facebook 验证反复回到原页面,应该从哪里排查
运维·服务器·facebook
Land03291 小时前
AI网页元素变化无法自动修复?自带元素自愈的自动化解决方案
运维·人工智能·ai·自动化·rpa
fengyehongWorld1 小时前
Jenkins 安装与简单配置
运维·jenkins
云智慧AIOps社区2 小时前
2026 国产化 ITSM 替代指南:横向测评 ServiceNow、轻帆云、Jira等五款主流IT服务管理平台
运维·人工智能·运维开发·it服务管理·itsm平台
糖果店的幽灵2 小时前
langgraph的分支结构之 - 静态分支详解
java·服务器·数据库·langgraph
虹科网络安全2 小时前
艾体宝新闻|从 SQL 注入到服务器接管:CVE-2026-57517 暴露 Web 管理面板的供应链与安全编码风险
服务器·前端·sql
Urbano2 小时前
针织卫衣全流程生产工序科普:自动化替代、产能优化与设备选型实战方案
运维·自动化