有很多方法可以做到这一点,我在这里介绍的就是其中一种,使用许多 Linux 发行版中默认安装的“mktemp”工具。
临时文件和目录
“mktemp”工具默认出现在“GNU coreutils”包中,它的目的仅仅是创建临时文件/目录。
创建临时文件和临时目录
它的基本使用非常简单。在不带任何参数的命令行中调用“mktemp”将在您的磁盘上的/tmp内创建一个文件,其名称将显示在屏幕上。看:
$ mktemp
/tmp/tmp.JVeOizVlqk
创建目录就像在命令行中添加“-d”参数一样简单。
$ mktemp -d
/tmp/tmp.sBihXbcmKa
在实践中使用
实际上,屏幕上显示的临时文件或目录名称没有用处。它必须存储在一个可以随时访问的变量中,并且在处理过程中可以读取或写入。
在下面的示例中,有一个小脚本,顺便说一句没用,但它向我们展示了一个合适的一步一步。看:
#!/bin/sh
#
#Create a temporary file
TEMP = `mktemp`
#Save all the content of the entered path
ls -l "$1"> $TEMP
#Read temporary file and list only directories
grep ^d $TEMP
sudo rm -f $TEMP
请注意,命令“mktemp”是在子shell 中调用的(在“- crase”之间),其输出存储在变量“TEMP”中。
然后,为了可以读取或写入文件,只需使用变量,其中会有文件名,就像在ls
, grep
和rm
命令中所做的那样。
如果您需要创建目录,如前所述,过程是相同的,只需-d
在 mktemp 命令行中添加一个。
#!/bin/sh
#
TEMP = `mktemp -d`
cd $TEMP
.
.
.
sudo rm -rf $TEMP
如果要创建许多临时文件,我们使用“-p”参数来指定应创建文件的路径。
#!/bin/sh
#
TEMP = `mktemp -d`
cd $TEMP
FILE1 = `mktemp -p $TEMP`
.
.
.
sudo rm -f $FILE1
sudo rm -rf $TEMP
只有这样。您的脚本现在将能够更专业地使用临时文件。
tclsh
但是,我想用而不是[bourn shell ..来做这个 sh
。但我做了一些尝试,但没有任何效果。这是我尝试过的一个例子:
# Create a temporary file
exec sh -c "TEMP =`mktemp -d`"
set dir [cd $TEMP]
# Save all content from the entered path
exec ls -l "$1"> $TEMP
set entry [glob -type f $env(dir) *.jpg]
# Read temporary file and list only directories
puts $entry
我最大的问题是并且正在创建变量
# Create a temporary file
exec sh -c "TEMP =`mktemp -d`"
这是行不通的!
谁能给我一个免费的样品?!