一、硬链接创建与文件属性查看
硬链接是Linux文件系统中多个文件名指向同一inode的机制,删除一个链接不影响其他链接的访问。以下为硬链接创建及属性验证的完整流程。
1.1 创建文件与硬链接
- 新建文件并写入内容:使用
vim
创建d1.txt
并输入“Hello World”:[root@server ~]# vim d1.txt # 打开vim编辑器,输入内容后按Esc,输入:wq保存退出
- 创建硬链接:通过
ln
命令将d1.txt
硬链接到d2.txt
(硬链接需在同一文件系统中):[root@server ~]# ln d1.txt d2.txt # 格式:ln 源文件 目标文件
1.2 查看硬链接属性
使用stat
命令查看文件的硬链接数(硬链接:2
表示两个文件共享同一inode):
[root@server ~]# stat d1.txt
文件: d1.txt
大小: 12 块: 8 IO块: 4096 普通文件
设备: fd00h/64768d Inode: 1035405 硬链接: 2 # 硬链接数为2
权限: (0644/-rw-r--r--) Uid: (0/root) Gid: (0/root)
最近访问: 2025-07-09 15:53:38.540686889 +0800
最近更改: 2025-07-09 15:53:38.540686889 +0800
最近改动: 2025-07-09 15:54:17.204510619 +0800
创建时间: 2025-07-09 15:53:38.540686889 +0800
说明:
- 硬链接与源文件拥有相同的inode号和大小,修改其中一个文件,另一个会同步更新;
- 只有当硬链接数为0时,文件数据才会被真正删除(释放inode)。
二、vim编辑器高级操作
vim是Linux中强大的文本编辑器,尤其适合编辑配置文件。以下为练习中涉及的高频操作,涵盖编辑、格式化、修改与保存等场景。
2.1 编写与编译C程序
-
创建并编辑
spiral.c
:在/
目录下新建文件,编写螺旋方阵程序:[root@server /]# vim spiral.c # 进入编辑模式,输入C程序代码
程序功能:根据输入的行数
n
,生成从1到n²
的螺旋方阵(示例代码见文档,需注意语法正确性)。 -
编译与运行:使用
gcc
编译C文件,生成可执行文件a.out
并运行:[root@server /]# gcc spiral.c # 编译(无报错则生成a.out) [root@server /]# ./a.out # 运行程序,输入行数即可查看螺旋方阵效果
2.2 vim核心操作技巧
以编辑anaconda-ks.cfg
(系统安装配置文件)为例,掌握以下技巧:
操作需求 | vim命令/快捷键 | 说明 |
---|---|---|
显示行号 | :set nu | 在每行开头显示行号,便于定位内容 |
移动到第18行 | 18G 或 :18 | 快速跳转至指定行(G 为跳转快捷键) |
向右移动12个字符 | 在目标行按l 键12次(或12l ) | l 向右、h 向左、j 向下、k 向上移动光标 |
复制15-29行并粘贴到末尾 | 1. 移动到15行,按15yy 复制15行;2. 移动到文末,按 p 粘贴 | yy 复制当前行,n yy 复制n行,p 粘贴到光标后 |
删除11-30行 | 移动到11行,按20dd (删除20行) | dd 删除当前行,n dd 删除n行 |
撤销上一步操作 | u | 恢复误删除或错误修改的内容 |
关闭行号显示 | :set nonu | 隐藏行号,保持界面简洁 |
另存为新文件 | :w /etc/new.cfg | 将当前内容保存到/etc/new.cfg ,原文件不变 |
三、grep命令实战:文本搜索与过滤
grep
是Linux中强大的文本搜索工具,支持正则表达式,常用于日志分析、配置文件筛选等场景。以下为常用参数及示例:
3.1 基础搜索与行号显示
- 搜索包含“bin”的行并显示行号:
[root@server ~]# grep -n "bin" /etc/passwd # -n:显示匹配行的行号 1:root:x:0:0:root:/root:/bin/bash # 第1行包含“bin” 2:bin:x:1:1:bin:/bin:/sbin/nologin # 第2行包含“bin” # 省略其他匹配行...
3.2 反向匹配与上下文显示
-
搜索不能登录的用户(shell非
/bin/bash
):[root@server ~]# grep -nv "/bin/bash" /etc/passwd # -v:反向匹配(排除指定内容) 2:bin:x:1:1:bin:/bin:/sbin/nologin # 登录shell为/sbin/nologin,无法登录
-
显示包含“ftp”的行及上6行:
[root@server ~]# grep -nB6 "ftp" /etc/passwd # -B6:显示匹配行及前6行(Before) 6-sync:x:5:0:sync:/sbin:/bin/sync 7-shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown ...(中间省略4行)... 12:ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin # 匹配行
-
显示包含“sshd”的行及上下各3行:
[root@server ~]# grep -nC3 "sshd" /etc/passwd # -C3:显示匹配行及上下各3行(Context) 30-cockpit-ws:x:983:982:User for cockpit web service:/nonexisting:/sbin/nologin 31-cockpit-wsinstance:x:982:981:User for cockpit-ws instances:/nonexisting:/sbin/nologin 32-gnome-initial-setup:x:981:980::/run/gnome-initial-setup/:/sbin/nologin 33:sshd:x:74:74:Privilege-separated SSH:/usr/share/empty.sshd:/sbin/nologin # 匹配行 34-chrony:x:980:979:chrony system user:/var/lib/chrony:/sbin/nologin 35-dnsmasq:x:979:978:Dnsmasq DHCP and DNS server:/var/lib/dnsmasq:/usr/sbin/nologin 36-tcpdump:x:72:72::/:/sbin/nologin
3.3 高级过滤:统计与正则表达式
-
统计包含“root”的行数:
[root@server ~]# grep -c "root" /etc/passwd # -c:仅显示匹配行的数量 2 # 表示/etc/passwd中有2行包含“root”
-
搜索不包含数字4-7的行:
[root@server ~]# grep -nv "[4-7]" /etc/passwd # [4-7]匹配4、5、6、7,-v反向排除 1:root:x:0:0:root:/root:/bin/bash # 该行数字为0,不包含4-7
四、文本处理工具:cat、tac、head、more与less
Linux提供多种文本处理工具,适用于查看、合并、反向显示文件内容等场景,配合重定向(>
)可灵活处理数据。
4.1 文件内容查看与反向显示
-
查看网卡配置文件并输出到新文件:
[root@server ~]# cat /etc/NetworkManager/system-connections/ens160.nmconnection > nic1.txt # cat:读取文件内容;>:将输出重定向到nic1.txt(覆盖原有内容)
-
反向显示文件内容:
tac
命令从最后一行开始显示(与cat
相反):[root@server ~]# tac nic1.txt # 反向显示nic1.txt的内容 [proxy] method=auto addr-gen-mode=eui64 ...(从最后一行逐步显示到第一行)... [connection]
4.2 内容合并与分页查看
-
合并多个文件内容:将
s2/t2.txt
和s3/t3.txt
的内容合并到s1/t1.txt
:# 先创建目录结构并写入内容 [root@server ~]# mkdir -p /s1/s2/s3 [root@server ~]# echo "hello" > /s1/s2/t2.txt # 写入hello到t2.txt [root@server ~]# echo "world" > /s1/s2/s3/t3.txt # 写入world到t3.txt # 合并内容(注意使用绝对路径避免错误) [root@server ~]# cat /s1/s2/t2.txt /s1/s2/s3/t3.txt > /s1/t1.txt [root@server ~]# cat /s1/t1.txt # 验证合并结果 hello world
-
分页查看帮助信息:
man ls
的输出通过more
分页显示,每页20行:[root@server ~]# man ls | more -20 # -20:每页显示20行,按空格键翻页
-
查看文件前几行:
head -n
取文件前n行,常用于快速查看配置文件头部信息:[root@server ~]# head -4 /etc/NetworkManager/system-connections/ens160.nmconnection > NICETC.txt [root@server ~]# cat NICETC.txt # 显示前4行内容 [connection] id=ens160 uuid=931826bc-1c14-3b52-93cf-263d688e4d8b type=ethernet
-
逐页查看大文件:
less
命令支持上下滚动、搜索内容(按/关键词
),比more
更灵活:[root@server ~]# less /etc/passwd # 打开文件后,按↑↓键滚动,按q退出
4.3 注意事项
- 路径错误是常见问题(如文档中合并文件时提示“没有那个文件或目录”),操作时需使用绝对路径(如
/s1/s2/t2.txt
)而非相对路径。 - 重定向
>
会覆盖文件原有内容,若需追加内容,使用>>
(如echo "new line" >> file.txt
)。
五、文件时间属性查看
使用stat
命令查看文件的存储时间信息(访问时间、修改时间、改动时间),并输出到文件:
[root@server ~]# stat /dev/cdrom > cdrometc.txt # 将/dev/cdrom的属性信息写入cdrometc.txt
stat
输出解析:
- 最近访问:文件内容被读取的时间(如
cat
命令); - 最近更改:文件内容被修改的时间(如
vim
编辑保存); - 最近改动:文件元数据(权限、名称等)被修改的时间(如
chmod
命令)。
总结
本文系统梳理了Linux文件操作与文本处理的核心技能,从硬链接的底层原理到vim的高效编辑,从grep的精准搜索到文本工具的组合使用,覆盖了日常系统管理中的高频场景。掌握这些操作不仅能提升工作效率,更能加深对Linux文件系统和命令行逻辑的理解。实践中需注意路径正确性、命令参数细节及工具特性差异,通过反复练习形成肌肉记忆,为进阶学习打下坚实基础。