Linux系列之重定向操作
前言
I/O重定向允许我们将命令的输入和输出重定向到文件中,以及将多个命令连接到一起成为管道。本文就来介绍有关重定向的知识。
标准输入、输出、错误
输出包括两种类型:
- 程序的结果。被称为标准输出或者
stdout。 - 状态以及错误信息。被称为标准错误或者
stderr。
除此之外,一些程序从标准输入stdin中获取输入。默认情况下,标准输入与键盘相连接。
默认情况下,stdout和stderr 都被链接到屏幕上,而不是保存到文件中。重定向允许我们改变输出的去向和输入的来源。
重定向标准输出
为了重定向到其他文件而不是屏幕上,我们使用>重定向操作符,后面跟随文件的名称。
举例来说,我们可以使用重定向操作符来告诉shell,发送ls命令的输出到ls-output.txt文件中,而不是屏幕上。
ls -l /usr/bin > ls-output.txt
我们可以看到,ls命令的输出没有发送到屏幕上,而是发送ls-output.txt到文件中。
需要注意的是,使用>重定向操作符会覆盖目标文件。如果要追加内容,我们可以使用>>重定向操作符。
重定向标准错误
为了重定向stderr,我们必须引用其文件描述符。shell将stdout、stdin和stderr分别作为文件描述符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可以通过管道进入另一个命令的stdin,less就是一个例子:
ls -l /usr/bin | less
可以把几个命令放在一起,组成一个流水线。使用这种方式的命令被称为过滤器。过滤器接受输入,以某种方式改变它,然后输出它。
tee命令
tee命令读取stdin并将其复制到stdout和一个或多个文件中。
ls /usr/bin | tee ls.txt | grep zip
Linux系列之重定向操作的更多相关文章
- 跟着鸟哥学Linux系列笔记3-第11章BASH学习
跟着鸟哥学Linux系列笔记0-扫盲之概念 跟着鸟哥学Linux系列笔记0-如何解决问题 跟着鸟哥学Linux系列笔记1 跟着鸟哥学Linux系列笔记2-第10章VIM学习 认识与学习bash 1. ...
- 跟着鸟哥学Linux系列笔记2-第10章VIM学习
跟着鸟哥学Linux系列笔记0-扫盲之概念 跟着鸟哥学Linux系列笔记0-如何解决问题 跟着鸟哥学Linux系列笔记1 常用的文本编辑器:Emacs, pico, nano, joe, vim VI ...
- 跟着鸟哥学Linux系列笔记0-如何解决问题
跟着鸟哥学Linux系列笔记0-扫盲之概念 在发生问题怎么处理: 1. 在自己的主机.网络数据库上查询How-To或FAQ -Linux 自身的文件数据: /usr/share/doc -CLDP中 ...
- 跟着鸟哥学Linux系列笔记1
跟着鸟哥学Linux系列笔记0-扫盲之概念 跟着鸟哥学Linux系列笔记0-如何解决问题 装完linux之后,接下来一步就是进行相关命令的学习了 第五章:首次登录与在线求助man page 1. X ...
- 学习Linux系列--安装Ubuntu
最近学习Linux,使用虚拟机太不方便,于是购买了阿里云最便宜的云主机作为学习设备. 本系列文章记录了个人学习过程的点点滴滴. 学习Linux系列--安装Ubuntu 学习Linux系列--安装软件环 ...
- kali linux 系列教程之metasploit 连接postgresql可能遇见的问题
kali linux 系列教程之metasploit 连接postgresql可能遇见的问题 文/玄魂 目录 kali linux 下metasploit 连接postgresql可能遇见的问题. ...
- kali Linux系列教程之BeFF安装与集成Metasploit
kali Linux系列教程之BeFF安装与集成Metasploit 文/玄魂 kali Linux系列教程之BeFF安装与集成Metasploit 1.1 apt-get安装方式 1.2 启动 1. ...
- kali linux系列之启用vpn
kali linux系列之启用vpn 文/玄魂 默认情况下,kali linux的vpn选项是不可用的. 下面是安装openvpn的方法,同样的,可以安装其他类型的vpn. 打开终端输入命令: Apt ...
- Kali linux系列之 zmap 安装
Kali linux系列之 zmap 安装 官方文档地址:https://zmap.io/ 准备:保证有比较顺畅的更新源,可以更新系统,下载安装包. 安装 第一步:sudo apt-get insta ...
随机推荐
- 89. Gray Code - LeetCode
Question 89. Gray Code Solution 思路: n = 0 0 n = 1 0 1 n = 2 00 01 10 11 n = 3 000 001 010 011 100 10 ...
- AGC007E Shik and Travel 解题报告
AGC007E Shik and Travel 题目大意:\(n\) 个点的二叉树,每个点要么两个儿子,要么没有儿子,每条边有边权. 你从 \(1\) 号节点出发,走到一个叶子节点.然后每一天,你可以 ...
- [2-SAT]编码
题意:给n个01字符串,每个最多包含1个'?',能否构造出满足两两不存在一个是另一个前缀的方案. 思路: 2-SAT+trie树优化建图 把每个字符串拆成i,i+n,如果不存在'?',就硬搞出两种情况 ...
- 线性求 $i^i$ 的做法
线性求 \(i^i\) 的做法 方便起见,我们记 \(f_i=i^i\),\(i\) 的最小质因子为 \(p=\mathrm{minp}(i)\),第 \(i\) 个质数为 \(\mathrm{pr} ...
- 0-1knapsack
Python 实现0-1背包问题(回溯法) 题目 解题思路 回溯法:为了避免生成那些不可能产生最佳解的问题状态,要不断地利用限界函数(bounding function)来处死那些实际上不可能产生所需 ...
- MySQL 千万数据库深分页查询优化,拒绝线上故障!
文章首发在公众号(龙台的技术笔记),之后同步到博客园和个人网站:xiaomage.info 优化项目代码过程中发现一个千万级数据深分页问题,缘由是这样的 库里有一张耗材 MCS_PROD 表,通过同步 ...
- 搭建个人博客,Docsify+Github webhook+JGit解决方案
一开始博客使用的 Halo,发现问题比较多啊,时不时的莫名其妙主题各种报错,有时候还要升级,麻烦的要死,于是就想弄简单点. 这两天抽空反复倒腾了一遍,不小心还把镜像给尼玛删了,发的文章都没了,痛定思痛 ...
- 23.Nginx+keepalived负载均衡高可用
Nginx+keepalived负载均衡高可用 结构图 环境: 主 服务器:192.168.239.10 备 服务器:192.168.239.20 Web 服务器1:192.168.239.40 We ...
- [pwn基础] Linux安全机制
目录 [pwn基础] Linux安全机制 Canary(栈溢出保护) 开启关闭Cannary Canary的种类 Terminator canaries(终结者金丝雀) Random cannarie ...
- 关于vue项目中axios跨域的解决方法(开发环境)
1.在config文件中修改index.js proxyTable: { "/api":{ target: 'https://www.baidu.com/muc/',//你需要跨域 ...