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、输入为空时不执行命令

相关推荐
belldeep27 分钟前
WSL 安装 Debian 12 后,Linux 如何安装 curl , quickjs ?
linux·运维·debian·curl·quickjs
l1t29 分钟前
Debian上安装PostgreSQL的故障和排除
运维·postgresql·debian
%#RulER#%2 小时前
哈工大计算机系统2024大作业——Hello的程序人生
linux·笔记·程序人生
y1x2y32 小时前
【HITCSAPP 哈工大计算机系统期末大作业】 程序人生-Hello’s P2P
linux·程序人生·ubuntu
God_archer2 小时前
程序人生-hello’s P2P
linux·c语言·汇编·程序人生
西域曼波王2 小时前
哈尔滨工业大学计算机系统大作业程序人生-Hello’s P2P
linux·c语言·编辑器·vim
无效的名字3 小时前
如何安装并使用RustDesk
linux·运维·服务器
唐可盐6 小时前
解决docker运行zentao 报错:ln: failed to create symbolic link ‘/opt/zbox/tmp/mysq
运维·docker·容器
Amo Xiang6 小时前
Python 解释器安装全攻略(适用于 Linux / Windows / macOS)
linux·windows·python·环境安装
明金同学6 小时前
电脑wifi显示已禁用怎么点都无法启用
运维·服务器·网络