Linux命令行学习之路(六)——重定向和管道
今天我们来总结一下个人认为linux下最为实用和厉害的重定向和管道
在说今天的重点之前,必须要先学一点其他的新知识:标准输入(stdin)、标准输出(stdout)、标准错误输出(stderr)
标准输入(stdin):代码为0,使用<或<< 输入至程序的数据,但不是每个程序都需要输入
标准输出(stdout):代码为1,使用>或>> 程序运行中或者结束时输出的数据,默认是输出在终端上
标准错误输出(stderr):代码为2,使用2>或2>> 程序报错时输出的数据,默认是输出在终端上
关于这三个知识点现在有个概念就好,至于代码和使用的符号不用了解,本部分后面会进行总结
说到重定向不得不说的就是流,什么是流?
个人理解:当做字节,就是说没有确定的类型,将需要传输的东西按字节传输出去。
当然这个只是我个人的理解,大家自己可以百度一下。
不过没关系,流概念无法准确理解并不影响后面的学习,到目前位置我们所有的命令都是以流的形式输出到终端。
实质上,流的输出应该由三个方向:
1、终端
2、文件
3、其他命令
重定向其实就是将命令的输出流重新制定输出到哪儿,则如刚刚所讲,可以是终端,可以是文件,也可以是其他命令。
那么重定向是如何实现的呢?
重定向就是通过“>”和“>>”这两个符号实现的。结合刚刚我们总结的新知识,可以知道重定向是对标准输出和标准错误输出的重定向。
两个符号都可以表示重定向,那么这两个符号有什么区别吗?当然有了!
“>”:表示将前面命令的输出,以覆盖的方式输出到制定文件上,将覆盖指定文件内的内容(如果没有指定文件,则新建一个)
“>>”:表示将前面命令的输出,以累加的方式输出到指定文件上(如果没有指定文件,则新建一个)
那么最开始说的代号是什么意思呢??
默认情况下:
“<”和“<<”:表示标准输入,等价于“0<”和“0<<”
“>”和“>>”:表示标准输出,等价于“1>”和“1>>”
当需要将错误输出到指定文件时:使用“2>”或者“2>>”
废话不多说,我们直接开始举例吧,这样可以有助于我们更好的了解重定向
例1、ls /home > a.txt 表达的意思是:列出/home目录下的文件及目录,并输出到a.txt文件中(若a.txt本来有内容则覆盖),若当前目录下没有a.txt文件,则新建一个
例2、cat file.txt >> a.txt 2> errors.log 表达的意思是: 获取file.txt文件内容输出到a.txt文件末尾,将错误信息输出到errors.log文件内
例3、cat file.txt > a.txt 2>&1 表达的意思是: 获取file.txt文件内容输出到a.txt文件中,同时将错误信息也输出到a.txt中
例4、cat file.txt >> a.txt 2>&1 表达的意思是:获取file.txt文件内容输出到a.txt文件末尾,同时将错误信息也输出到a.txt中
当然还有一个更为简单的方法可以达到刚刚例3、4中的所达到的命令
输入:cat file.txt &>>a.txt 表达的意思是:获取file.txt文件内容和错误信息输出到a.txt文件末尾
如果想将正确和错误分别输出的话,输入:【命令】>>【正确输出的文件名】 2>>【错误输入的文件名】
通过上面的例子,各位读者有没有对重定向有了一定的了解了?
接下来我们说说标准输入:
“<”:从文件中读取数据
“<<”:从键盘读取数据
例1、cat < a.txt 实现的效果和 cat a.txt 没有任何区别,区别之处在于原理不同。
cat a.txt :cat命令打开文件,然后打印文件内容
cat < a.txt :cat命令只负责打印内容,打开文件并将a.txt内的内容交给cat命令的工作是终端完成
例2、sort -n << end 可以实现:输入之后将可以在终端进行输入数据(输入一个按一次回车),输入完毕之后,输入end即可结束输入,终端则将刚刚的数据排序并输出
例3、sort -n << end > sortnumber.txt 2>&1 可以实现:将例2的输出输出到sortnumber.txt文件中(包括错误)
现在我们已经明白如何将输出输出到终端,文件了。那么命令是怎么回事?如何输入呢?
这个就涉及到我们这个部分的第二个重点:管道,符号为“|”
其意思是,将“|”符号之前的命令执行完后,作为符号后的命令的参数输入到命令中
是不是看不懂?为了帮助我们进一步了解管道命令,我们先来学习一个新的命令:cut 和一个新的文件格式.csv文件(逗号分隔值文件)
注:不一定必须是逗号,也可以是其余的任何符号,如:!?。等
首先,我们说一下.csv文件,其中的内容用特定的符号进行分割,例如a.csv:
12,121/121,121
13,13/13,13
45,45/45,45
678,678/678,678
cut命令:对文件进行剪切
常用格式:
cut -c 【字符范围】【文件名】 例如: cut -c 2-4 a.txt 意思是:将a.txt文件中每行第二到第四字符的数据剪切出来,输出到终端
cut -d 【分隔字符】-f 【第几段】 【文件名】
例如:cut -d , -f 2 a.csv 假设a.csv内的内容如刚刚举例所说,剪切a.csv文件中以“,”号为分隔符分隔的第二段内容,则输出:
121/121
13/13
45/45
678/678
接下来我们就可以结合强大的管道命令,来实现一些较为复杂,在windows下需要很多操作的事情
例如:
cut -d , -f 1 a.csv | sort -n > sortnumber.txt
意思是:剪切a.csv中以“,”号为分隔符分隔的第一段内容,再按数字大小排序,输出大sortnumber.txt文件中,其结果为:
13
45
121
678
不得不说,这个部分的内容不仅灵活,而且多
不过如果学好了,我觉得对于文件的操作将会远超在windows下对文件的操作速度。
Linux命令行学习之路(六)——重定向和管道相关推荐
- Linux 命令行学习之路 -- 3.复制文件 cp
版权声明:本文为博主原创文章,未经博主允许不得转载.https://blog.csdn.net/qq_38812171 定义:cp is short for copy, 意为复制文件.用于将文件或目录 ...
- linux命令行学习游戏,如何在Linux命令行中下载GOG游戏
如果你是一个游戏玩家同时也是一个Linux用户,你可能很高兴在GOG在几个月前宣布它会在你最喜欢的操作系统上推出游戏.如果你之前从来没有听说过GOG,我鼓励你看看他们的产品目录中的"很棒的老 ...
- linux命令行看图工具,六个鲜为人知的超酷Unix/Linux命令
师徒对话:kibitz kibitz是一个终端工具,它主要用于让一个"师父(master)"来帮助他/她的"徒弟(apprentice)".从本质上来说,它是通 ...
- 原版英文书籍《Linux命令行》阅读记录6 | 重定向
重定向,回忆一下这个概念是不是之前学过:在 Java web 开发中请求的重定向.在本章节中,我们要学的是"IO重定向".本文将从以下命令开始展开: cat sort uniq g ...
- linux进程控制命令行,linux命令行学习(37):控制进程的方法
一.中断进程用ctrl+c,暂停进程用ctrl+z 二.使程序在后台运行,在命令后面加& 三.查看终端启动的所有作业 ,用命令jobs 四.将后台运行的程序切换到前台,使用命令fg %.作业编 ...
- linux 在终端修改文件,linux命令行学习(42):修改.bashrc文件
可以通过修改启动文件改变环境. 下面通过修改.bashrc来改变环境,具体地说,就是在.bashrc中加入四条命令. 一..bashrc文件中原有的内容 我的centos系统中,普通用户主目录中的.b ...
- linux命令行提示符居中,linux命令行学习(54):修改提示符
提示符由环境变量PS1决定,所以,修改提示符就是修PS1的值. 一.保存PS1原来的值以及恢复原值 为了防止麻烦,在修改PS1的值之前,可以先将PS1的值保存起来,以备以后恢复. 我们建立一个环境变量 ...
- Linux 命令行学习(持续更新中)
ctrl + f 查找 (文档中/软件中都能用) find ./ -name "..." grep -r "...." * (-r 表 ...
- 《Linux命令行大全》学习笔记1——学习 Shell
文章目录 前言 一.什么是Shell 二.导航 三.探索 Linux 系统 ls file less 四.操作文件和目录 通配符 mkdir cp mv rm ln 五.和命令打交道 六.重定向 标准 ...
最新文章
- php access 插入,如何使用PHP將附件插入Access數據庫?
- Dockerfile 部署Djano项目
- python测试用例管理模块_Python的单元测试模块如何检测测试用例?
- 图像标注技巧_保护互联网上图像的一个简单技巧
- Intellij IDEA展示类中的方法树形结构
- 在生成.net core 3.0程序时不包含nuget库
- conda虚拟环境中使用pip仍然安装到全局python中
- python经典书籍推荐:Python面向对象编程指南 : Mastering Object-oriented
- Java实现Oracle数据库备份
- logistic回归 简介_从零实现机器学习算法(四)Logistic回归
- java JDK11对比JDK8
- GokeAudio是一款简约小巧的开源安卓SIP软电话客户端
- 《深度工作》学习总结
- Java——正三角、倒三角、菱形打印
- 计算机弹奏简谱成都,赵雷《成都》简谱,分享给大家
- 建立时间保持时间及违例如何处理,求最大时钟频率
- 如何使用百度地图API
- Google全系列产品不再信任赛门铁克某款根证书
- 【内网穿透】通过WebDAV服务访问群晖NAS文件
- 查错秘籍—PHP大法
热门文章
- 教你重拾职场激情的妙计锦囊
- 如何在 XMind 中绘制流程图?
- 实变函数与泛函分析课本pdf_实变函数与泛函分析基础(第三版)同步辅导及习题全解...
- 深耕图形服务,HMS Core 5.0携手开发者共创视觉盛宴
- bootstrap学习(七):跟着宝哥学java:bootstrap表格显示图片
- android默认安装位置,修改Android手机的软件默认安装位置
- 基于逻辑回归和耦合分析得快递网点末端分析
- Docker搭建私有Rap2
- css 锥形渐变实现仪表盘
- 怎么把动图放到word里_WORD中如何插入动态图片