-
文本处理工具,文件查找工具,文本处理三剑客, 文本格式化命令(printf)的相关命令及选项,示例。
文本处理工具
cat:连接文件并打印到标准输出。cat file1 file2
tac:反向连接文件并打印到标准输出。tac file
nl:给文件的每一行添加行号。nl file
more:分页显示文件内容。more file
less:分页显示文件内容,支持向前翻页。less file
head:显示文件的前几行。head -n 10 file
tail:显示文件的后几行。tail -n 10 file
文件查找工具
find:在目录中查找文件。find /path -name "filename"
locate:快速查找文件,基于数据库。locate filename
which:查找并显示可执行文件的位置。which command
whereis:查找文件的二进制、源代码和手册页。whereis command
grep:在文件中搜索文本。grep "pattern" file
文本处理三剑客
grep:搜索文本。grep "pattern" file
sed:流编辑器,用于文本替换、删除、插入等。sed 's/old/new/g' file
awk:强大的文本处理工具,用于数据提取和报告生成。awk '{print $1}' file
文本格式化命令(printf)
printf:格式化输出。printf "Hello, %s!\n" "World"
-
总结文本处理的grep命令相关的基本正则和扩展正则表达式。
基本正则表达式
字符匹配:grep "pattern" file
锚点:
^:匹配行首。grep "^pattern" file
$:匹配行尾。grep "pattern$" file
字符类:
[abc]:匹配a、b或c。grep "[abc]" file
重复:
*:匹配前一个字符0次或多次。grep "a*" file
扩展正则表达式
使用-E选项:grep -E "pattern" file
字符匹配:grep -E "pattern" file
锚点:
^:匹配行首。grep -E "^pattern" file
$:匹配行尾。grep -E "pattern$" file
字符类:
[abc]:匹配a、b或c。grep -E "[abc]" file
重复:
+:匹配前一个字符1次或多次。grep -E "a+" file
?:匹配前一个字符0次或1次。grep -E "a?" file
{n,m}:匹配前一个字符n到m次。grep -E "a{1,3}" file
-
总结变量命名规则,不同类型变量(环境变量,位置变量,只读变量,局部变量,状态变量)如何使用。
变量命名规则
变量名只能包含字母、数字和下划线。
变量名不能以数字开头。
变量名区分大小写。
不同类型变量
环境变量:
使用export命令定义。export VAR_NAME="value"
位置变量:
脚本参数,使用$1、$2等表示。echo "第一个参数是 $1"
只读变量:
使用readonly命令定义。readonly VAR_NAME="value"
局部变量:
使用local命令在函数中定义。function my_func {
local VAR_NAME="value"
}
状态变量:
使用$?表示上一个命令的退出状态。command
echo "命令的退出状态是 $?" -
通过shell编程完成,30鸡和兔的头,80鸡和兔的脚,分别有几只鸡,几只兔?
!/bin/bash
heads=30
legs=80
for ((chickens=0; chickens<=heads; chickens++)); do
rabbits=$((heads - chickens))
if ((chickens * 2 + rabbits * 4 == legs)); then
echo "鸡的数量: $chickens"
echo "兔的数量: $rabbits"
break
fi
done
5. 结合编程的for循环,条件测试,条件组合,完成批量创建100个用户
!/bin/bash
for i in $(seq 1 100); do
username="user$i"
if id "$username" &>/dev/null; then
echo "用户 $username 已存在"
else
sudo useradd "$username"
echo "用户 $username 已添加"
fi
done
6. 磁盘存储术语总结: head, track, sector, cylinder.
Head(磁头):
磁盘驱动器中用于读取和写入数据的组件。
Track(磁道):
磁盘表面上的同心圆,每个磁道包含多个扇区。
Sector(扇区):
磁盘上的最小存储单位,通常为512字节或4096字节。
Cylinder(柱面):
由多个磁盘表面上的相同半径的磁道组成。
7. 总结MBR,GPT结构。
MBR(Master Boot Record)
特点:
支持最大2TB的磁盘。
支持最多4个主分区或3个主分区和1个扩展分区。
分区表存储在磁盘的第一个扇区。
结构:
引导代码(446字节)。
分区表(64字节)。
魔数(2字节)。
GPT(GUID Partition Table)
特点:
支持最大18EB的磁盘。
支持最多128个分区。
提供冗余和CRC校验以提高数据完整性。
结构:
保护MBR。
GPT头。
分区表。
分区条目。
8、分区、文件系统管理和SWAP管理相关的命令及选项的总结和示例。
分区管理
- fdisk
fdisk 是一个用于管理磁盘分区的交互式工具。
查看磁盘分区:
sudo fdisk -l /dev/sda
进入交互模式:
sudo fdisk /dev/sda
在交互模式下,常用命令包括:
n:新建分区
d:删除分区
p:显示分区表
w:写入分区表并退出
q:退出不保存
2. parted
parted 是一个高级分区工具,支持大容量磁盘和GPT分区表。
查看磁盘信息:
sudo parted /dev/sda print
创建新分区:
sudo parted /dev/sda mkpart primary ext4 1MiB 100MiB
删除分区:
sudo parted /dev/sda rm 1
文件系统管理
3. mkfs
mkfs 用于创建文件系统。
创建ext4文件系统:
sudo mkfs.ext4 /dev/sda1
创建xfs文件系统:
sudo mkfs.xfs /dev/sda1
4. tune2fs
tune2fs 用于调整ext2/ext3/ext4文件系统参数。
查看文件系统信息:
sudo tune2fs -l /dev/sda1
设置最大挂载次数:
sh
Copy
sudo tune2fs -c 50 /dev/sda1
设置文件系统标签:
sudo tune2fs -L "MyLabel" /dev/sda1
5. xfs_info
xfs_info 用于显示XFS文件系统信息。
查看XFS文件系统信息:
sudo xfs_info /dev/sda1
6. fsck
fsck 用于检查和修复文件系统。
检查并修复文件系统:
sudo fsck /dev/sda1
强制检查文件系统:
sudo fsck -f /dev/sda1
挂载和卸载文件系统
7. mount
mount 用于挂载文件系统。
挂载文件系统:
sudo mount /dev/sda1 /mnt
挂载时指定文件系统类型:
sudo mount -t ext4 /dev/sda1 /mnt
查看已挂载的文件系统:
mount
8. umount
umount 用于卸载文件系统。
卸载文件系统:
sudo umount /mnt
强制卸载文件系统:
sudo umount -f /mnt
SWAP管理
9. swapon
swapon 用于启用交换分区或交换文件。
启用交换分区:
sudo swapon /dev/sda2
查看交换空间使用情况:
swapon --show
10. swapoff
swapoff 用于禁用交换分区或交换文件。
禁用交换分区:
sudo swapoff /dev/sda2
示例脚本
以下是一个示例脚本,展示了如何使用上述命令创建分区、格式化文件系统、挂载文件系统以及管理交换空间。
!/bin/bash
检查是否以root用户运行
if [ "$EUID" -ne 0 ]; then
echo "请以root用户运行此脚本。"
exit 1
fi
创建新分区
echo "创建新分区..."
sudo parted /dev/sda mkpart primary ext4 1MiB 100MiB
格式化新分区为ext4文件系统
echo "格式化新分区为ext4文件系统..."
sudo mkfs.ext4 /dev/sda1
挂载新分区
echo "挂载新分区..."
sudo mount /dev/sda1 /mnt
查看挂载情况
echo "查看挂载情况..."
mount | grep /mnt
启用交换分区
echo "启用交换分区..."
sudo swapon /dev/sda2
查看交换空间使用情况
echo "查看交换空间使用情况..."
swapon --show
禁用交换分区
echo "禁用交换分区..."
sudo swapoff /dev/sda2
卸载文件系统
echo "卸载文件系统..."
sudo umount /mnt
echo "完成。"
总结
通过使用fdisk、parted、mkfs、tune2fs、xfs_info、fsck、mount、umount、swapon和swapoff等命令,您可以在Linux系统中进行分区管理、文件系统管理和SWAP管理