Linux数据流重定向
时间:2022-05-03
本文章向大家介绍Linux数据流重定向,主要内容包括1 什么是数据流重定向?、2 标准输出 和 标准错误输出、3 输出重定向举例、3.2 例2、3.3 例3、4 输入重定向举例、4.2 例2、4.3 例3、5 命令连接符、5.1 命令连接符2:&&、5.2 命令连接符3:||、5.3 例1、5.4 例2、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
1 什么是数据流重定向?
Linux中,数据流的重定向被分为输入重定向 和 输出重定向。
- 输出重定向 将原本应该输出到屏幕上的信息输出到文件中。 当执行一个命令后,该命令输出的结果本应该显示在屏幕上。但输出重定向能让命令的执行结果保存到文件中去。 此外,由于Linux中的设备都是以文件的形式存在,因此输出重定向还可以将命令执行的结果输出到指定设备上去。
命令 > 文件
命令的执行结果将会保存到>后面的文件中去,而不会在屏幕上显示。
- 输入重定向 将原本应该从键盘输入数据的方式改为从文件中读取。
命令 < 文件
当执行命令时,如果命令需要读取数据,那么就会从<后面的文件中读取。
2 标准输出 和 标准错误输出
- 标准输出 当一条命令执行成功时,输出的结果称为标准输出。 标准输出在Linux中用1表示,因此:1> 和 1>>表示标准输出,一般1可以省略。
- 标准错误输出 当一条命令执行失败时,输出的结果称为标准错误输出。 标准错误输出在Linux中用2表示,因此2> 和 2>>表示标准错误输出,2不能省略!
3 输出重定向举例
3.1 例1
将正确结果输出到success中,将错误结果输出到error中去
cd chai > success 2> error
3.2 例2
将错误信息直接忽略
cd chai 2> /dev/null
PS:/dev/null称为垃圾黑洞,类似于垃圾箱。
3.3 例3
将成功和错误信息输出到一个文件中
cd chai >log 2> log
上述方式会产生巨大的bug!因为标准输出和标准错误输出会交替执行,输入到同一个文件会产生数据混为一潭,为了避免这种情况可使用如下方式:
cd chai &> log
4 输入重定向举例
4.1 例1
创建一个新文件,并从键盘输入文件数据:
cat > 文件名
该命令执行后会要求你输入文件内容,按ctr+d结束输入:
chai bo zhou is a baby
然后一个含有内容的文件就会被创建。 PS:不要问我为什么,我也不知道为什么!
4.2 例2
创建一个新文件,从指定文件中读取数据:
cat > 文件名 < 指定文件
上述命令执行后指定文件中的数据将会拷贝到新建的文件中去。
4.3 例3
创建一个新文件,从指定文件中读取数据,并以EOF作为结束符:
cat > 文件名
5 命令连接符
命令连接符用于连接多个命令,能够控制命令的执行次序。
命令连接符1:;
分号连接的两个命令只有先后次序而没有关联性,第一个命令执行结束后便会执行第二个命令。
5.1 命令连接符2:&&
命令1 && 命令2
若第一个命令执行成功才会执行第二个命令; 若第一个命令执行失败,则不会执行第二个命令。
5.2 命令连接符3:||
命令1 || 命令2
若第一个命令执行成功,则不执行第二个命令; 若第一个命令执行失败,才会执行第二个命令。
5.3 例1
若./chai不存在则创建该命令,若存在则不作任何操作:
ls ./chai || mkdir chai
5.4 例2
若./chai存在则显示“存在”,若不存在则显示“不存在”:
方法一:
ls ./chai && echo "存在" || echo "不存在"
方法二:
ls ./chai || echo "不存在" && echo "存在"
这两者等价。
- 数据库中间件mysql-proxy细节【mysql官方的中间件】
- Office CVE-2017-8570远程代码执行漏洞复现
- Java 并发包中的读写锁及其实现分析
- 深入理解 Spring 事务原理
- Chrome开发者工具的小技巧
- Java Web中JSP中6种动作概况知识点总结——每日一语法学习
- 从Flash到Silverlight进阶教程-用代码来创建动画
- 从Flash到Silverlight进阶教程-Tweener
- silverlight设置浏览器Cookies
- 一个最基本的布局控件-panel
- silverlight项目小结
- oozie 运行demo
- sqoop 兼容性问题
- oozie 安装过程详解
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- PHP中的include和require
- 一起来学matlab-matlab学习笔记10 10_2一般操作符和数据显示格式
- 一起来学matlab-matlab学习笔记10 10_3关系运算符和逻辑运算符
- 一篇文章学懂Shell脚本,最简明的教程在这里
- 一起来学matlab-matlab学习笔记10 10_5 通用字符串操作和比较函数
- 一个案例彻底弄懂如何正确使用 mysql inndb 联合索引
- 一起来学matlab-matlab学习笔记11 11_2 高维数组处理和运算 squeeze, ind2sub, sub2ind
- matlab结构体 rmfield,arrayfun,structfun,struct2cell,cell2struct
- PHP函数参数传递方法的具体改进技巧
- matlab学习笔记11_3 高维数组处理 filp, shiftdim, size, permute, ipermute
- 看完这篇文章,你的Linux基础就差不多了
- jzy3D从入门到弃坑
- git丢弃本地修改的所有文件(新增、删除、修改)
- Jmetal设置Solution Variables
- git log 查看某文件的修改历史