命令行“缓冲区”

Mad*_*Tux 3 bash files stdout

我想将文件tail的最后 100 行写入同一个文件,但该命令 tail -n 100 file > file不起作用,我假设是因为在从原始文件读取所有内容之前,stdout 已写入文件“实时”。

有没有办法将输出通过管道传输到某物,然后将其保留到所有 100 行都存在,然后将其输出到文件?或者只是以这种方式缩短文件的另一种方法?

Mic*_*mer 10

sponge来自moreutils对此有好处。它会:

吸收标准输入并写入文件

你像这样使用它:

tail -n 100 file | sponge file
Run Code Online (Sandbox Code Playgroud)

以获得您想要的效果。