首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Bash 脚本如何创建临时文件:mktemp 命令和 trap 命令教程

有时,Bash 脚本需要创建临时文件或临时目录。 常见的做法是,自己在/tmp目录里面生成一个文件,这样做有很多弊端。本文介绍如何安全地处理临时文件。 ?...虽然在创建临时文件之前,它不会检查临时文件是否存在,但是它支持唯一文件名和清除机制,因此可以减轻安全攻击的风险。 直接运行mktemp命令,就能生成一个临时文件。...Bash 脚本使用mktemp命令的用法如下。 #!...trap 命令的常见使用场景,就是在 Bash 脚本中指定退出时执行的清理命令。 #!...注意,trap命令必须放在脚本的开头。否则,它上方的任何命令导致脚本退出,都不会被它捕获。 如果trap需要触发多条命令,可以封装一个 Bash 函数。

1.8K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Shell脚本攻略04-玩转文件描述符及重定向

    最常见的文件描述符是stdin、 stdout和stderr。 我们甚至可以将某个文件描述符的内容重定向到另一个文件描述符中。 下面给出一些对文件描述符进行操作和重定向的例子。...理论知识 在编写脚本的时候会频繁使用标准输入(stdin)、标准输出(stdout)和标准错误(stderr)。 通过内容过滤将输出重定向到文件是我们平日里的基本任务之一。...它将stdout的一份副本写入文件out.txt,同时将另一份副本作为后续命令的stdin。命令cat -n将从stdin中接收到的每一行数据前加上行号并写入stdout....类似地,使用 /dev/stderr代表标准错误, /dev/stdout代表标准输出。 这些特殊的设备文件分别对应stdin、 stderr和stdout。...---- 补充内容 从stdin读取输入的命令能以多种方式接收数据。

    87810

    《Linux命令行与shell脚本编程大全》第十五章 呈现数据

    每个进程一次最多可以有九个文件描述符 bash shell保留的前3个文件描述符(0、 1、 2) 1.STDIN 标准输入(0) STDIN文件代表shell的标准输入。...shell从STDIN文件描述符对应的键盘获得输入,在用户输入时处理每个字符 在使用输入重定向符号( 和脚本出错时生成的错误消息都会发送到这个位置。 默认情况下STROUT和STDERR指向同样的地方(显示器)。但是STDERR不会随着STDOUT重定向而发生改变。.../bin/bash   2 exec 3 testfile   3 read line <&3   4 echo "Read:$line" #注意这里写是从文件指针上次的位置开始,也就是读了一行之后的位置...tee命令相当于管道第一个T型接头。它将STDIN过来的数据同时发往两处,一处是STDOUT,一处是指定的文件。

    1.4K60

    打包压缩加密备份_bash笔记6

    /tmp -xf bash_bundle.tar ab.diff 奇怪的技巧: # stdin/stdout # 把打包结果输出到stdout tar -cf - test.sh # 从stdin读取包内容...gzip压缩文件,gzip命令只能压缩单文件,无法直接处理目录和多个文件。...gunzip test.sh.gz 查看: # -l列出包内文件名、压缩前后大小、压缩比 gzip -l test.sh.gz 也配合stdin/stdout使用: # -c输出到stdout cat...解密: # 同样,只接受来自stdin的,只输出到stdout crypt 口令 test.sh P.S.Mac下没有该命令 gpg GUN privacy guard...一句话,有/不创建文件夹,目标路径结尾的/含义类似 定期备份只需要定期执行相同的命令,自动检查差异和更新并备份 恢复: # 从本地恢复 rsync -av bash.bak bash # 从远端恢复 rsync

    1.2K30

    shell十三问,为linux学习打基础(三)

    不过,不见得每个程序的stdin都跟mail一样从keyboard读进,因为程序作者可以从档案参数读进stdin,如: $ cat /etc/passwd 但,要是cat之后没有档案参数则又如何呢?...那好,接下来让我们看看如何改变这些FD的预设数据信道,我们可用stdin),使之从指定的档案读进。...比方说: $ cat < my.file 就是从my.file读进数据 $ mail -s test root < /etc/passwd 则是从/etc/passwd读进… 这样一来,stdin将不再是从...与stderr的管道会先准备好,才会从stdin读进数据。...又,每根水管之间的input跟output又如何呢?嗯??灵光一闪:原来pipe line的I/O跟水管的I/O是一模一样的:上一个命令的stdout接到下一个命令的stdin去了!

    97460

    shell入门第十讲

    那么在Linux标准流中,stdout和stderr也同样如此。如果我们使用了Linux标准流的功能,当我们执行一个命令成功后,那么终端打印的信息也将会被传送至stdout中。...1.4、追加信息输出重定向 我们上面的stdout和stderr只是将信息输出到一个文件中,如果再次重定向输出的话,文件之前的内容将会被覆盖掉,只会写入最新的内容到文件中,比如: bash [root@...' 1.5、同时进行标准输出和错误输出至文件 在企业中往往是这么干的,写一个脚本,包含很多命令,那么我们需要将打印服务信息的命令写上stdout和stderr,因为日志文件有助于我们排查问题所在,比如:...当然,把标准输出stdout和错误输出stderr到一个文件也是可以的,这个时候我们需要使用到符号 2> &1 或者是 &>>这两种,比如: bash [root@master1 ~]#cat c.txt...bash /dev/null 表示空设备文件 0 表示stdin标准输入 1 表示stdout标准输出 2 表示stderr标准错误 记住上面几个符号的意思,因为工作中会经常使用。

    87620

    『一网打尽』 Bash 常用命令,原来如此简单!

    以下就是 bash 中的主要概念。 命令语法 bash 中的命令是区分大小写的,且遵循 {命令}{参数} 的语法结构。...标准输入(STDIN)/标准输出(STDOUT) 任何输入和提交(通过键入 ENTER)到窗口的命令都被称为标准输入(standard input,STDIN)。...管道(PIPING) 1 | 一种管道,其左方是一个命令的 STNOUT,将作为管道右方的另一个命令的 STDIN。...更准确地说,这些工具会基于我们的命令行历史自动完成命令语句。 退出 有时候我们会卡在一些程序中并不知道如何退出它们。这在 Linux 新手中是很常见的问题,这也会大大损害新手的积极性。...一般来说,退出命令会和字母「q」有一些关系,所以记住以下的退出命令或快捷键就十分有用了。

    1.3K20

    Go每日一库之197:osexec(调用外部程序)

    exec包执行外部命令,它将 os.StartProcess 进行包装使得它更容易映射到 stdin 和 stdout,并且利用 pipe 连接i/o。...分开读取 Stdout 和 Stderrfunc main() { var outbuf, errbuf bytes.Buffer cmd := exec.Command("bash",...= nil { fmt.Println(err) } fmt.Println(string(out)) }执行命令 Run和 Start// 开始指定命令并且等待它执行结束,如果命令能够成功执行完毕...,则返回nil,否则的话边会产生错误func (c *Cmd) Run() error// 使某个命令开始执行,但是并不等到他执行结束,这点和Run命令有区别,然后使用Wait方法等待命令执行完毕并且释放响应的资源...= nil { fmt.Println(err) } stdin.Close() // 终端标准输出tmp.txt cmd.Stdout = os.Stdout}package

    14410

    7.管道、管道、环境变量与其他常用命令

    7.1 管道 概念: 管道类似于文件重定向,可以将前一个命令的 stdout 重定向到下一个命令的 stdin。 要点: 管道命令仅处理 stdout,会忽略 stderr。...管道右边的命令必须能接受 stdin。 多个管道命令可以串联。 与文件重定向的区别: 文件重定向左边为命令,右边为文件。 管道左右两边均为命令,左边有 stdout,右边有 stdin。...每次启动bash,都会先执行~/.bashrc。 每次ssh登陆远程服务器,都会启动一个bash命令行给我们。 每次tmux新开一个pane,都会启动一个bash命令行给我们。...wc:统计行数、单词数、字节数 既可以从stdin中直接读入内容;也可以在命令行参数中传入文件名列表; wc -l:统计行数 wc -w:统计单词数 wc -c:统计字节数 tree:展示当前目录的文件结构...内容存放在 ~/.bash_history 中 工具: md5sum:计算md5哈希值 可以从 stdin 读入内容 也可以在命令行参数中传入文件名列表; time command:统计 command

    65030

    Linux系列之重定向操作

    被称为标准输出或者stdout。 状态以及错误信息。被称为标准错误或者stderr 。 除此之外,一些程序从标准输入stdin中获取输入。默认情况下,标准输入与键盘相连接。...shell将stdout、stdin和stderr分别作为文件描述符0、1和2的内部引用。我们可以用这个符号重定向stderr。...需要注意重定向的顺序,重定向stderr必须总是在重定向stdout之后发生。 最近版本的bash提供了第二种方法,该方法让执行这种组合重定向更精简。...ls -l /bin/usr 2> /dev/null 重定向标准输入 还有stdin的来源从键盘改为文件。...使用这种方式的命令被称为过滤器。过滤器接受输入,以某种方式改变它,然后输出它。 tee命令 tee命令读取stdin并将其复制到stdout和一个或多个文件中。

    1.3K20

    Shell 输入输出重定向

    概述 大多数 UNIX 系统命令从你的终端接受输入并将所产生的输出发送回​​到您的终端。 一个命令通常从一个叫标准输入的地方读取输入,默认情况下,这恰好是你的终端。...command1 outfile 同时替换输入和输出,执行command1,从文件infile读取内容,然后将输出写入到outfile中。...重定向详解 一般情况下,每个 Unix/Linux 命令运行时都会打开三个文件: 标准输入文件(stdin):stdin的文件描述符为0,Unix程序默认从stdin读取数据。...stdin 和 stdout 都重定向,可以这样写: $ command file2 command 命令将 stdin 重定向到 file1,将 stdout 重定向到 file2...---- 如果希望屏蔽 stdout 和 stderr,可以这样写: $ command > /dev/null 2>&1 注意:0 是标准输入(STDIN),1 是标准输出(STDOUT),2 是标准错误输出

    1.1K40
    领券