Linux学习笔记(三)文件管理、复杂操作与实用工具详解
Linux 学习笔记(二):深入理解用户管理、运行级别与命令行操作
1.文件操作的基本操作
1.1 创建
创建目录
- mkdir:创建目录
mkdir /home/dog
# 创建单级目录
mkdir -p /home/animal/tiger
# 创建多级目录,如果父目录不存在,将连同父目录一起创建
创建文件
- dd:创建和转换文件
dd if=/dev/zero of=sample_file bs=1M count=1
# 创建一个大小为1MB的空文件,使用/dev/zero作为输入源
- touch:创建一个空文件
touch hello.txt
# 创建一个空的文本文件 hello.txt
1.2 删除
删除目录
- rmdir:删除空目录
rmdir /home/dog
# 删除单级空目录,若目录非空则会失败
rm -rf /home/animal/
# 强制递归删除目录及其所有内容
删除文件
- rm:删除文件或目录
rm /home/hello.txt
# 删除指定文件
rm -rf /home/bbb
# 强制递归删除整个目录及其内容,-f选项避免任何提示
1.3 拷贝
拷贝目录
- cp:拷贝目录
cp -r /home/bbb/ /opt/
# 递归拷贝整个目录
cp -r /home/bbb/ /opt/ # 而没有 -r 会导致错误
拷贝文件
- cp:拷贝文件
cp source.txt /path/to/destination/
# 拷贝文件到指定目录
1.4 移动和重命名
移动或重命名目录
- mv:移动或重命名目录
mv /opt/bbb/ /home/
# 将目录/opt/bbb/移动到/home/
移动或重命名文件
- mv:移动或重命名文件
mv cats.txt pigs.txt
# 在同一目录下重命名文件
mv pigs.txt /root/
# 将文件剪切并移动到/root/目录
1.5 查看文件
- cat:查看文件内容
cat -n /etc/passwd | more
# 查看文件内容并显示行号,可以分屏查看
- less:查看文件内容
less filename.txt
# 分页查看文件内容,支持向前和向后翻页
head -n 10 filename.txt
# 查看文件的前10行
tail -n 10 filename.txt
# 查看文件的最后10行
tail -f filename.txt
# 实时更新显示文件的新增内容
2. 文件扩展操作
2.1 硬链接
- 特点
共享inode和磁盘块
: 硬链接与原文件共享同一个inode和磁盘块
,因此对其中一个文件进行修改,会影响到另一个文件。文件名数量增加
: 每创建一个硬链接,文件名数量就会增加,但文件的实际大小和磁盘占用不变。不能跨分区
: 硬链接只能在同一文件系统内创建,不能跨分区。不能为目录创建硬链接
: 硬链接不能用于目录。
- 创建硬链接
ln file1.txt file2.txt
# 创建file2.txt作为file1.txt的硬链接
ls -li file1.txt file2.txt
# 查看文件的inode信息(可用-inode进行链接的判断)
- 硬链接的应用场景
文件备份
: 可以使用硬链接创建文件备份,节省磁盘空间。文件共享
: 可以使用硬链接实现文件共享,方便多人访问同一文件。
- 注意事项
硬链接不能跨分区,因此在跨分区共享文件时需要使用软链接
。硬链接不能用于目录,因为目录需要额外的信息来维护目录结构
。
2.2 软链接
- 特点
不共享inode和磁盘块
: 软链接会创建一个新的inode,并指向原文件的名字路径,因此软链接和原文件占用不同的磁盘空间。可以跨分区
: 软链接可以跨分区创建,不受文件系统限制。可以创建对目录的链接
: 软链接可以创建对目录的链接,方便快速访问目录。删除原文件,软链接仍然存在
: 当删除原文件时,软链接仍然指向该文件,但文件内容已经不存在。
- 创建软链接
ln -s /root /home/myroot
# 创建指向/root目录的软链接myroot
- 软链接的应用场景
快速访问文件
: 可以通过软链接快速访问位于不同目录或分区中的文件。文件备份
: 可以使用软链接创建文件备份,但无法实现真正的文件复制。目录链接
: 可以创建目录的软链接,方便快速访问相关目录。
- 注意事项
软链接指向的是文件名路径,如果原文件移动或重命名,软链接可能无法正常访问
。软链接占用额外的磁盘空间,因为它们需要存储目标文件路径信息
。软链接不能用于文件系统挂载点
。
2.3 查找文件
- whereis:定位命令文件
whereis bash
# 查找bash相关的可执行文件、源代码和手册页
- locate:快速查找文件
locate filename
# 在索引数据库中搜索文件,index需要定期更新
updatedb # 更新数据库
- find:实时查找文件
find . -type f -name "filename"
# 在当前目录及子目录中查找指定文件
find /path/to/directory -name "*.txt"
# 查找指定目录下所有的txt文件
2.4 文件压缩与解压
gzip & gunzip
gzip filename
# 压缩文件
gunzip filename.gz
# 解压缩文件
zip & unzip
zip -r myarchive.zip /path/to/directory
# 压缩目录
unzip myarchive.zip -d /destination/directory
# 解压缩到指定目录
tar:打包与压缩
tar -zcvf archive.tar.gz /path/to/directory
# 创建一个压缩的tar文件,-z用于gzip压缩
tar -zxvf archive.tar.gz -C /destination/directory
# 解压缩到指定目录
2.5 vi编辑器:编辑文件
- 基本移动操作
h j k l
#左下上右
^移动到行首非空白字符
#$ 文章末尾
#0 行尾
#10h
#15G到15行
#G尾行
#gg = \G
#Ctrl + o回到上一个位置
#Ctrl + i回到下一个位置
#b单词开头
#w下一个单词
#e单词尾部
#(上一句
#)下一句
#%匹配与之对应的括号
- 跳转命令
G # 跳转到最后一行
10G # 跳转到第10行
gg # 跳转到第一行
Ctrl + o # 回到上一个光标位置
-
插入和删除
-
常用命令:
i
进入插入模式d
删除行y
复制行p
粘贴u
撤消
3. 文件的实用工具
3.1 grep:行过滤器
grep 'word' filename
# 查找包含'word'的行
- 选项:
-i
忽略大小写-n
显示行号-v
反向匹配,即显示不包含’word’的行-c
显示匹配行的数量
3.2 cut:列过滤器
cut -c3 filename
# 提取每行的第三个字符
cut -d' ' -f1,3 filename
# 使用空格作为分隔符提取每行的第1和第3字段
3.3 tr:字符转换
tr 'a-z' 'A-Z' < filename
# 将文件中的小写字母转换为大写
tr -d 'a' < filename
# 删除文件中的所有字母'a'
3.4 sort:排序
sort -k3 filename
# 根据第三字段排序
sort -t: -k1,1 filename
# 根据冒号分隔符的第一个字段排序
#-k4n 按数值大小来排序
#-k4.2n 在第四个字段的第二个字符开始按照数值排序
#-k4r 逆序
3.5 uniq:去重
uniq -s2 -w2
命令用于从输入中删除连续的重复行,并允许你指定跳过的字符数和要比较的字符数
。在这个例子中,-s2意味着跳过输入中的前两个字符,
-w2意味着仅比较输入中的后两个字符以查找重复行
。
uniq filename
# 显示不重复的行
uniq -c filename
# 显示每行的重复次数
3.6 diff:比较文件
diff file1.txt file2.txt
# 显示两个文件之间的差异
diff -u file1.txt file2.txt > changes.patch
# 生成统一格式的差异文件
3.7 patch:应用补丁
patch < changes.patch
# 根据补丁文件应用文件改变