![]() |
1
123
我通常创建一个目录,在其中放置所有临时文件,然后立即创建一个退出处理程序,在脚本退出时清理该目录。
如果您将所有临时文件置于
|
![]() |
2
107
你可以设置一个“ trap
或者,我最喜欢的unix ISM之一是打开一个文件,然后在您仍然打开它时将其删除。文件保留在文件系统中,您可以读取和写入它,但一旦程序退出,文件就会消失。不过,我不知道你在bash里会怎么做。
顺便说一句:我将给出一个支持mktemp而不是使用您自己的解决方案的论点:如果用户预期您的程序将创建巨大的临时文件,他可能需要设置
|
![]() |
3
28
你想使用 trap 用于处理退出脚本或CTRL-C等信号的命令。请参阅 Greg's Wiki 详情请参阅。
|
![]() |
4
11
请记住,选择的答案是
只能在bash中工作(如果shell为
还要记住,当脚本退出时,信号“0”(aka EXIT)的陷阱总是被执行,从而导致重复执行
如果存在退出信号,则不将所有信号堆叠在一行中的原因。
此解决方案将为您提供更多的控制,因为您可以在最终退出之前在实际信号出现时运行一些代码(
|
![]() |
5
5
与$$一起使用可预测文件名的另一种选择是存在一个巨大的安全漏洞,您永远都不应该考虑使用它。即使它只是你的单用户电脑上的一个简单的个人脚本。这是一个你不应该养成的坏习惯。 BugTraq 充满了“不安全的临时文件”事件。看见 here , here 和 here 有关临时文件安全方面的更多信息。 我最初想引用不安全的TMP1和TMP2作业,但经过再三考虑,可能会这样 not be a good idea |
![]() |
6
5
我不敢相信这么多人认为文件名中没有空格。如果$TMPDIR被分配到“临时目录”,世界将崩溃。
空格和其他特殊字符(如文件名中的单引号和回车符)应该在代码中被视为良好编程习惯的要求。 |
![]() |
7
2
我更喜欢使用
|
![]() |
8
-5
您不必费心删除那些用mktemp创建的tmp文件。它们将在以后被删除。
|