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日

相关文章

  • linux安装apache过程中注意的问题

    以下是“Linux安装Apache过程中注意的问题”的完整使用攻略,包含两个示例说明。 安装Apache 打开终端并以下命令更新软件包列表: bash sudo apt-get update 安装Apache: bash sudo apt-get install apache2 启动Apache: bash sudo systemctl start apac…

    Linux 2023年5月12日
    00
  • Centos7.5配置IP地址的实现

    下面是CentOS 7.5配置IP地址的实现攻略: 确认网络适配器接口名称 首先需要确认服务器的网络适配器接口名称。可以使用以下命令查看当前服务器的接口名称: ip link 示例输出: 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT…

    Linux 2023年5月24日
    00
  • Centos7.2 编译安装PHP7.0.2的步骤

    CentOS 7.2 编译安装 PHP 7.0.2 的步骤 以下是 CentOS 7.2 编译安装 PHP 7.0.2 的详细步骤。 1. 准备工作 在开始之前,我们需要确保服务器上已经安装了一些编译工具,包括 gcc、automake、autoconf、libtool 等。我们可以通过以下命令进行安装: sudo yum install -y gcc au…

    Linux 2023年5月14日
    00
  • linux下操作oracle

    ps -ef|grep ora #查看oracle状态 lsnrctl status #查看监听的状态 lsnrctl start |stop |reload #启动|停止|重启 监听 登录oracle su – oracle sqlplus / as sysdba SQL>startup #启动oracle SQL>shutdown #关闭or…

    Linux 2023年4月13日
    00
  • Linux cupsreject命令

    Linux cupsreject 命令的作用与使用方法 Linux cupsreject 命令用于拒绝打印机。它可以帮助用户在 Linux 系统中拒绝某个打印机的打印请求。 Linux cupsreject 命令使用 cupsreject 命令的基本语法如下: cupsreject [选项] [打印机名称] ` 其中,选项是可选。打印机名称是要拒绝的打印机名…

    Linux 2023年5月10日
    00
  • Linux命令1_文件管理1

    一些符号 ~ home 目录 / root 目录 . 当前目录 .. 上级目录 ??? 最常用的几个命令 ? ls 列出文件 -a 列出隐藏文件 可以安装tree, 列出树状图显示的文件 sudo apt-get install tree –help 帮助文档 ? cd 跳转到目录 cd – 跳转到上次停留的目录(有时不小心误操作) ? mkdir 创建文…

    Linux 2023年5月8日
    00
  • 手工释放linux内存——/proc/sys/vm/drop_cache

    当在Linux下频繁存取文件后,物理内存会很快被用光,当程序结束后,内存不会被正常释放,而是一直作为caching。这个问题,貌似有不少人在问,不过都没有看到有什么很好解决的办法。那么我来谈谈这个问题。   一、通常情况 先来说说free命令:引用[root@server ~]# free -mtotal used free shared buffers c…

    Linux 2023年4月11日
    00
  • Linux下的文件压缩与解压

    场景描述:为了节省磁盘空间,提高磁盘空间的使用效率,方便对批量文件的传输和管理,引入了文件压缩技术。其原理简单来说就是将原先未被数据占用的空间(每字节下未被使用的bit)进行重新规划和分配,以达到在有限的空间内尽可能多的存储数据的目的。具体方法如下: 一、对于单个文件而言,常用的压缩命令:compress(已淘汰)、gzip(速度最快/但压缩比最低)、bzi…

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