标准 I/O 和管道
1、标准输入和输出
1> 程序:指令+数据(指令服务于数据)
  读入数据:input
  输出数据:output
2> 三种 I/O 设备
  Linux 给程序提供三种 I/O 设备
标准输入(STDIN) - 默认接受来自键盘的输入
标准输出(STDOUT)- 默认输出到终端窗口
标准错误(STDERR)- 默认输出到终端窗口
3> 把 I/O 重定向至文件
  I/O 重定向:改变默认位置
  标准输出的重定向:可以重定向至不同终端设备,也可以重定向至文件
[root@centos7 ~]#ls >output.txt # >等同于1>
  标准错误的重定向:
    使用:2>
  >>两个大于号追加
  也可以将正确、错误分开重定向至不同的文件:
[root@centos7 ~]#ls /tmp/ /error >1.txt 2>2.txt
正确错误混合重定向至一个文件:
[root@centos7 ~]#ls /tmp/ /error >f1 2>&1 # 等同于ls /tmp/ /error %> f1
cmd > log.txt >& # 正确错误混合重定向
cmd >& > log.txt # 错误显示,正确重定向
cmd &> log.txt # 正确错误混合重定向
cmd >log.txt >& # 正确错误混合重定向
>重定向即'覆盖';>>即追加
[root@centos7 ~]#ls
anaconda-ks.cfg bin
[root@centos7 ~]#echo "123" > f1 # 输出123重定向至f1(f1不存在则创建)
[root@centos7 ~]#cat f1
123
[root@centos7 ~]#set -C # 禁止覆盖
[root@centos7 ~]#echo "456" > f1
-bash: f1: 无法覆盖已存在的文件
[root@centos7 ~]#echo "456" >| f1 # 强制覆盖
[root@centos7 ~]#cat f1
456
[root@centos7 ~]#set +C # 取消禁止覆盖
可以将输出信息、垃圾文件重定向至垃圾桶:/dev/null
2、tr命令:转换和删除字符
  tr [OPTION]…SET1 [SET2]
    -c 取字符集的补集
    -d 删除所有属于第一字符集的字符
    -s 压缩字符
    -t 将第一个字符装换为第二个字符
[root@192 ~]#tr 'a-z' 'A-Z' # 将小写转换为大写
afgbsgsgfdfd # 支持标准输入
AFGBSGSGFDFD # 显示标准输出
[root@centos7 ~]#tr 'abc' '1234' # 前少后多,以前面为准
abcdef
123def
[root@centos7 ~]#tr 'abcd' '123' # 前多后少
abcdef
1233ef
[root@centos7 ~]#tr -t 'abcd' '123' # -t 前多后少
abcdef
123def
[root@centos7 ~]#tr -d abc # 删除
abcdef
def
3、单行重定向
[root@centos7 ~]#cat >test1.txt
aaa # 输入aaa后在另一个终端查看,数据已经写入
bbb
^C
[root@centos7 ~]#
4、多行重定向
[root@centos7 ~]#cat >test2.txt<<EOF
> aaa # 输入aaa,在另一个终端查看数据未写入
> bbb
> EOF # 输入终止词EOF数据写入
[root@centos7 ~]#
5、管道
  管道(使用符号“|”表示)用来连接命令
[标准输出] 2>&1 | [标准输入] # 使用 2>&1 |,不论正确错误都输出(即|&)
less:一页一页的查看输入
[root@centos7 ~]#ls -l /etc | less # 查看/etc下的目录文件,分页显示
......
mail:通过邮件发送输入
echo “test email” | mail -s “test” user@enample.com
lpr:把输出发送到打印机
echo “test print” | lpr -P printer_name
管道中-符号
打包再解压(例):tar -cvf - /home | tar -xvf -
6、实例:运用管道、tr等命令实现1+2+...+100
[root@centos7 ~]#echo {1..100} | tr ' ' '+' | bc    # 输出1-100,用+替换空格,经管道传递给bc计算器
5050
[root@centos7 ~]#seq -s + 1 100 | bc                # seq输出序列化的东西,输出1-100,-s指定分隔符
5050
标准 I/O 和管道的更多相关文章
- 5-1 标准I/O和管道
		标准I/O和管道 程序:指令+数据 读入数据:Input 输出数据:Output 打开的文件都有一个fd: file descriptor (文件描述符) Linux给程序提供三种 I/O 设备 标准 ... 
