Linux学习笔记(三):文件管理、复杂操作与实用工具详解

kyang MVP++

Linux 学习笔记(二):深入理解用户管理、运行级别与命令行操作

1.文件操作的基本操作


1.1 创建

创建目录

  • mkdir:创建目录
1
2
mkdir /home/dog
# 创建单级目录
1
2
mkdir -p /home/animal/tiger
# 创建多级目录,如果父目录不存在,将连同父目录一起创建

创建文件

  • dd:创建和转换文件
1
2
dd if=/dev/zero of=sample_file bs=1M count=1
# 创建一个大小为1MB的空文件,使用/dev/zero作为输入源
  • touch:创建一个空文件
1
2
touch hello.txt
# 创建一个空的文本文件 hello.txt

1.2 删除

删除目录

  • rmdir:删除空目录
1
2
rmdir /home/dog
# 删除单级空目录,若目录非空则会失败
1
2
rm -rf /home/animal/
# 强制递归删除目录及其所有内容

删除文件

  • rm:删除文件或目录
1
2
3
4
rm /home/hello.txt
# 删除指定文件
rm -rf /home/bbb
# 强制递归删除整个目录及其内容,-f选项避免任何提示

1.3 拷贝

拷贝目录

  • cp:拷贝目录
    1
    2
    3
    cp -r /home/bbb/ /opt/
    # 递归拷贝整个目录
    cp -r /home/bbb/ /opt/ # 而没有 -r 会导致错误

拷贝文件

  • cp:拷贝文件
    1
    2
    cp source.txt /path/to/destination/
    # 拷贝文件到指定目录

1.4 移动和重命名

移动或重命名目录

  • mv:移动或重命名目录
    1
    2
    mv /opt/bbb/ /home/
    # 将目录/opt/bbb/移动到/home/

移动或重命名文件

  • mv:移动或重命名文件
1
2
mv cats.txt pigs.txt
# 在同一目录下重命名文件
1
2
mv pigs.txt /root/
# 将文件剪切并移动到/root/目录

1.5 查看文件

在这里插入图片描述

  • cat:查看文件内容
1
2
cat -n /etc/passwd | more
# 查看文件内容并显示行号,可以分屏查看
  • less:查看文件内容
    在这里插入图片描述
1
2
less filename.txt
# 分页查看文件内容,支持向前和向后翻页
1
2
head -n 10 filename.txt
# 查看文件的前10行
1
2
3
4
tail -n 10 filename.txt
# 查看文件的最后10行
tail -f filename.txt
# 实时更新显示文件的新增内容

2. 文件扩展操作


2.1 硬链接

  • 特点
  1. 共享inode和磁盘块: 硬链接与原文件共享
  2. 同一个inode和磁盘块,因此对其中一个文件进行修改,会影响到另一个文件。
  3. 文件名数量增加: 每创建一个硬链接,文件名数量就会增加,但文件的实际大小和磁盘占用不变。
  4. 不能跨分区: 硬链接只能在同一文件系统内创建,不能跨分区。
  5. 不能为目录创建硬链接: 硬链接不能用于目录。
  • 创建硬链接
1
2
3
4
ln file1.txt file2.txt
# 创建file2.txt作为file1.txt的硬链接
ls -li file1.txt file2.txt
# 查看文件的inode信息(可用-inode进行链接的判断)
  • 硬链接的应用场景
  1. 文件备份: 可以使用硬链接创建文件备份,节省磁盘空间。
  2. 文件共享: 可以使用硬链接实现文件共享,方便多人访问同一文件。
  • 注意事项
  1. 硬链接不能跨分区,因此在跨分区共享文件时需要使用软链接
  2. 硬链接不能用于目录,因为目录需要额外的信息来维护目录结构

2.2 软链接

  • 特点
  1. 不共享inode和磁盘块: 软链接会创建一个新的inode,并指向原文件的名字路径,因此软链接和原文件占用不同的磁盘空间。
  2. 可以跨分区: 软链接可以跨分区创建,不受文件系统限制。
  3. 可以创建对目录的链接: 软链接可以创建对目录的链接,方便快速访问目录。
  4. 删除原文件,软链接仍然存在: 当删除原文件时,软链接仍然指向该文件,但文件内容已经不存在。
  • 创建软链接
