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

如何让watch命令正确处理 (回车符)?

问题:watch命令无法正确解析文件中的回车符(\r)实现内容覆写

当监控的文件用回车符(\r)实现内容覆写(比如进度条)时,watch命令会忽略这些回车符,导致内容无法正确覆写,示例如下:

  1. 创建包含回车符的测试文件:
$ echo -e "Looooong-string \r short-string" > test.txt
  1. 用cat查看时,回车符会正确覆写内容:
$ cat test.txt 
 short-stringng
  1. 但用watch执行cat时,回车符被忽略,内容直接拼接:
$ watch cat test.txt
Every 2.0s: cat test.txt                    Sun Aug 28 21:39:59 2022

Looooong-string   short-string

解决方法

方法1:启用watch的控制字符支持

watch默认过滤了部分控制字符,加上-c参数可以保留ANSI控制字符(包括回车符),执行命令:

watch -c cat test.txt

此方法能让回车符正常触发内容覆写,是最简单直接的方案。

方法2:用script命令模拟终端环境

如果-c参数不生效,可通过script创建伪终端,让命令输出像在真实终端中一样解析控制字符:

watch 'script -qec "cat test.txt" /dev/null'

-q为静默模式,-e保证脚本退出码正确,/dev/null用于丢弃日志文件。

方法3:自定义监控脚本

直接写一个简单的循环脚本替代watch功能,手动处理终端刷新和回车符解析:

#!/bin/bash
while true; do
    clear
    cat test.txt
    sleep 2
done

保存为custom_watch.sh,赋予执行权限后直接运行:

chmod +x custom_watch.sh
./custom_watch.sh

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 07:48:44