mktemp

我应该使用多少个“X”来使用“mktemp”安全且可移植地创建临时文件?
mktemp

我应该使用多少个“X”来使用“mktemp”安全且可移植地创建临时文件?

有时,我会通过调用参数中mktemp包含 6 个或更多的命令来从 shell 脚本创建临时文件。但是,我不确定该数量是否适用于其他实现,因为我发现了具有不同数量的命令(例如,XTEMPLATEmktemp这里,这里, 和这里)。 我做了一些研究并发现了以下内容: GNU 实现mktemp需要三个或更多X。 OpenBSD 的实现mktemp似乎需要 6X个。然而,我几乎不知道是什么底层代码做。 FreeBSD 实现手册mktemp命令和功能X对于模板应该有多少个相当模糊。 ...

Admin

bash脚本解释
mktemp

bash脚本解释

我有以下我无法理解的脚本。有人可以解释一下吗? #!/bin/sh skip=14 tmpdir=`/bin/mktemp -d ${TMPDIR:-/tmp}/gzexe.XXXXXXXXXX` || exit 1 prog="${tmpdir}/`echo \"$0\" | sed 's|^.*/||'`" if /usr/bin/tail -n +$skip "$0" | "/bin"/gzip -cd > "$prog"; then /bin/chmod 700 "$prog" tra...

Admin

将生成的进程重定向到文件名中包含 pid 的临时文件
mktemp

将生成的进程重定向到文件名中包含 pid 的临时文件

