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 ...
- P1365 WJMZBMR打osu! / Easy
题目背景 原 维护队列 参见P1903 题目描述 某一天WJMZBMR在打osu~~~但是他太弱逼了,有些地方完全靠运气:( 我们来简化一下这个游戏的规则 有 nnn 次点击要做,成功了就是o,失败了 ...
- POJ1816:Wild Words——题解
http://poj.org/problem?id=1816 比较麻烦的trie. 首先你需要选择针对n还是m建立trie,这里我选择了针对n. 那么就需要面临卡空间的问题. 这里提供了一种链式前向星 ...
- BZOJ4196:[NOI2015]软件包管理器——题解
http://www.lydsy.com/JudgeOnline/problem.php?id=4196 https://www.luogu.org/problemnew/show/P2146 你决定 ...
- BZOJ2527 & 洛谷3527:[Poi2011]Meteors——题解
+++++++++++++++++++++++++++++++++++++++++++ +本文作者:luyouqi233. + +欢迎访问我的博客:http://www.cnblogs.com/luy ...
- 算法学习 并查集(Union-Find) (转)
并查集是我暑假从高手那里学到的一招,觉得真是太精妙的设计了.以前我无法解决的一类问题竟然可以用如此简单高效的方法搞定.不分享出来真是对不起party了.(party:我靠,关我嘛事啊?我跟你很熟么?) ...
- MyBatis代码生成工具mybatis-generator在Myeclipse10中的使用
一.在MyEclipse安装目录下新建myPlugin目录,如下图所示: 二.将 mybatis.zip 里面的文件放在MyEclipse的dropins目录下,如下图所示: 三.在Myeclipse ...
- ubuntu16.04登录后无dash,无启动栏launch,无menu bar,只有桌面背景解决办法
今天打开电脑,与往常一样输入用户名密码登录后,发现桌面上空空如也,启动栏launch,menu bar什么的都消失了,桌面上文件可以打开,但是无法拖动位置,无法关闭(因为menu bar没了,无法鼠标 ...
- Codeforces Round #398 (Div. 2) A B C D 模拟 细节 dfs 贪心
A. Snacktower time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...
- 手脱ACProtect V1.4X(有Stolen Code)
1.载入PEID ACProtect V1.4X -> risco 首先需要说明的是,这个壳被偷取的代码非常多,如果去找的话会比较麻烦,所以我们换一种另类的方法,不脱壳也可以使用资源修改器对程序 ...