Linux 入门记录:十六、Linux 多命令协作:管道及重定向
一、多命令协作
在 Linux 系统当中,大多数命令都很简单,很少出现复杂功能的命令,每个命令往往只实现一个或多个很简单的功能。通过将不同功能的命令组合一起使用,可以实现某个复杂功能的。
Linux 中几乎所有命令的返回数据都是纯文本的(因为每个命令都是运行在 CLI 下),而纯文本形式的数据又是绝大多数命令的输入格式,这就让多命令协作成为可能。
Linux 的命令行提供了管道和重定向机制,多命令协作就是通过管道和重定向完成的。
二、标准流
对于一个终端而言,可能要处理各种类型的数据,int 型、float 型、double 型、char 型、string 型,甚至是一个文本文件,终端更重视数据本身的内容,无视这些数据的类型而着重于他们的内容,将它们抽象为一个“流”(Stream)的概念。数据流一般也称 I/O 流。
每一个终端几乎都会有数据流的 I/O(输入输出),普遍地,基于流的走向和用途有输入流、输出流、错误流、文件流等等,而一般地,有 3 个默认的标准流:
| 名称 | 说明 |
编号 (文件描述符) |
默认设备 |
| STDIN | 标准输入流 | 0 | 键盘 |
| STDOUT | 标准输出流 | 1 | 终端 |
| STDERR | 标准错误刘 | 2 | 终端 |
STDIN 表示标准输入流 ,一般默认是键盘,文件描述符为 0。 STDOUT 和 STDERR 分别表示标准输出流和标准错误流,一般默认是终端,文件描述符分别为 1 和 2。
三、管道和重定向
1. 重定向
重定向可以将 I/O 流定向(关联)到文件,而不是默认的终端。重定向通常用来将某命令的输出或错误信息保存到一个指定的文件中。
常见的操作符有以下几个:
> 将STDOUT重定向到文件(覆盖)
>> 将STDOUT重定向到文件(追加)
2> 将STDERR重定向到文件(覆盖)
2>&1 将STDERR和STDOUT重定向到文件(覆盖)
< 将STDIN重定向到文件
示例:
echo Hello,Linux > echo.md 打印一段语句,输出到文件
echo cnblogs.com >> echo.md 打印一段语句,追加到文件
ls noexist 2> ls.md 列出目录,将错误信息输出到文件
ls noexist 1> a.md 2>&1 列出目录、输出到文件,并把错误信息合并到标准输出(也输出到文件)
cat > output.md < input.md input.md文件作为标准输入,output.md作为标准输出
2. 管道
管道操作可以实现将一个命令的输出作为另一个命令的输入。管道通常用来组合不同的命令,以实现一个复杂的功能。
操作符:
| 将一个命令的STDOUT作为另一个命令的STDIN
示例:
ls -ld . | cat > ls.md 列出目录信息并输出到文件
参考链接:
Linux 入门记录:十六、Linux 多命令协作:管道及重定向的更多相关文章
- Linux基本配置和管理 2 ---- Linux多命令协作----管道及重定向
1 管道和重定向 1 在Linux中大多数命令都很简单,很少出现复杂的命令,每个命令只是实现一个简单的功能,我们可以通过组合不同的命令来实现复杂的功能 2 在Linux中几乎所有的命令返回的数据都是纯 ...
- Linux 入门记录:六、Linux 硬件相关概念(硬盘、磁盘、磁道、柱面、磁头、扇区、分区、MBR、GPT)
一.硬盘 硬盘的功能相当简单但很重要,它负责记录系统所需要的各种数据.硬盘记录数据有两个方面,一个是硬件方面的存储原理和结构,另外一方面则是软件方面的数据和文件系统.硬盘的主要行为就是数据的存放和取出 ...
- Linux学习之十六-Linux用户管理
Linux用户管理 Linux系统跟Windows系统一样,可以创建不同的用户,不同的用户组.在不同用户下使用系统具有相应的权限 创建一个普通用户时,会修改几个文件,拷贝一些初始文件到用户家目录中 修 ...
- Linux 入门记录:二十、Linux 包管理工具 YUM
一.YUM(Yellowdog Updater, Modified) 1. YUM 简介 RPM 软件包形式管理软件虽然方便,但是需要手动解决软件包的依赖问题.很多时候安装一个软件首先需要安装 1 个 ...
- Linux学习之十四、管线命令
Linux学习之十四.管线命令 地址:http://vbird.dic.ksu.edu.tw/linux_basic/0320bash_6.php
- Linux入门基础教程之Linux下软件安装
Linux入门基础教程之Linux下软件安装 一.在线安装: sudo apt-get install 即可安装 如果在安装完后无法用Tab键补全命令,可以执行: source ~/.zshrc AP ...
- 无废话ExtJs 入门教程十六[页面布局:Layout]
无废话ExtJs 入门教程十六[页面布局:Layout] extjs技术交流,欢迎加群(201926085) 首先解释什么是布局: 来自百度词典的官方解释:◎ 布局 bùjú: [distributi ...
- Bootstrap入门(十六)组件10:well和具有响应式特性的嵌入内容
Bootstrap入门(十六)组件10:well和具有响应式特性的嵌入内容 well组件可以为内容增添一种切入效果. 具有响应式特性的嵌入内容可以根据被嵌入内容的外部容器的宽度,自动创建一个固定的比例 ...
- MyBatis基础入门《十六》缓存
MyBatis基础入门<十六>缓存 >> 一级缓存 >> 二级缓存 >> MyBatis的全局cache配置 >> 在Mapper XML文 ...
- Inno Setup入门(十六)——Inno Setup类参考(2)
Inno Setup入门(十六)——Inno Setup类参考(2) http://379910987.blog.163.com/blog/static/33523797201112755641236 ...
随机推荐
- lambda 分组练习
public partial class Form1 : Form { public Form1() { InitializeComponent(); } List<Person> per ...
- hdu 3339 In Action (最短路径+01背包)
In Action Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- hdu 1162 Eddy's picture (最小生成树)
Eddy's picture Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)To ...
- 【题解】51nod1327 棋盘游戏
那天和机房的同学们一起想了很久,然而并没有做出来……今天看了题解,的确比较巧妙,不过细细想来其实规律还是比较明显,在这里记录一下~ 当天自己做的时候,主要想到的是两点 : 1.按列dp 2.对行进行排 ...
- BZOJ3938 & UOJ88:[集训队互测2015]Robot——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=3938 http://uoj.ac/problem/88 小q有n只机器人,一开始他把机器人放在了一 ...
- BZOJ3076 & 洛谷3081:[USACO2013 MAR]Hill Walk 山走——题解
http://www.lydsy.com/JudgeOnline/problem.php?id=3076 https://www.luogu.org/problemnew/show/P3081#sub ...
- VS 2013 with update安装失败(kb2829760)解决方案
update过程中遇到kb2829760补丁无法更新而导致vs安装失败的解决方法: 1.安装KB2829760: 2.安装KB2829760中文语言包: 3.安装VS2013 with update. ...
- ubuntu16.04装chrome
--更简单的方法是先下载chromium浏览器,这是不禁止的,然后打开chromium搜索chrome,chrome的官网下载即可 //安装好后,终端输入google-chrome即可打开 另一种 ...
- UVA10600:ACM Contest and Blackout(次小生成树)
ACM Contest and Blackout 题目链接:https://vjudge.net/problem/UVA-10600 Description: In order to prepare ...
- Web前端工程师-优秀简历汇总
Web前端工程师-优秀简历汇总 1. http://www.linqing07.com/resume.html 2. http://www.flqin.com/#page2 3. ht ...