Linux中重定向应注意的事情

引言

你是否见过bash ... 2>&1 1>file.txt的写法? 还没发现这样的写法有什么问题? 那么恭喜你, 看完本文你又将学会一个新知识!

重定向的错误用法

以引言中命令为例, 2>&1表示将错误输出重定向到标准输出, 1>file.txt表示将标准输出重定向到file.txt文件, 看起来的意思就是将标准输出和错误输出全都重定向到file.txt?

错啦! 上述命令只会标准输出重定向到file.txt文件, 而错误输出还是重定向到终端(或者叫做命令行, 控制台, 屏幕). 因为首先解析的是2>&1,此时的1指向的还是标准输出, 即终端, 解析到1>file.txt时, 标准输出才被重定向到file.txt. 下面我将用一个例子来验证我的结论:

test.sh是一个简单的脚本, 会把STDOUT输出到标准输出, 将STDERR输出到错误输出

$ cat test.sh
echo 'STDOUT' >&1
echo 'STDERR' >&2

我们先验证脚本的正确性, 标准输出和错误输出都被正确的捕捉到了, 脚本可以同时输出标准输出和错误输出, 正确性得以验证.
Linux中重定向应注意的事情

现在我们再来验证我一开始的结论, 执行bash ... 2>&1 1>file.txt形式的命令, 可以看到错误输出STDERR被输出到了终端, 而file.txt中仅有标准输出STDOUT
Linux中重定向应注意的事情

那么应该怎么改成我们想要的结果呢? 很简单, 将2>&1和1>file.txt调换个位置即可, 即bash ... 1>file.txt 2>&1; 或者使用bash ... &>file.txt, 都可以达到我们想要的效果
Linux中重定向应注意的事情

Linux中重定向应注意的事情

重定向另外一个值得注意的事项

重定向另外一个需要注意的事项就是: 执行类似于command > file.txt的命令时, 会首先判断file.txt是否存在, 若存在则先清空文件, 若不存在则创建文件, 随后才会执行command

假设有一个已经排好序的文件file.txt, 我们对这个文件去重的话, 执行uniq file.txt > file.txt会直接清空文件
Linux中重定向应注意的事情

想要不生成额外的临时文件做到去重的话, 正确的做法应该是使用管道|配合tee命令, 而不是使用重定向
Linux中重定向应注意的事情

原文链接:https://www.cnblogs.com/wbourne/p/17379592.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Linux中重定向应注意的事情 - Python技术站

(0)
上一篇 2023年5月8日
下一篇 2023年5月9日

相关文章

  • Shell函数练习

    1. 编写函数,实现打印绿色OK和红色FAILED 判断是否有参数,存在为Ok,不存在为FAILED [root@template shellScript]# cat ex1.sh # 编写函数,实现打印绿色OK和红色FAILED 判断是否有参数,存在为Ok,不存在为FAILED #!/bin/bash fun(){ if [ $# -ne 0 ] then…

    Linux 2023年4月18日
    00
  • Centos7之KVM虚拟化基础管理详解

    Centos7之KVM虚拟化基础管理详解 KVM是Linux内核中的一个虚拟化模块,由于其稳定性高、性能优秀,并且完全开源免费,因此在企业及个人中得到广泛应用。本文将详细讲解Centos7下如何使用KVM进行虚拟化管理,包括创建虚拟机、对虚拟机进行管理、网络配置等方面的知识。 1. 安装KVM 在Centos7下安装KVM非常简单,只需要通过yum安装即可。…

    Linux 2023年5月24日
    00
  • CentOS 7 安装Chrome浏览器的方法

    以下是详细的“CentOS7安装Chrome浏览器的方法”攻略: 1. 下载Chrome浏览器 首先,我们需要在Chrome官网上下载Chrome浏览器的安装包,具体下载链接可以根据自己的系统版本进行选择。在此不再赘述。 2. 安装依赖 在安装Chrome之前,需要安装一些依赖包,以确保安装的顺利完成。在终端中运行以下命令: sudo yum install…

    Linux 2023年5月14日
    00
  • [Linux] Linux Shell查找文件

    #!/bin/bash # 查找当前目录中所有大于1mb的文件,把文件名写到文本文件中,统计个数 # # find命令,参数:路径地址,命令参数,-size n (查找长度为n的文件) -type f (查找某类型文件,f普通文件) # tee命令 参数:文件名 (把输入数据保存成文件) # | 管道符号 把第一个命令的执行结果传给第二个命令 # wc统计命…

    Linux 2023年4月13日
    00
  • 如何在linux下使用u盘

    当您使用Linux操作系统时,使用U盘是一项非常重要的工作。下面是在Linux下使用U盘的完整攻略: 步骤1:插入U盘 首先,在您的电脑上插入U盘。如果U盘已经格式化为FAT格式,则可以直接使用。如果U盘未格式化,则需要格式化为FAT格式。 步骤2:查看U盘挂载路径 使用以下命令检查Linux计算机中的挂载设备列表: $ df -h 上述命令将显示在Linu…

    Linux 2023年5月14日
    00
  • 在VMware下快速克隆多个Linux环境的方法教程

    在VMware下快速克隆多个Linux环境的方法教程 介绍 在虚拟化技术的应用中,快速克隆一个运行完整的虚拟机是一项非常重要的技能。在VMware中进行快速克隆一个或多个Linux环境的过程也非常简单,本文将为你提供一步一步的操作指导。 环境 VMware Workstation 15.0.3CentOS 7 Minimal installation 快速克…

    Linux 2023年5月24日
    00
  • linux 备份sd卡 制作img文件

    我想把我的v3s中的系统做备份,在网上各种寻找,开始了制作img。 1.安装工具 sudo apt-get install dosfstools sudo apt-get install dump sudo apt-get install parted sudo apt-get install kpartx 2.生成新的img文件先df -h查看下实际使用空…

    Linux 2023年4月13日
    00
  • Linux系统分区及挂载点

    一、关于Linux的分区情况     虽然硬盘分区表中最多能存储四个分区,但我们实际使用时一般只分为两个分区,一个是主分区(Primary Partion)一个是扩展分区(extended partition)两种,主分区可以马上被使用但不能再分区,扩展分区必须再进行分区后才能使用,也就是说它必须还要进行二次分区。那么由扩充分区再分 下去的是什么呢?它就是逻…

    Linux 2023年4月11日
    00
合作推广
合作推广
分享本页
返回顶部