如何让less不显示末尾的(filename (END))?可接受源码编译修改
修改less 487源码移除末尾(END)标识的实操方案
1. 获取对应版本源码
Debian 10上直接执行apt source less就能拉取到less 487的源码包,解压后进入源码目录即可。
2. 定位控制(END)显示的代码
打开源码里的screen.c文件,搜索END关键字,很快能找到生成末尾状态提示的代码段,大致如下:
if (at_eof()) { if (filename != NULL) sprintf(buf, "%s (END)", filename); else strcpy(buf, "(END)"); }
这段就是负责在文件末尾输出(END)或<filename> (END)的核心逻辑。
3. 修改代码移除该提示
直接把这段代码改成生成空内容,比如:
if (at_eof()) { // 取消(END)显示 buf[0] = '\0'; }
这样当浏览到文件末尾时,状态行就不会输出任何额外标识。
4. 编译替换系统中的less
- 先备份原文件:
sudo cp /usr/bin/less /usr/bin/less.bak - 在源码目录执行
./configure && make完成编译 - 把编译好的新程序替换进去:
sudo cp ./less /usr/bin/less
5. 验证效果
运行less --tilde 目标文件名,此时文件末尾应该彻底看不到(END)相关的标识了。
内容的提问来源于stack exchange,提问作者Martin Vegter
相关产品推荐
相关产品推荐

