Linux学习笔记(三):文件管理、复杂操作与实用工具详解
Linux 学习笔记(二):深入理解用户管理、运行级别与命令行操作
1.文件操作的基本操作
1.1 创建
创建目录
1 2
| mkdir -p /home/animal/tiger
|
创建文件
1 2
| dd if=/dev/zero of=sample_file bs=1M count=1
|
1.2 删除
删除目录
删除文件
1 2 3 4
| rm /home/hello.txt
rm -rf /home/bbb
|
1.3 拷贝
拷贝目录
- cp:拷贝目录
1 2 3
| cp -r /home/bbb/ /opt/
cp -r /home/bbb/ /opt/
|
拷贝文件
- cp:拷贝文件
1 2
| cp source.txt /path/to/destination/
|
1.4 移动和重命名
移动或重命名目录
移动或重命名文件
1.5 查看文件

1 2
| cat -n /etc/passwd | more
|
- less:查看文件内容

1 2
| head -n 10 filename.txt
|
1 2 3 4
| tail -n 10 filename.txt
tail -f filename.txt
|
2. 文件扩展操作
2.1 硬链接
共享inode和磁盘块: 硬链接与原文件共享
同一个inode和磁盘块,因此对其中一个文件进行修改,会影响到另一个文件。
文件名数量增加: 每创建一个硬链接,文件名数量就会增加,但文件的实际大小和磁盘占用不变。
不能跨分区: 硬链接只能在同一文件系统内创建,不能跨分区。
不能为目录创建硬链接: 硬链接不能用于目录。
1 2 3 4
| ln file1.txt file2.txt
ls -li file1.txt file2.txt
|
文件备份: 可以使用硬链接创建文件备份,节省磁盘空间。
文件共享: 可以使用硬链接实现文件共享,方便多人访问同一文件。
硬链接不能跨分区,因此在跨分区共享文件时需要使用软链接。
硬链接不能用于目录,因为目录需要额外的信息来维护目录结构。
2.2 软链接
不共享inode和磁盘块: 软链接会创建一个新的inode,并指向原文件的名字路径,因此软链接和原文件占用不同的磁盘空间。
可以跨分区: 软链接可以跨分区创建,不受文件系统限制。
可以创建对目录的链接: 软链接可以创建对目录的链接,方便快速访问目录。
删除原文件,软链接仍然存在: 当删除原文件时,软链接仍然指向该文件,但文件内容已经不存在。
1 2
| ln -s /root /home/myroot
|
快速访问文件: 可以通过软链接快速访问位于不同目录或分区中的文件。
文件备份: 可以使用软链接创建文件备份,但无法实现真正的文件复制。
目录链接: 可以创建目录的软链接,方便快速访问相关目录。
软链接指向的是文件名路径,如果原文件移动或重命名,软链接可能无法正常访问。
软链接占用额外的磁盘空间,因为它们需要存储目标文件路径信息。
软链接不能用于文件系统挂载点。
2.3 查找文件

1 2 3
| locate filename
updatedb
|
- find:实时查找文件

1 2 3 4
| find . -type f -name "filename"
find /path/to/directory -name "*.txt"
|
2.4 文件压缩与解压
gzip & gunzip
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
|
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
^移动到行首非空白字符
|

插入和删除

常用命令:
i 进入插入模式
d 删除行
y 复制行
p 粘贴
u 撤消
3. 文件的实用工具
3.1 grep:行过滤器
- 选项:
-i 忽略大小写
-n 显示行号
-v 反向匹配,即显示不包含’word’的行
-c 显示匹配行的数量
3.2 cut:列过滤器
1 2 3 4
| cut -c3 filename
cut -d' ' -f1,3 filename
|
3.3 tr:字符转换
1 2 3 4
| tr 'a-z' 'A-Z' < filename
tr -d 'a' < filename
|
3.4 sort:排序
1 2 3 4 5 6 7
| sort -k3 filename
sort -t: -k1,1 filename
|
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:应用补丁