我经常需要一个临时文件,可以直接在其中解压一些存档(或创建一个临时项目),查看一些文件。预先无法预测特定目录可能需要多少时间。
此类目录通常是杂乱的主目录、/tmp
项目目录。它们通常有一些弱密码之类的名称,比如qqq
、1
,test
一个月后就变得难以描述。
是否有一些 shell 命令或外部程序可以帮助管理此类废弃目录,以便当我对它们失去兴趣时自动清理它们,我不需要为它们发明一个名称,但可以给出一个名字并容易持久?
如果没有这样的工具,创建一个是个好主意吗?
答案1
它并没有完全涵盖您提到的所有功能(轻松地使临时目录持久化),但我更喜欢拘萨罗南达shell
为了这。它创建一个临时目录,在其中启动一个新的 shell,并在 shell 退出时清理临时目录。
在 shell 退出之前,如果您决定保留临时目录,请发送信号USR1
到shell
;通常
kill -USR1 $PPID
当你退出时,shell
会告诉你在哪里找到临时目录,你可以将它移动到更持久的地方。
如果没有这样的工具,创建一个是个好主意吗?
这是最好的创建工具——你已经知道它对你有用。
答案2
我只是使用cd $(mktemp -d)
然后破解。一般来说,只要我需要它,这些东西就会存在,但如果我不采取任何行动,它就会消失。
我认为我的操作系统已配置为在重新启动时删除临时文件(默认情况下不是我的操作)。其他发行版会自动配置为在一段时间不活动后删除临时文件。
无论哪种方式都适合我(可能也适合你)。
答案3
当你说“当我对它们失去兴趣时自动清理”时,这是相当主观的,并且可能因人而异。也就是说,“自动”一词立即让人想到 cron 实用程序。这是一个简单的一次性设置,应该可以满足您的要求(或至少部分要求)。请注意,我并不是声称涵盖了所有可能的场景和高级用法,只是想帮助OP。
概述:
- 定义别名以创建具有随机名称但具有预先分配的后缀的目录。
- 每当您想要创建临时目录时,请使用此别名而不是 mktemp。当您运行它时,它会吐出临时目录的名称,并且始终会在 /tmp 中创建目录。
- 运行 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 天)