- 初学Linux之标准I/O和管道
		标准输入和输出 程序是由指令+数据组成 程序的数据流有三种: 输入数据流:<–标准输入(stdin),一般默认是键盘 输出数据流:–>标准输出(stdout),一般默认到终端窗口 错误输出 ... 
- 了解有哪几个C标准&了解C编译管道
		下列哪个不是C标准.参考:C语言标准 小知识:C语言标准的发展 K&R C: 1978年,丹尼斯·里奇(Dennis Ritchie)和布莱恩·科尔尼干(Brian Kernighan)出版了 ... 
- C语言----管道
		一.管道的概念 管道是一种队列类型的数据结构,它的数据从一端输入,另一端输出.管道最常见的应用是连接两个进程的输入输出,即把一个进程的输出编程另一个进程的输入.shell中存在专门的管道运算符&quo ... 
- Linux Shell中管道的原理及C实现框架
		在shell中我们经常用到管道,有没考虑过Shell是怎么实现管道的呢? cat minicom.log | grep "error" 标准输入.标准输出与管道 我们知道,每一个进 ... 
- GoJS研究,简单图表制作。
		话不多说,先上图 我在这个中加入了缩略图.鼠标放大缩小等功能. <!doctype html> <html> <head> <title>Flowcha ... 
- Node.js规范化应用
		Node.js运行在一个单线程模式,但它使用一个事件驱动范例来处理并发.它还有助于创建子进程,以充分利用并行处理的多核CPU系统. 子进程总是有三个流child.stdin,child.stdout和 ... 
- Linux & Python 导航目录
		< Python学习手册(第4版)>< Python Cookbook(第2版)>中文版.pdf< Python 高级编程>< Python 基础教程 第二版 ... 
- 网络技术教程笔记(20)ISDN
		广域网与接入网技术 广域网与接入网技术 常见接入技术--ISDN 综合业务数字网(Integrated Services Digital Network,ISDN)由电话综合数字网IDN演化而成,能够 ... 
随机推荐
- mysql 视图/触发器/函数
			一.视图 作用:简写代码,与临时表的作用差不多 .创建 create view 视图名 as SQL语句 .修改 alter view 视图名 as 新SQL语句 .删除 drop view 视图名 ... 
- cocos2dx,Layer锚点与scale缩放
			最近写代码需要用到缩放,而且是Layer的,但是发现怎么设置位置都是错误,于是决定研究下. 首先,基础代码,代码上不错特殊处理,没有锚点设置和缩放 class TestLayer : public L ... 
- 安装mysql遇到的问题
			想在自己的PC上安装mysql服务器,首先在官网下载mysql的安装文件. MySQL安装文件分两种 .msi和.zip ,.msi需要安装,.zip文件需要配置环境变量. 我首先下载的是不需要安装的 ... 
- if(a)是什么意思
			if(a)等价于 if(a!=0) if(!a)等价于 if(a==0) 
- Java中SMB的应用
			目录 SMB 服务操作 Ⅰ SMB简介 Ⅱ SMB配置 2.1 Windows SMB Ⅲ 添加SMB依赖 Ⅳ 路径格式 Ⅴ 操作共享 Ⅵ 登录验证 SMB 服务操作 Ⅰ SMB简介  SMB(全称 ... 
- 【javaWeb】HttpServletRequest常用获取URL的方法
			1.request.getRequestURL() 返回的是完整的url,包括Http协议,端口号,servlet名字和映射路径,但它不包含请求参数. 2.request.getRequestURI( ... 
- Node.js实操练习(一)之Node.js+MySQL+RESTful
			前言 最近学习了一下node.js相关的内容,在这里初步做个小总结,说实话关于本篇博客的相关内容,自己很久之前就已经有过学习,但是你懂的,“好记性不如烂笔筒”,学过的东西不做笔记的话,很容易就会忘记的 ... 
- HTML5 App商业开发实战教程 基于WeX5可视化开发平台
- Windows玩转Kubernetes系列2-Centos安装Docker
			接上一章,Windows玩转Kubernetes系列1-VirtualBox安装Centos,我们开始学习如何在Centos中安装Docker 准备 关闭防火墙 防火墙一定要提前关闭,否则在后续安装K ... 
- [ZJOI2007]报表统计(splay,堆)
			[ZJOI2007]报表统计(luogu) Description 题目描述 Q的妈妈是一个出纳,经常需要做一些统计报表的工作.今天是妈妈的生日,小Q希望可以帮妈妈分担一些工作,作为她的生日礼物之一. ... 
