3

是否可以在一个临时文件夹中运行bash脚本,而不是它实际所在的文件夹?

我的脚本使用了很多文件名。我担心其中一个名称可能与文件夹中的其他名称一致。我根据包含的数据命名了文件,并考虑了可重用性。

做 同样mktemp -dtempfile -d事情吗?如果是这样,有人可以用一个例子来说明它的用法。

提前感谢您的回复。

4

3 回答 3

3

是否可以在一个临时文件夹中运行 bash 脚本,而不是它实际所在的文件夹?

是的,您可以cd在脚本中使用来更改当前目录

mktemp -d 和 tempfile -d 做同样的事情吗?如果是这样,有人可以用一个例子来说明它的用法。

它不考虑内容,它创建一个随机名称并确保没有这样的目录:

tmpdir=$(mktemp -d)
cd $tmpdir
于 2012-07-23T19:23:28.860 回答
3

您可以轻松地在正在运行的脚本中切换目录。Bash 有一个当前工作目录的概念,您可以随时更改它。例如:

dir=$(mktemp -d)

cd "$dir"
echo "Current directory changed: $PWD"

cd "$OLDPWD"
echo "Back in the old directory: $PWD"
于 2012-07-23T19:22:09.980 回答
3

tempfile在标准的 Linux 系统上看不到,对命令也不熟悉。

在过去,我们只是$$在文件和目录名称的末尾附加:

  mkdir "mydir.$$"

但是,mktemp 用一种更安全、更安全的方法代替了它。

用法一般是:

 $ my_temp_dir=$(mktemp -d -tmpdir=$temp_dir -t $template)

$template是可选的。它允许您设置名称。模板包含XXX程序可以用来保证唯一名称的一系列。如果不指定$temp_dir,一般会把目录放在/tmp.

该语法利用mktemp创建一个临时目录然后回显名称的优势。因此,您可以捕获创建的临时目录的名称。

于 2012-07-23T19:39:44.223 回答