shell 中的临时符号链接 - “命名进程替换” - 重命名文件而不在磁盘上创建副本/符号链接?

shell 中的临时符号链接 - “命名进程替换” - 重命名文件而不在磁盘上创建副本/符号链接?

Thunderbird 不会将没有 .eml 扩展名的文件作为电子邮件文件打开,而是开始撰写新邮件并将其添加为附件。要在脚本中使用 Thunderbird,我正在寻找一种方法,允许您“暂时重命名”file为 a file.eml,在 Thunderbird 中打开它(可能是编辑,但至少是读取)并关闭它而不将任何内容保存到磁盘 - 全部在该进程的内存。

虽然这可以通过复制它或在临时位置创建指向该文件的符号链接来实现有很多优雅的方法来使用进程替换或者这里是字符串相反,它会在 RAM 中创建“临时文件”,这些文件仅在进程期间存在。

有没有什么可以在 bash/zsh 中创建这样的“伪符号链接”?

答案1

如果您建议执行该序列的脚本:

  1. 链接filenamefilename.eml
  2. Thunderbird 打开filename.eml并执行它对数据所做的任何操作
  3. 撤消第 1 步中的链接

那么为什么硬链接达不到预期的效果呢?例如,ln而不是ln -s

file_name=/path/to/file
ln "${file_name}" "${file_name}.eml"
thunderbird -arg1 -arg2 -arg-etc
rm "${file_name}.eml"

硬链接不会消耗额外的磁盘空间,它们只是为文件的索引节点和数据提供额外的文件名/文件路径。不需要将文件数据复制到 RAM 中,除非磁盘 I/O 出现问题(但如果文件一开始就有 .eml 扩展名,就会出现问题)。

相关内容