首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在文件上使用cat修改文件

在文件上使用cat修改文件
EN

Stack Overflow用户
提问于 2021-07-08 10:08:09
回答 2查看 57关注 0票数 0

我编写了一个bash脚本,它使用cat将一个文件的内容写入另一个文件。然而,我希望被写入的文件被清空,基本上每次都被写入。我的当前代码只在开始时清空文件。

守则:

代码语言:javascript
运行
复制
#!/bin/ash
while true
do
cat /dev/rs232 > /tmp/regfile
> /dev/rs232
sleep 1
> /tmp/regfile
done

编辑:为了使目的更清楚一点,我尝试用另一个程序(将输出发布给make )来读取/tmp/regfile,它没有直接读取/dev/rs232的能力(所以我的程序应该是解决这个问题的方法)。/dev/rs232不断地接收一个新字符串。sleep 1是因为它只能每秒钟发布一次。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-07-08 13:18:58

首先,您必须不断地从rs232读取,因为很可能设备文件没有任何缓冲区。因此,您必须自己缓冲输入。然后,每1秒就可以将缓冲区刷新到文件中。

代码语言:javascript
运行
复制
# Using cat to have hopefully 4K buffer in pipe
# Would be better to use `stdbuf -o4K` explicitly.
cat /dev/rs232 |
while true; do
     # reading data for one second
     data=$(timeout 1 cat)  # TODO: handle errors, so it does not loop endlessly
     # Write data to regfile.
     # This should be fast enough or the buffer from the device
     # should be big enough so that `cat /dev/rs232` will not notice
     # that we stopped reading from stdin.
     # Ideally, this would be asynchronously in another process or thread.
     printf "%s" "$data" > /tmp/regfile
done
票数 1
EN

Stack Overflow用户

发布于 2021-07-08 12:22:40

清空文件的一种方法,>filename

如果您想提高效率,那么也有,truncate -s 0 filename

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68299586

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档