有时候,我们需要创建文件临时存放一些输出的信息,创建文件时就可能出现文件名存在的问题。如何创建唯一的文件名,Linux为我们提供几个方案:

1、mktemp(强烈推荐)

The  mktemp  utility takes the given filename template and overwrites a portion of it to create a unique filename.  The template  may  be  any filename  with  some  number  of  'Xs'  appended  to  it,  for  example /tmp/tfile.XXXXXXXXXX.  If  no  template  is  specified a  default  of tmp.XXXXXXXXXX is used and the -t flag is implied (see below).

mktemp [-V] | [-dqtu] [-p directory] [template]
-d    Make a directory instead of a file.    # 创建临时目录

下面演示一下 mktemp 如何使用:

#!/bin/bash

TMPFILE=$(mktemp /tmp/tmp.XXXXXXXXXX) || exit 1
echo "program output" >> $TMPFILE

2、$RANDOM

编程中,随机数是经常要用到的。BASH也提供了这个功能:$RANDOM 变量,返回(0-32767)之间的随机数,它产生的是伪随机数,所以不应该用于加密的密码。

#!/bin/bash

TMPFILE="/tmp/tmp_$RANDOM"
echo "program output" >> $TMPFILE

3、$$变量

Shell的特殊变量 $$保存当前进程的进程号。可以使用它在我们运行的脚本中创建一个唯一的临时文件,因为该脚本在运行时的进程号是唯一的。

这种方法在同一个进程中并不能保证多个文件名唯一。但是它可以创建进程相关的临时文件。

#!/bin/bash

TMPFILE="/tmp/tmp_$$"
echo "program output" >> $TMPFILE

linux之创建临时文件的方法的更多相关文章

  1. linux 下创建文本的方法

    1.   打开终端,输入  vi  1.txt 输入:wq 文本创建成功 2.  打开终端,输入  vim  1.txt 输入:wq 文本创建成功 3. 打开终端 , 输入 touch  1.txt ...

  2. 在Linux下创建分区和文件系统的方法详解

    在 Linux 中创建分区或新的文件系统通常意味着一件事:安装 Gnome Parted 分区编辑器(GParted).对于大多数 Linux 用户而言,这是唯一的办法.不过,你是否考虑过在终端创建这 ...

  3. Linux下几种另类创建文件之方法

    以前我们用编辑器例如vi来新建文件,下面介绍几种另类生成文件的方法,多用在备份和测试上. 创建文件的方法: 1.echo 命令    #echo "set bell"  >& ...

  4. 在LINUX上创建GIT服务器【转】

    转自:http://blog.csdn.net/xiongmc/article/details/9176785 如果使用git的人数较少,可以使用下面的步骤快速部署一个git服务器环境. 1. Cli ...

  5. linux 用户创建、管理、权限分配

    (1)su与sudo su:通过su可以在用户之间切换,如果超级权限用户root向普通或虚拟用户切换不需要密码,什么是权力?这就是!而普通用户切换到其它任何用户都需要密码验证: sudo: sudo扮 ...

  6. [python] 创建临时文件-tempfile模块

    This module generates temporary files and directories. It works on all supported platforms.In versio ...

  7. Linux 之创建工作目录-mkdir

    在Linux下创建工作目录,一般使用 "mkdir" 指令,一下将介绍"mkdir"指令的使用方法,供大家参考. 一.使用帮助 在Linux终端(命令行)输入: ...

  8. 在Linux中创建静态库.a和动态库.so

    转自:http://www.cnblogs.com/laojie4321/archive/2012/03/28/2421056.html 在Linux中创建静态库.a和动态库.so 我们通常把一些公用 ...

  9. linux下创建和删除软、硬链接

    linux下创建和删除软.硬链接 在Linux系统中,内核为每一个新创建的文件分配一个Inode(索引结点),每个文件都有一个惟一的inode号.文件属性保存在索引结点里,在访问文件时,索引结点被复制 ...

随机推荐

  1. 大蟒蛇肚子的"风暴"

    遇到了数据库连接数不足的问题,一般情况下会预留一些会话增加的情况,但在一些特殊情况下如连接风暴(logon storm), 如果在监听中没有做rate限流,对数据库来说巨大的冲击可能会导致数据库Han ...

  2. find cat sed awk 简单组合使用

    find:查找 // .表示当前目录:   /表示根目录:  | 管道符:  xargs表示将前面的搜索接口作为参数传递到后面的命令中:grep 过滤 // xxxx表示文件名 1.查找指定文件名的文 ...

  3. mysql查询哪个表数据量最大

    use information_schema;select table_name,table_rows from tables where table_schema='cargo_new' order ...

  4. POI-java下载excel-HSSFWorkbook

    import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOExceptio ...

  5. 12个scp传输文件的命令栗子

    12个scp传输文件的命令栗子 一直在用scp进行简单的远程复制文件的功能,今天无意间看到一篇介绍scp的文章,便想着学习学习并将其翻译了过来.原文戳这里.翻译不对的地方,敬请指正. 另外我最近搭建了 ...

  6. 程序集链接器(AL.exe)

    AL.exe使用程序可以生成一个EXE文件或者DLL PE文件(其中只包含对其他模块中的类型进行描述的一个清单). 不要在普通的命令行窗口中编译,请先打开C:\ProgramData\Microsof ...

  7. linux环境搭建系列之maven

    前提: jdk1.7 Linux centOS 64位 安装包从官网获取地址:http://maven.apache.org/download.cgi Jdk1.7对应apache-maven-3.3 ...

  8. Python-S9—Day86-ORM项目实战之会议室预定相关

    01 会议室预定1 02 会议室预定2 03 会议室预定3 04 会议室预定4 05 会议室预定5 06 会议室预定6 01 会议室预定1 1.1 项目的架构目录: 1.2 使用Pycharm创建Dj ...

  9. python 中单例模式

    1.什么是单例模式: 单例模式是指一个类有且只有一个实例对象,创建一个实例对象后,再创建实例是返回上一次的对象引用.(简单的讲就是两个实例对象的ID相同,节省了内存空间) 2.单例模式的创建: 举例创 ...

  10. lcd1602如何自定义汉字(verilog)

    今天一鼓作气,再研究了一下如何用LCD1602自定义汉字 1.用字模软件获取汉字所对应的数据(因为嫌麻烦所以直接用了网上一个帖子里有关“电”的数据,如下:04,1f,15,1f,15,15,1f,04 ...