前言

I/O重定向允许我们将命令的输入和输出重定向到文件中,以及将多个命令连接到一起成为管道。本文就来介绍有关重定向的知识。

标准输入、输出、错误

输出包括两种类型:

  • 程序的结果。被称为标准输出或者stdout
  • 状态以及错误信息。被称为标准错误或者stderr

除此之外,一些程序从标准输入stdin中获取输入。默认情况下,标准输入与键盘相连接。

默认情况下,stdoutstderr 都被链接到屏幕上,而不是保存到文件中。重定向允许我们改变输出的去向和输入的来源。

重定向标准输出

为了重定向到其他文件而不是屏幕上,我们使用>重定向操作符,后面跟随文件的名称。

举例来说,我们可以使用重定向操作符来告诉shell,发送ls命令的输出到ls-output.txt文件中,而不是屏幕上。

ls -l /usr/bin > ls-output.txt

我们可以看到,ls命令的输出没有发送到屏幕上,而是发送ls-output.txt到文件中。

需要注意的是,使用>重定向操作符会覆盖目标文件。如果要追加内容,我们可以使用>>重定向操作符。

重定向标准错误

为了重定向stderr,我们必须引用其文件描述符。shellstdoutstdinstderr分别作为文件描述符0、1和2的内部引用。我们可以用这个符号重定向stderr

ls -l /bin/usr 2> ls-error.txt

重定向到同一文件

重定向标准输出和标准错误到同一文件中,共有两种方式可以实现。首先让我们使用传统方法,它适用于老版本的shell

ls -l /bin/usr > ls-output.txt 2>&1

首先,我们将stdout重定向到ls-output.txt文件,然后用2>&1的符号将文件描述符2 stderr重定向到文件描述符1 stdout 中。

需要注意重定向的顺序,重定向stderr必须总是在重定向stdout之后发生。

最近版本的bash提供了第二种方法,该方法让执行这种组合重定向更精简。

ls -l /bin/usr &> ls-output.txt

你仍然可以使用>>进行追加操作。

处理不需要的输出

系统提供了一种方法,可以将输出重定向到一个叫做/dev/null的特殊文件,该文件通常被称为比特桶(bit bucket)。它接受输入,但不做任何处理。

ls -l /bin/usr 2> /dev/null

重定向标准输入

还有< 重定向操作符,我们可以将stdin的来源从键盘改为文件。

cat < sample.txt

管道

使用管道操作符| ,一个命令的stout可以通过管道进入另一个命令的stdinless就是一个例子:

ls -l /usr/bin | less

可以把几个命令放在一起,组成一个流水线。使用这种方式的命令被称为过滤器。过滤器接受输入,以某种方式改变它,然后输出它。

tee命令

tee命令读取stdin并将其复制到stdout和一个或多个文件中。

ls /usr/bin | tee ls.txt | grep zip

