在临时文件夹中运行脚本

时间:2012-07-23 18:58:19

标签: bash sed awk grep

是否可以在除实际所在的临时文件夹之外的临时文件夹中运行bash脚本?

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

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

提前感谢您的回复。

3 个答案:

答案 0 :(得分:3)

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

dir=$(mktemp -d)

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

cd "$OLDPWD"
echo "Back in the old directory: $PWD"

答案 1 :(得分:3)

  

是否可以在除。之外的临时文件夹中运行bash脚本   它居住在哪一个?

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

  

mktemp -d和tempfile -d是否也这样做?如果是这样,可以有人   请举例说明其用法。

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

tmpdir=$(mktemp -d)
cd $tmpdir

答案 2 :(得分:3)

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

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

  mkdir "mydir.$$"

但是,mktemp用更安全,更安全的方法取而代之。

用法通常是:

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

$template是可选的。它允许您设置名称。模板包含一系列XXX,程序可以使用它来保证唯一的名称。如果您未指定$temp_dir,则通常会将目录置于/tmp

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