Linux文件操作与文本处理实战指南:从硬链接到grep命令全解析

一、硬链接创建与文件属性查看

硬链接是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到的螺旋方阵(示例代码见文档,需注意语法正确性)。

  • 编译与运行:使用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次(或12ll向右、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.txts3/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文件系统和命令行逻辑的理解。实践中需注意路径正确性、命令参数细节及工具特性差异,通过反复练习形成肌肉记忆,为进阶学习打下坚实基础。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值