处理用户输入与显示数据------------(创建本地临时文件在/temp中创建临时文件创建临时目录tee命令)

犀渠玉剑良家子,白马金羁侠少年。这篇文章主要讲述处理用户输入与显示数据------------(创建本地临时文件在/temp中创建临时文件创建临时目录tee命令)相关的知识,希望能为你提供帮助。
4.6 使用临时文件                Linux系统保留了一个特殊的目录位置,以供临时文件使用。Linux使用/tmp目录处理不需要永久保存的文件。大部分Linux发行版的系统配置都是在启动时自动删除/tmp目录中的任何文件。
【处理用户输入与显示数据------------(创建本地临时文件在/temp中创建临时文件创建临时目录tee命令)】                系统上的任何用户账户都有读取和写入/tmp目录中的文件的权限。该特性可以帮助用户轻松创建临时文件,而无需担心它们的清理问题。创建临时文件:mktemp命令可以轻松在/tmp文件夹中创建一个唯一的临时文件。shell创建该文件但是不使用默认的umask值。相反,它仅向文件所有者分配读取和写入权限,并使用户成为文件的所有者。创建文件之后,可以脚本对文件进行完整权限的读取和写入,但其他人都不能访问它。
4.6.1 创建本地临时文件
                默认情况下,mktemp在本地目录创建文件。要使用mktemp命令在本地目录中创建临时文件,只需要指定一个文件名即可。模块包括文本文件以及附加到文件名后的6个XXXXXX。mktemp命令使用一个6字符代码替换6个XXXXXX,以确保文件名在目录中的唯一性。
               
                可以创建多个临时文件,每个文件确保是唯一的。可以看出,mktemp命令的输出是它们创建的文件的名称。在脚本中使用mktemp命令时,需要使用一个变量保存该文件名,以便稍后再脚本中引用。        


#!/bin/bash
#创建临时文件,然后对临时文件进行读写
tempfile=`mktemp test.XXXXXX`
#创建文件输出描述符号
exec 3> $tempfile
echo "对临时文件$tempfile进行写操作"
#对临时文件进行写操作
echo"《静夜诗》" > & 3
echo"李白" > & 3
echo "床前明月光,疑是地上霜。" > & 3
echo "举头望明月,低头思故乡!" > & 3
#关闭文件输出描述符
exec 3> & -
echo "临时文件的内容"
#创建文件输出描述符号
exec 3< $tempfile
count=1
#对临时文件进行读操作
while read line < & 3
do
echo "第$count行:$line"
count=$[ $count +1 ]
done
#关闭文件输出描述符
exec 3< & -
echo "删除临时文件:$tempfile,禁止错误信息的输出!"
rm -rf $tempfile 2> /dev/null


                该脚本使用mktemp命令创建一个临时文件,并将文件名分配给$tempfile变量。然后使用临时文件作为文件描述符3的输出重定向文件。然后关闭临时文件输出描述符。然后创建临时文件输入描述符3,对临时文件进行读取。读取完成然后关闭文件输入描述符。最后,使用rm命令删除创建的临时文件并禁止错误信息输出!
4.6.2 在/temp中创建临时文件
                -t选项强迫mktemp在系统的/temp文件夹中创建临时文件。但使用该选项时,mktemp命令返回用于创建临时文件的完整路径名,而不是文件名。由于mktemp命令返回完整路径名,因此可以从Linux系统的任何目录引用临时文件,无论系统将临时目录放在哪个位置。    
#!/bin/bash
#在/tmp路径下创建一个临时文件
tempfile=`mktemp -t tmp.XXXXXX`
#向临时文件中写入数据
echo "This is a tmp file"> $tempfile
#向临时文件追加数据,不覆盖原有数据
for (( i=1; i< =9; i++ ))
do
for(( j=1; j< =9; j++))
do
[ $j -le $i ]& & echo -n "$i * $j= $[ $i * $j ] "
done
echo " "
done > > $tempfile

echo "临时文件$tempfile位于:$tempfile"
filename=`basename $tempfile`
echo $filename
echo "显示临时文件中的内容"
cat $tempfile
rm -rf $tempfile 2> /dev/null

       
4.6.3 创建临时目录
                -d选项让mktemp命令创建一个临时目录而不是一个文件。 


4.6.4 记录消息
                有时候有必要将输出同时发送到监视器和日志文件。这种情况下不需要使用两次重定向,只需要使用特殊命令tee命令即可。
                tee命令就像管道的T型接头。它将STDIN的数据同时发送到两个目的地。一个是STDOUT,另一个是tee命令指定的文件名:tee filename。
                由于tee重定向来自STDIN的数据,因此可以与管道命令配置使用重定向任何命令的输出。默认情况下,tee命令每次使用时都会覆盖输出文件。如果希望向文件添加数据,必须使用-a选项。使用这种技术,可以将数据保存在文件中,同时将数据显示在监视器上供用户查看。tee命令参数:
               
                tee操作实例:         


#!/bin/bash
#创建一个临时文件
tempfile=`mktemptmp.XXXXXX`

#在显示屏上输出信息,同时把信息输出到临时文件
echo "This is a tmp file"| tee $tempfile

#在显示屏上输出信息,同时把信息输出到临时文件
#且不覆盖原有的数据
echo "Hello ,ewang!" | tee -a $tempfile
echo "What can I do for you?" | tee -a $tempfile
echo "临时文件名:$tempfile"

#显示临时文件中的内容
echo "显示临时文件中的内容"
cat $tempfile
#删除临时文件并不输出错误信息
rm -rf $tempfile 2> /dev/null


                即可以永久保存输出副本的同时,也能将输出结果显示给用户。



    推荐阅读