1
2
ln -s /root /home/myroot
# 创建指向/root目录的软链接myroot
  • 软链接的应用场景
  1. 快速访问文件: 可以通过软链接快速访问位于不同目录或分区中的文件。
  2. 文件备份: 可以使用软链接创建文件备份,但无法实现真正的文件复制。
  3. 目录链接: 可以创建目录的软链接,方便快速访问相关目录。
  • 注意事项
  1. 软链接指向的是文件名路径,如果原文件移动或重命名,软链接可能无法正常访问
  2. 软链接占用额外的磁盘空间,因为它们需要存储目标文件路径信息
  3. 软链接不能用于文件系统挂载点

2.3 查找文件

在这里插入图片描述

  • whereis:定位命令文件
1
2
whereis bash
# 查找bash相关的可执行文件、源代码和手册页
  • locate:快速查找文件
1
2
3
locate filename
# 在索引数据库中搜索文件,index需要定期更新
updatedb # 更新数据库
  • find:实时查找文件
    在这里插入图片描述
1
2
3
4
find . -type f -name "filename"
# 在当前目录及子目录中查找指定文件
find /path/to/directory -name "*.txt"
# 查找指定目录下所有的txt文件

2.4 文件压缩与解压

gzip & gunzip

1
2
gzip filename
# 压缩文件
1
2
gunzip filename.gz
# 解压缩文件

zip & unzip

1
2
zip -r myarchive.zip /path/to/directory
# 压缩目录
1
2
unzip myarchive.zip -d /destination/directory
# 解压缩到指定目录

tar:打包与压缩

在这里插入图片描述

1
2
tar -zcvf archive.tar.gz /path/to/directory
# 创建一个压缩的tar文件,-z用于gzip压缩
1
2
tar -zxvf archive.tar.gz -C /destination/directory
# 解压缩到指定目录

2.5 vi编辑器:编辑文件

  • 基本移动操作
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
h j k l
#左下上右
^移动到行首非空白字符
#$ 文章末尾
#0 行尾
#10h
#15G到15行
#G尾行
#gg = \G
#Ctrl + o回到上一个位置
#Ctrl + i回到下一个位置
#b单词开头
#w下一个单词
#e单词尾部
#(上一句
#)下一句
#%匹配与之对应的括号

在这里插入图片描述

  • 跳转命令
1
2
3
4
G      # 跳转到最后一行
10G # 跳转到第10行
gg # 跳转到第一行
Ctrl + o # 回到上一个光标位置
  • 插入和删除
    在这里插入图片描述

  • 常用命令:

    • i 进入插入模式
    • d 删除行
    • y 复制行
    • p 粘贴
    • u 撤消

3. 文件的实用工具


3.1 grep:行过滤器

1
2
grep 'word' filename
# 查找包含'word'的行
  • 选项:
    • -i 忽略大小写
    • -n 显示行号
    • -v 反向匹配,即显示不包含’word’的行
    • -c 显示匹配行的数量

3.2 cut:列过滤器

1
2
3
4
cut -c3 filename
# 提取每行的第三个字符
cut -d' ' -f1,3 filename
# 使用空格作为分隔符提取每行的第1和第3字段

3.3 tr:字符转换

1
2
3
4
tr 'a-z' 'A-Z' < filename
# 将文件中的小写字母转换为大写
tr -d 'a' < filename
# 删除文件中的所有字母'a'

3.4 sort:排序

1
2
3
4
5
6
7
sort -k3 filename
# 根据第三字段排序
sort -t: -k1,1 filename
# 根据冒号分隔符的第一个字段排序
#-k4n 按数值大小来排序
#-k4.2n 在第四个字段的第二个字符开始按照数值排序
#-k4r 逆序

3.5 uniq:去重

uniq -s2 -w2 命令用于从输入中删除连续的重复行,并允许你指定跳过的字符数和要比较的字符数。在这个例子中,-s2 意味着跳过输入中的前两个字符,-w2意味着仅比较输入中的后两个字符以查找重复行

1
2
3
4
uniq filename
# 显示不重复的行
uniq -c filename
# 显示每行的重复次数

3.6 diff:比较文件

1
2
3
4
diff file1.txt file2.txt
# 显示两个文件之间的差异
diff -u file1.txt file2.txt > changes.patch
# 生成统一格式的差异文件

3.7 patch:应用补丁

1
2
patch < changes.patch
# 根据补丁文件应用文件改变
  • 标题: Linux学习笔记(三):文件管理、复杂操作与实用工具详解
  • 作者: kyang
  • 创建于 : 2024-10-01 10:54:00
  • 更新于 : 2025-07-11 16:56:12
  • 链接: https://blog.kyang.top/2024/10/01/Linux学习笔记(三):文件管理、复杂操作与实用工具详解/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论