首页 > 解决方案 > 标准 linux 实用程序,无需 shell 即可组合文件

问题描述

我正在尝试将一个文件的内容附加到另一个现有文件中。这对于外壳来说是微不足道的。我试图在没有外壳的单个命令中完成它。这可能吗?

我基本上想跑:

cat file2 >> file1

不幸的是,我正在执行的环境不是 shell,因此不支持>>操作员。

是否有一些相对标准的 linux 工具可以做到这一点,除了使用 shell 像:

sh -c "cat file2 >> file1"

编辑:我正在寻找一个可以放入 systemd 服务ExecStart=指令的班轮。是的,我在上面发布的变体有效,我只是觉得它很hacky。

我很惊讶没有工具可以准确地做到这一点。

我还可以制作一个我从 systemd 调用的文件my-script.sh,它可以满足我的需求。但这是一个额外的文件,感觉比第一个可能的解决方案更“hacky”。

如果没有标准工具可以做到这一点,那么我猜我的问题的“答案”将是“否”。

标签: linux

解决方案


这听起来像一个XYProblem,但你可以使用dd

dd if=file2 of=file1 conv=notrunc oflag=append

如果您不使用支持 的 GNU dd,oflag=append则可以手动指定字节偏移量:

dd if=file2 of=file1 bs=1 seek=insert_size_of_file1_in_bytes_here

推荐阅读