使用临时文件
1.创建本地临时文件
在默认情况下,mktemp 会在本地目录中创建一个文件。在使用 mktemp 命令时,只需指定一个文件名模板即可。
模板可以包含任意文本字符,同时在文件名末尾要加上 6 个 X:
$ mktemp testing.XXXXXX
$ ls -al testing*
-rw------- 1 rich rich 0 Jun 20 21:30 testing.UfIi13
$
2.mktemp 命令会任意地将 6 个 X 替换为同等数量的字符,以保证文件名在目录中是唯一的。
你可以创建多个临时文件,并确保每个文件名都不重复:
$ mktemp testing.XXXXXX
testing.1DRLuV
$ mktemp testing.XXXXXX
testing.lVBtkW
$ mktemp testing.XXXXXX
testing.PgqNKG
$ ls -l testing*
-rw------- 1 rich rich 0 Jun 20 21:57 testing.1DRLuV
-rw------- 1 rich rich 0 Jun 20 21:57 testing.PgqNKG
-rw------- 1 rich rich 0 Jun 20 21:30 testing.UfIi13
-rw------- 1 rich rich 0 Jun 20 21:57 testing.lVBtkW
$
3.如你所见,mktemp 命令的输出正是它所创建的文件名。在脚本中使用 mktemp 命令时
可以将文件名保存到变量中,这样就能在随后的脚本中引用了:
$ cat test19
#!/bin/bash
# creating and using a temp file
tempfile=$(mktemp test19.XXXXXX)
exec 3>$tempfile
echo "This script writes to temp file $tempfile"
echo "This is the first line" >&3
echo "This is the second line." >&3
echo "This is the last line." >&3
exec 3>&-
echo "Done creating temp file. The contents are:"
cat $tempfile
rm -f $tempfile 2> /dev/null
$ ./test19
This script writes to temp file test19.vCHoya
Done creating temp file. The contents are:
This is the first line
This is the second line.
This is the last line.
$ ls -al test19*
-rwxr--r-- 1 rich rich 356 Jun 20 22:03 test19
$
该脚本使用 mktemp 命令创建了临时文件并将文件名赋给了$tempfile 变量。接下来将这
个临时文件作为文件描述符 3 的输出重定向文件。将临时文件名显示在 STDOUT 之后,向临时文件
中写入了几行文本,然后关闭了文件描述符。最后,显示临时文件的内容,用 rm 命令将其删除。
4.在/tmp 目录中创建临时文件
-t 选项会强制 mktemp 命令在系统的临时目录中创建文件。
在使用这个特性时,mktemp命令会返回所创建的临时文件的完整路径名,而不只是文件名:
$ mktemp -t test.XXXXXX
/tmp/test.xG3374
$ ls -al /tmp/test*
-rw------- 1 rich rich 0 2020-06-20 18:41 /tmp/test.xG3374
$
由于 mktemp 命令会返回临时文件的完整路径名,因此可以在文件系统的任何位置引用该临时文件:
$ cat test20
#!/bin/bash
# creating a temp file in /tmp
tempfile=$(mktemp -t tmp.XXXXXX)
echo "This is a test file." > $tempfile
echo "This is the second line of the test." >> $tempfile
echo "The temp file is located at: $tempfile"
cat $tempfile
rm -f $tempfile
$ ./test20
The temp file is located at: /tmp/tmp.Ma3390
This is a test file.
This is the second line of the test.
$
在创建临时文件时,mktemp 会将全路径名返回给环境变量。这样就能在任何命令中使用该值来引用临时文件了
7.创建临时目录
-d 选项会告诉 mktemp 命令创建一个临时目录。你可以根据需要使用该目录,比如在其中
创建其他的临时文件:文章来源:https://www.toymoban.com/news/detail-728609.html
$ cat test21
#!/bin/bash
# using a temporary directory
tempdir=$(mktemp -d dir.XXXXXX)
cd $tempdir
tempfile1=$(mktemp temp.XXXXXX)
tempfile2=$(mktemp temp.XXXXXX)
exec 7> $tempfile1
exec 8> $tempfile2
echo "Sending data to directory $tempdir"
echo "This is a test line of data for $tempfile1" >&7
echo "This is a test line of data for $tempfile2" >&8
$ ./test21
Sending data to directory dir.ouT8S8
$ ls -al
total 72
drwxr-xr-x 3 rich rich 4096 Jun 21 22:20 ./
drwxr-xr-x 9 rich rich 4096 Jun 21 09:44 ../
drwx------ 2 rich rich 4096 Jun 21 22:20 dir.ouT8S8/
-rwxr--r-- 1 rich rich 338 Jun 21 22:20 test21
$ cd dir.ouT8S8
[dir.ouT8S8]$ ls -al
total 16
drwx------ 2 rich rich 4096 Jun 21 22:20 ./
drwxr-xr-x 3 rich rich 4096 Jun 21 22:20 ../
-rw------- 1 rich rich 44 Jun 21 22:20 temp.N5F3O6
-rw------- 1 rich rich 44 Jun 21 22:20 temp.SQslb7
[dir.ouT8S8]$ cat temp.N5F3O6
This is a test line of data for temp.N5F3O6
[dir.ouT8S8]$ cat temp.SQslb7
This is a test line of data for temp.SQslb7
[dir.ouT8S8]$
这段脚本在当前目录中创建了一个临时目录,然后使用 cd 命令进入该目录,在其中创建了两个临时文件。
这两个临时文件又被分配给了文件描述符以用来保存脚本的输出文章来源地址https://www.toymoban.com/news/detail-728609.html
到了这里,关于shell_60.Linux使用临时文件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!