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日

相关文章

  • CentOS 7安装Docker

    下面就是 CentOS 7 安装 Docker 的完整攻略: 准备工作 在开始安装 Docker 之前,我们需要确保 CentOS 7 操作系统已经被更新到最新版本: sudo yum update 安装 Docker 添加 Docker Yum 源 sudo tee /etc/yum.repos.d/docker-ce.repo <<-‘EOF…

    Linux 2023年5月14日
    00
  • Linux Shell 之 if-then 的高级特性

    1、复合条件测试   if-then 语句允许你使用布尔逻辑来组合测试。有两种布尔运算符可用:   [ condition1 ] && [ condition2 ]   [ condition1 ] || [ condition2 ]   第一种布尔运算使用AND布尔运算符来组合两个条件。要让then部分的命令执行,两个条件都必须满足。   …

    Linux 2023年4月11日
    00
  • 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
  • Linux中Vim工具的使用

    Vim是Linux上常用编辑器,在Windows上可以使用记事本来编辑文件内容,Vim也类似于记事本,但是Vim有更加强大的功能。在Vim中,有命令模式、输入模式和末行模式三种模式。按 Esc 进入命令模式, 按 Shift + : 进入末行模式,按 i 进入输入模式。 操作 一 进入vim编辑界面 vim filename 二 退出 :wq 末行模式,保存…

    Linux 2023年4月13日
    00
  • xshell上传下载文件(Windows、Linux)

    下面我将给出“xshell上传下载文件(Windows、Linux)”的完整攻略。 Xshell是什么 Xshell是一款Windows操作系统下的终端模拟软件,可以通过SSH、TELNET、RLOGIN、SFTP等协议与远程服务器进行连接。可以通过Xshell进行文件传输、编辑文件、执行脚本等操作。 Xshell上传文件 使用Xshell上传文件,主要通过…

    Linux 2023年5月14日
    00
  • 学习DB2之Linux环境下下载

    一 下载前的注册IBM地址:https://www-01.ibm.com/marketing/iwm/iwm/web/pick.do?source=swg-db2expressc&S_PKG=dlwin64&S_CMP=dwchina&lang=zh_CN&S_TACT=100KG26W 二 注册成功后,在页面选择你要安装的系…

    Linux 2023年4月12日
    00
  • ping ip主机提示Destination host unreachable问题解决方法小结

    ping ip主机提示Destination host unreachable问题解决方法小结 在进行网络连接时,有时在使用ping命令ping主机时会遇到 “Destination host unreachable” 的提示,这是连接主机的请求无法到达目的主机的错误提示。本文将介绍如何解决这个问题。 问题原因 造成“Destination host unr…

    Linux 2023年5月24日
    00
  • 虚拟机使用PuTTY、SSH Secure Shell Client前的配置

    下面是“虚拟机使用PuTTY、SSH Secure Shell Client前的配置”的完整攻略: PuTTY配置 打开PuTTY软件后,在左侧“Session”选项卡中输入虚拟机IP地址和端口号(默认为22)。 在左侧“Connection->SSH->Auth”选项卡中设置私钥文件路径,可以通过点击“Browse”按钮选择本地存储的.pem文…

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