假设myprogram通过终端(bash)生成并获得 pid 1234(每次都不同)。 我想将 stdout 和 stderr 重定向到名为的临时文件abc-$PID(如果 PID 为 1234,则使用 tempfile abc-1234。 代码现在看起来像这样: myprogram > /tmp/abc-$! 2>&1 它不起作用 请帮忙。 ...

Admin

如何设计可重用的脚本处理其他脚本的临时文件生命周期
mktemp

如何设计可重用的脚本处理其他脚本的临时文件生命周期

我需要创建一个可重用(“实用程序”)脚本,为我的任何其他(“应用程序”)脚本处理使用临时文件的整套操作: 创建 跟踪创建的临时文件 捕获退出(用户定期完成和中断)并删除创建的所有内容 每个应用程序脚本都需要自己“包含”实用程序脚本,而不是依赖某些“主”脚本会为其使用的所有下标调用一次它。 关键的要求是使用实用程序脚本的应用程序脚本可以互相调用,它们中的每一个又需要使用临时文件。脚本之间的调用都是 ./some_script.sh 和 . ./some_script.sh 有些脚本退出时带有错误代码;其他人只是没有明确地完成exit。可以使用子 she...

Admin

为什么在 /dev/shm 中创建文件并不比在 /tmp 中创建文件快?
mktemp

为什么在 /dev/shm 中创建文件并不比在 /tmp 中创建文件快?

假设我有两个 bash 文件。第一个叫做diskFile.bash: for i in {1..10000} do file=$(mktemp) cat > $file <<- "SIGN" "Hello World" SIGN done echo "finished" 第二个叫做ramFile.bash: for i in {1..10000} do file=$(mktemp -p /dev/shm/) cat > $file <<- "SIGN" "H...

Admin

如何在 bash 中安全地创建文件
mktemp

如何在 bash 中安全地创建文件

我有一个脚本,它创建一个临时文件作为标志,以防止脚本同时运行。目前它使用tempfile,例如 if ! tempfile -n /tmp/updating > /dev/null; then echo 'Another synchronization is currently running' >&2 exit 1 fi 该tempfile程序现已弃用,建议使用mktemp它,但mktemp似乎没有类似于 的选项-n。 我使用的是 Ubuntu 21.04。 那么我应该如...

Admin

mkstemp 因 RHEL 8 操作系统非 root 用户而失败
mktemp

mkstemp 因 RHEL 8 操作系统非 root 用户而失败

我有一个小脚本,它使用 mkstemp 创建 tmp 文件。我的脚本是使用 root 用户创建的,但是如果我以 root 以外的其他用户身份登录,那么我的脚本会运行,但 msktemp 失败并显示权限被拒绝 sh: /tmp/tmpFile-khB5hH: 权限被拒绝 在 RHEL 7 中执行同样的操作,并且没有权限被拒绝错误,RHEL 8 中发生了更改。看起来 RHEL 8 正在检查登录用户与有效用户。 我在 RHEL 7.5 和 RHEL 8.4 中对此进行了测试。 如果有人知道 RHEL 8 中的更改会导致权限问题,请提出建议。谢谢 ...

Admin

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

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

我经常需要一个临时文件,可以直接在其中解压一些存档(或创建一个临时项目),查看一些文件。预先无法预测特定目录可能需要多少时间。 此类目录通常是杂乱的主目录、/tmp项目目录。它们通常有一些弱密码之类的名称,比如qqq、1,test一个月后就变得难以描述。 是否有一些 shell 命令或外部程序可以帮助管理此类废弃目录,以便当我对它们失去兴趣时自动清理它们,我不需要为它们发明一个名称,但可以给出一个名字并容易持久? 如果没有这样的工具,创建一个是个好主意吗? ...

Admin

如何创建具有“正常”权限的临时文件?
mktemp

如何创建具有“正常”权限的临时文件?

在构建脚本中,我想创建一个具有唯一生成名称的临时文件,然后向其中写入一些数据,然后将该文件重命名为其最终名称(此过程的原因是我希望重命名发生(主要是)原子)。 但如果我使用mktemp,新文件将具有非常严格的权限: 文件创建为 u+rw,目录创建为 u+rwx,减去 umask 限制。 ...并且当文件重命名时,这些权限将被保留。但是,我希望生成的文件具有“正常”权限;也就是说,它应该与touchshell 重定向创建的文件具有相同的权限。 实现这一目标的推荐方法是什么?是否有一个(常见的)替代方案mktemp;或者是否有一种简单可靠的方法可以将文件权限...

Admin

mktemp 在 pwd 中创建文件而不是在 /tmp 中
mktemp

mktemp 在 pwd 中创建文件而不是在 /tmp 中

以前 mktemp 用于在/tmp.今天我注意到 mktemp 正在创建文件 $PWD而不是在/tmp? 我是否无意中改变了一些东西?有什么建议来解决这个问题吗? 笔记: 我能够做到:ls /tmp $ mktemp --version mktemp (GNU coreutils) 8.30 $ echo $TMPDIR $ ...

Admin

在 makefile 中使用 mktemp
mktemp

在 makefile 中使用 mktemp

我想创建一个临时文件并使用 makefile 将一些文本通过管道传输到其中。 在 bash 中,我可以创建一个临时文件并将文本通过管道传输到其中,如下所示: temp_file=$(mktemp) echo "text goes into file" > ${temp_file} cat ${temp_file} rm ${temp_file} 运行时的输出(如预期): text goes into file 在 makefile 中使用相同的代码时,我得到以下输出: 生成文件: test: temp_file=$(mktemp) ...

Admin

为什么 POSIX 中没有 mktemp 命令?
mktemp

为什么 POSIX 中没有 mktemp 命令?

shell 脚本需要做的最常见的事情之一是创建和操作临时文件。安全地这样做是一件痛苦的事情,因为您需要避免名称冲突,避免竞争条件,确保文件具有正确的权限等。(请参阅GNU Coreutils 手册和这篇微不足道的迹象博客文章大多数类 Unix 操作系统通过提供一个mktemp解决所有这些问题的命令来解决这个问题。然而,这些命令的语法和语义mktemp未标准化。如果您确实想安全地创建临时文件和便携,你必须求助于丑陋的拼凑例如以下内容: tmpfile=$( echo 'mkstemp(template)' | m4 -D template="${T...

Admin

macOS 上的 mktemp 不支持 $TMPDIR
mktemp

macOS 上的 mktemp 不支持 $TMPDIR

我之前就注意到了这一点,但在我回答的时候又被提起了“如何将目录移动到同名目录中?”: 就环境变量而言,macOS 上的实用mktemp程序与 Linux 或 BSD(或至少是 OpenBSD)上的同名实用程序的行为不同TMPDIR。 要在以下位置创建一个临时文件当前的目录,我通常可以说 tmdfile=$(TMPDIR=. mktemp) 或者 tmpfile=$(TMPDIR=$PWD mktemp) (对于带有 的临时目录也类似mktemp -d)。 在 macOS 上,我必须通过给它一个实际的模板来强制该实用程序使用当前目录,如下所示...

Admin

为什么 mktemp -u 被认为“不安全”?
mktemp

为什么 mktemp -u 被认为“不安全”?

我最近阅读了该--help文本mktemp(该man页面不可用)并发现了这一点: -u, --dry-run do not create anything; merely print a name (unsafe) 为什么这“不安全”?如此标记有什么具体原因吗? ...

Admin

通过 trap 删除临时方向
mktemp

通过 trap 删除临时方向

我有一个如下所示的脚本: #!/bin/bash set -e tmpdir=$(mktemp -d) pushd $tmpdir trap 'popd && rm -rf $tmpdir' EXIT # Business logic which may succeed or fail... /bin/false 当它退出时,一切popd都很好,但它不会删除临时目录。看来$tmpdir这个陷阱并没有解决,但是我们该如何克服呢? 我验证了$tmpdir通过重新运行不包含-rf在rm.退出时: rm: missing operan...

Admin