You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何像vi/vim一样打开虚拟tty运行无额外依赖的watch类监控脚本

无依赖类watch文件查看脚本实现方案

你需要的类似Vim打开文件的隔离显示效果,本质是终端标准支持的**备用屏幕缓冲区(Alternate Screen Buffer)**特性,无需安装任何额外软件,仅用系统默认自带的tput工具即可实现,全程无第三方依赖。

完整实现代码

#!/bin/bash
# 参数校验
if [ $# -ne 1 ] || [ ! -f "$1" ]; then
    echo "使用方式: $0 <待查看的文件路径>"
    exit 1
fi
TARGET="$1"

# 退出清理逻辑:切回原终端缓冲区
cleanup() {
    tput rmcup
    exit 0
}
# 捕获所有常见退出信号,保证切回原界面
trap cleanup SIGINT SIGTERM EXIT

# 切换到备用缓冲区(类似Vim打开的隔离界面)
tput smcup

# 循环刷新逻辑
while true; do
    clear
    cat "$TARGET"
    sleep 2
done

核心特性说明

  • 完全符合你要求的隔离显示效果:脚本运行时不会污染原终端的历史输出,退出后立即回到执行脚本前的终端状态
  • 所有依赖都是系统默认自带的POSIX标准工具,无需额外安装任何包,兼容所有主流Linux/Unix发行版以及MacOS终端
  • 支持Ctrl+C等任意退出方式,不会出现终端显示异常的问题

可选优化(类tail -f效果)

如果你希望和tail -f一样只展示文件末尾的新增内容,可以把循环中的cat "$TARGET"替换为以下内容,自动适配终端高度展示最后一屏内容:

tail -n "$(tput lines)" "$TARGET"

使用方法

  1. 把上述代码保存为watch_file.sh
  2. 给文件加执行权限:chmod +x watch_file.sh
  3. 运行脚本查看目标文件:./watch_file.sh /path/to/your/file

内容的提问来源于stack exchange,提问作者Octavia Clarke

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 04:39:00