在 Firefox 中,当我选择打开一个文件而不保存它并且没有内部插件(例如 pdf 或 doc 文件)时,默认行为是该文件作为临时文件保存在 /tmp 中,并且所选应用程序(例如mupdf 或 libreoffice)使用临时文件作为输入打开。临时文件的文件名通常是下载文件的原始名称,除非 /tmp 中已存在同名文件。在这种情况下,后缀会附加到文件名的扩展名之前(-1、-2、-3 等)。当 Firefox 关闭时,临时文件将从 /tmp 中删除(除非更改默认行为)。
我认为当不再需要每个临时文件时(即,当使用它的应用程序停止使用它时)删除它会更方便。有办法实现吗?
作为一种替代方案,对我来说更好的行为是用新文件替换 /tmp 中的现有文件,以防同名文件已存在? (即,不更改文件名)。这可能吗?
答案1
要尽快删除临时文件,您可以编写一个包装器,例如:
#!/bin/sh
the-application "$1"
rm -f "$1"
替换the-application
为真正的可执行文件的名称,并要求 Firefox 使用此包装器而不是应用程序。或者:
#!/bin/sh
the-application "$1"
case "$1" in
/tmp/*) rm -f "$1" ;;
esac
如果未来的 Firefox 版本不为“file:”URL 创建新文件(在这种情况下您不希望删除该文件),这种形式会更安全。
请注意,有些应用程序会立即返回,如果在应用程序退出之前删除文件,则可能无法正常工作。在这种情况下,您无能为力(至少以可靠的方式)。
关于替代方案(用相同名称替换现有文件),这可能会与使用 的其他应用程序发生冲突/tmp
,并可能产生安全隐患。一般来说,这不是一个好主意。
答案2
我已经在 Firefox 参数中呆了一段时间了,它们看起来真的很难看。但!在您的示例中,有一个简单的解决方案。
首先,您必须创建自己的脚本,包括设置临时路径,然后运行浏览器,最后从临时路径中删除文件。这看起来像
#!/bin/bash
tmp_folder='/tmp/firefox-tmp'
export TMP=$tmp_folder
export TEMP=$tmp_folder # (my Iceweasel needs setting both TMP and TEMP!)
mkdir $tmp_folder
firefox
rm -f $tmp_folder/*
将此文件保存在某处(在桌面上,例如:/home/<user>/Desktop/firefox.sh
并授予执行权限)
chmod +x full_path_to_file_on_desktop
现在,当您运行脚本时,您将根据需要将所有临时文件重定向到此/tmp/firefox-tmp
文件夹,并且一旦关闭浏览器,文件夹内容将被删除。
提示:我在 Firefox (about:config) 中没有找到任何设置来更改您所面临的默认行为,因此请使用我的解决方案。真的行 :)
您还可以使用用户配置文件和缓存配置文件,但这是另一个主题...yyy...主题;)