Linux系列之重定向操作的更多相关文章

  1. 跟着鸟哥学Linux系列笔记3-第11章BASH学习

    跟着鸟哥学Linux系列笔记0-扫盲之概念 跟着鸟哥学Linux系列笔记0-如何解决问题 跟着鸟哥学Linux系列笔记1 跟着鸟哥学Linux系列笔记2-第10章VIM学习 认识与学习bash 1. ...

  2. 跟着鸟哥学Linux系列笔记2-第10章VIM学习

    跟着鸟哥学Linux系列笔记0-扫盲之概念 跟着鸟哥学Linux系列笔记0-如何解决问题 跟着鸟哥学Linux系列笔记1 常用的文本编辑器:Emacs, pico, nano, joe, vim VI ...

  3. 跟着鸟哥学Linux系列笔记0-如何解决问题

    跟着鸟哥学Linux系列笔记0-扫盲之概念 在发生问题怎么处理: 1.  在自己的主机.网络数据库上查询How-To或FAQ -Linux 自身的文件数据: /usr/share/doc -CLDP中 ...

  4. 跟着鸟哥学Linux系列笔记1

    跟着鸟哥学Linux系列笔记0-扫盲之概念 跟着鸟哥学Linux系列笔记0-如何解决问题 装完linux之后,接下来一步就是进行相关命令的学习了 第五章:首次登录与在线求助man page 1. X ...

  5. 学习Linux系列--安装Ubuntu

    最近学习Linux,使用虚拟机太不方便,于是购买了阿里云最便宜的云主机作为学习设备. 本系列文章记录了个人学习过程的点点滴滴. 学习Linux系列--安装Ubuntu 学习Linux系列--安装软件环 ...

  6. kali linux 系列教程之metasploit 连接postgresql可能遇见的问题

    kali linux 系列教程之metasploit 连接postgresql可能遇见的问题 文/玄魂   目录 kali linux 下metasploit 连接postgresql可能遇见的问题. ...

  7. kali Linux系列教程之BeFF安装与集成Metasploit

    kali Linux系列教程之BeFF安装与集成Metasploit 文/玄魂 kali Linux系列教程之BeFF安装与集成Metasploit 1.1 apt-get安装方式 1.2 启动 1. ...

  8. kali linux系列之启用vpn

    kali linux系列之启用vpn 文/玄魂 默认情况下,kali linux的vpn选项是不可用的. 下面是安装openvpn的方法,同样的,可以安装其他类型的vpn. 打开终端输入命令: Apt ...

  9. Kali linux系列之 zmap 安装

    Kali linux系列之 zmap 安装 官方文档地址:https://zmap.io/ 准备:保证有比较顺畅的更新源,可以更新系统,下载安装包. 安装 第一步:sudo apt-get insta ...

随机推荐

  1. Git标签用法

    我们通常会在项目开发到一定阶段时给代码打上标签. 1.Git查看所有标签及其描述信息 git tag -l -n 2.Git创建标签 创建标签并添加描述信息 git tag -a v1.0.0 -m ...

  2. Map和WeakMap的方法和区别

    Map Map是一组键值对的结构,具有极快的查找速度. 一.构造函数不同 let map = new Map(); let weakmap = new WeakMap(); 二.内置函数不同 Map的 ...

  3. 第6组 Beta冲刺 总结

    目录 1. 基本情况 2. 思考与总结 2.1. 设想和目标 2. 计划 3. 资源 4. 变更管理 5. 设计/实现 6. 测试/发布 7. 团队的角色,管理,合作 8. 总结 3. 敏捷开发 1. ...

  4. Solon 1.8.0 发布,云原生微服务开发框架

    相对于 Spring Boot 和 Spring Cloud 的项目 启动快 5 - 10 倍 qps 高 2- 3 倍 运行时内存节省 1/3 ~ 1/2 打包可以缩小到 1/2 ~ 1/10(比如 ...

  5. BI 如何让SaaS产品具有 “安全感”和“敏锐感”(上)

    SaaS模式一经推出,凭借自身的高性价比.低维护成本,无需软硬件维护.无需运维等明晃晃的优点,得到了爆发式的增长,甚至全面改变了软件的开发模式.各位老总的问候语,不知从什么时候开始,都变成了:&quo ...

  6. 开发工具-在线生成GUID

    更新记录 2022年6月11日 记录开始. https://www.toolbaba.cn/d/dev_guid http://tool.pfan.cn/guidgen https://www.iam ...

  7. 在 Pisa-Proxy 中,如何利用 Rust 实现 MySQL 代理

    一.前言 背景 在 Database Mesh 中,Pisanix 是一套以数据库为中心的治理框架,为用户提供了诸多治理能力,例如:数据库流量治理,SQL 防火墙,负载均衡和审计等.在 Pisanix ...

  8. 打字练习-编程语言关键字系列-html

    以下是小编整理的部分html关键字,专门给有需要的朋友进行打字练习用,通过打字练习的方式,既提高了打字速度,又可以熟悉html关键字~~~ www, url, http, W3C, html, htm ...

  9. Windows下MySQL的安装和删除

    Windows下MySQL的安装和删除 安装Mysql 1 下载mysql 地址 2 安装教程 2.1配置环境变量 变量名:MYSQL_HOME 变量值:D:\software\programming ...

  10. vue 的常用事件

    vue 的常用事件 事件处理 1.使用 v-on:xxx 或 @xxx 绑定事件,其中 xxx 是事件名: 2.事件的回调需要配置在 methods 对象中,最终会在 vm 上: 3.methods ...