平时查看大日志文件时,用 cat 直接输出会刷屏,找关键信息很麻烦。more 命令就是专门解决这个问题的——它让文本查看变得可控,一页一页地翻,不会错过重要内容。

摘要:more 是 Linux 中最基础的分页器命令,用于逐屏查看长文本文件。本文从基本用法出发,梳理了常用操作快捷键、5 个实战技巧(指定行查看、管道配合、搜索定位、限制行数、清屏显示)linux设置中文,对比了 more 与 less 的适用场景,并浅析了其分页实现原理。最后总结了常见坑点与现代替代工具,帮助读者高效掌握这个轻量级文本查看利器。

more 命令的本质

more 是一个分页器(pager),核心功能是把长文本按屏幕高度分页显示。和 less 相比,它更轻量linux deepin,几乎所有 Linux 发行版都预装。

基本用法很简单:

more /var/log/syslog

按空格翻页,按 q 退出。就这么简单。

常用操作速查

进入 more 后,这些按键最常用:

more命令实战技巧_more命令使用技巧_linux设置中文

实战技巧1. 从指定行开始查看

more +100 /var/log/nginx/access.log

直接从第 100 行开始,跳过前面的内容。

2. 配合管道使用

cat large-file.txt | more
# 或者更简洁的
large-file.txt | more

其实 more 设计之初就是为了配合管道:

ps aux | more
dmesg | more
journalctl -u nginx | more

3. 搜索高亮定位

more +/error /var/log/app.log

从第一个包含 “error” 的行开始显示,快速定位问题。

进入后按 /timeout 继续搜索下一个匹配项,按 n 重复搜索。

4. 限制每屏行数

more -10 /etc/passwd

每屏只显示 10 行linux设置中文,适合小窗口或需要精细查看的场景。

5. 清除屏幕后显示

more -c file.txt

-c 选项会在显示前清屏,避免之前的内容干扰阅读。

more vs less:该怎么选?

more命令使用技巧_linux设置中文_more命令实战技巧

很多人纠结用 more 还是 less。简单说:

用 more 的场景:

用 less 的场景:

代码对比:

# more - 只能向下,不能回退
more /var/log/syslog
# 按空格向下,按 q 退出
# less - 可以上下滚动
less /var/log/syslog
# 支持 ↑↓ 方向键,PageUp/PageDown,/ 搜索,? 反向搜索

实现原理浅析

more 的核心逻辑不复杂:

获取终端尺寸:通过 ioctl 获取屏幕高度(行数)计算分页:文件总行数 ÷ 屏幕高度 = 页数缓冲输出:每次只读取并显示一屏内容等待用户输入:根据按键决定显示下一页或退出

伪代码示意:

void display_file(const char *filename) {
    int lines_per_page = get_terminal_height();
    FILE *fp = fopen(filename, "r");
    char line[1024];
    int line_count = 0;
    
    while (fgets(line, sizeof(line), fp)) {
        printf("%s", line);
        line_count++;
        
        if (line_count >= lines_per_page) {
            // 显示 "--More--(xx%)" 提示
            printf("--More--(%d%%)", (ftell(fp) * 100) / file_size);
            
            // 等待用户按键
            char cmd = getchar();
            if (cmd == 'q') break;
            if (cmd == ' ') line_count = 0;  // 下一页
            if (cmd == 'n') line_count--;   // 下一行
        }
    }
    fclose(fp);
}

more命令实战技巧_more命令使用技巧_linux设置中文

常见坑点1. 二进制文件乱码

more /bin/ls  # 会显示乱码,甚至破坏终端

解决:用 -d 选项或直接用 file 命令判断文件类型。

2. 管道中的交互问题

# 错误:管道中的 more 无法交互
cat file.txt | ssh user@host "more"
# 正确:使用 -d 选项或改用 cat
cat file.txt | ssh user@host "more -d"

3. 大文件性能

more 没有缓存机制,每次翻页都要重新读取文件。对于 GB 级日志,建议先用 head/tail 截取:

tail -n 10000 huge.log | more

现代替代方案

虽然 more 经典,但现代工具提供了更好的体验:

# bat - 语法高亮 + 分页
bat app.js
# most - 支持多窗口
most config.yaml
# nvim - 用编辑器查看
nvim -R /var/log/syslog

不过 more 的优势在于无处不在——任何 Unix-like 系统都有它,不需要安装。

总结

more 命令虽然简单,但掌握这些技巧能让日常运维效率提升不少:

如果你需要一个在线 Linux 命令参考工具qq linux,可以试试 JsonKit Linux 命令大全,里面整理了常用命令的用法和示例。

linux设置中文_more命令实战技巧_more命令使用技巧

Tagged:
Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

发表回复