是否有一些“mktemp”的交互式类似物可以帮助组织一次性目录?

是否有一些“mktemp”的交互式类似物可以帮助组织一次性目录?

我经常需要一个临时文件,可以直接在其中解压一些存档(或创建一个临时项目),查看一些文件。预先无法预测特定目录可能需要多少时间。

此类目录通常是杂乱的主目录、/tmp项目目录。它们通常有一些弱密码之类的名称,比如qqq1test一个月后就变得难以描述。

是否有一些 shell 命令或外部程序可以帮助管理此类废弃目录,以便当我对它们失去兴趣时自动清理它们,我不需要为它们发明一个名称,但可以给出一个名字并容易持久?

如果没有这样的工具,创建一个是个好主意吗?

答案1

它并没有完全涵盖您提到的所有功能(轻松地使临时目录持久化),但我更喜欢拘萨罗南达shell为了这。它创建一个临时目录,在其中启动一个新的 shell,并在 shell 退出时清理临时目录。

在 shell 退出之前,如果您决定保留临时目录,请发送信号USR1shell;通常

kill -USR1 $PPID

当你退出时,shell会告诉你在哪里找到临时目录,你可以将它移动到更持久的地方。

如果没有这样的工具,创建一个是个好主意吗?

这是最好的创建工具——你已经知道它对你有用。

答案2

我只是使用cd $(mktemp -d)然后破解。一般来说,只要我需要它,这些东西就会存在,但如果我不采取任何行动,它就会消失。

我认为我的操作系统已配置为在重新启动时删除临时文件(默认情况下不是我的操作)。其他发行版会自动配置为在一段时间不活动后删除临时文件。

无论哪种方式都适合我(可能也适合你)。

答案3

当你说“当我对它们失去兴趣时自动清理”时,这是相当主观的,并且可能因人而异。也就是说,“自动”一词立即让人想到 cron 实用程序。这是一个简单的一次性设置,应该可以满足您的要求(或至少部分要求)。请注意,我并不是声称涵盖了所有可能的场景和高级用法,只是想帮助OP。

概述:

  1. 定义别名以创建具有随机名称但具有预先分配的后缀的目录。
  2. 每当您想要创建临时目录时,请使用此别名而不是 mktemp。当您运行它时,它会吐出临时目录的名称,并且始终会在 /tmp 中创建目录。
  3. 运行 cron 作业来查找并删除这些临时目录,但要符合某些条件(例如超过 30 天)。

详细步骤:

定义名为 mktmpdir 的别名(您可以将其放入 ~/bash_aliases 或 ~/.bashrc 中):

alias mktmpdir='mktemp -d --suffix=.delme'

-d(创建目录,而不是文件)

--suffix=.delme(始终向目录添加名为 .delme 的后缀。请注意句点)

运行crontab -e添加 cron 作业,该作业将清除修改时间超过 30 天的目录(find 命令有很多选项,只需阅读手册页):

0 5 * * 0 find /tmp -type d -ctime +30 -name *.delme -user YourUserName -exec rm -rf {} + 

选项说明:

  • 0 5 * * 0(周日凌晨 5 点运行此作业)
  • -type d(仅限目录)
  • -ctime +30(超过 30 天)

相关内容