如何模拟管道追加?

如何模拟管道追加?

我用来curlftpfs安装远程驱动器。不幸的是,由于文件位于远程端,我无法使用>>操作。据我了解这个链接不可能附加到现有文件(除非我弄错了,请纠正我)。所以我有这样的功能:

LogMe()
{
  p="$1"
  DateTime=`date "+%Y/%m/%d %H:%M:%S"`
  echo $DateTime' : '$p >> $logfile
}

$logfile是使用挂载的远程文件curlftpfs。如何修改我的函数以支持附加而不使用<<

答案1

最佳方法是简单地忽略此访问的curlftpfs,因为 ftp 协议有一个附加将数据添加到文件的命令。因此,为更新设置一次性 ftp 连接,例如:

echo $DateTime' : '$p | 
curl --append -T - ftp://user:password@host/some/logfile

如果您不通过挂载点引用日志文件,则第二个 ftp 不应过度干扰curlftpfs。

但是,如果您不想使用第二个 ftp,则必须复制整个日志文件,添加该行,然后将其复制回来。该命令sponge 可以帮助您简化任务:

(cat $logfile; echo $DateTime' : '$p) | sponge $logfile

Sponge 将所有输入收集到一个临时文件中,然后“自动”将其重命名为输出文件。

相关内容