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 五.和命令打交道 六.重定向 标准 ...
最新文章
- threejs 纹理流动_Threejs多重纹理与过程纹理实现
- 第83天:jQuery中操作form表单
- python评估不平衡数据集_Python Pandas:平衡不平衡的数据集(用于面板分析)
- 2019年1月16日【第三天学习】
- redis发布订阅c接口_Redis 发布/订阅机制原理分析
- fscache 调研
- php简单选择题,念做个简易php选择题答题系统
- Python基础:字典(dict)与集合(set)
- 项目2:PHP抽奖程序 ,抽奖规则代码
- Android—API中文文档
- 论文评审标准有哪些?
- python+playwright 学习-17.模拟手机浏览器测试
- java基础教程(一)
- 如何理解空洞卷积(dilated convolution)
- VMware Workstation安装Win7系统
- 跨进程读取ListView(CListCtrl)内容
- 三调 图斑地类面积_图斑地类面积理论值计算方法说明
- Win10_64位系统安装CUDA、CUDDN、深度学习平台Paddle 、PaddleX安装总结
- 【C#】游戏客户端编程
- 【Mongodb和Solr】Mongodb和solr整合
热门文章
- Django项目开发纪要
- 浙大PAT 乙级(题号1046~1050)自解全AC Java | C++实现
- Markdown Preview Enhanced 开启toc技巧
- 手指皮肤长期干/粗糙/小裂口问题
- 解放右手鼠标,效率实用神器 Autohotkey 利用 Capslock 键匹配 vim 键位| Autohotkey 脚本解决 onenote 上下键问题 | Capslock++
- Maven——使用mvnw
- tidytext | 耳目一新的R-style文本分析库
- 宣传一下绝对耳目一新的Hybrid App框架-easyfb
- Git-版本控制,GitHub,Git分支
- 常见的串口控件(1)