标准 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演化而成,能够 ...
随机推荐
- 关于pycharm中输出的内容不全的解决办法
很多时候我们会发现有的时候输出的结果特别多的时候,会在最后输出时用...代替,最后输出一个总长度,那要咋么弄咧? import pandas as pd # 设置显示的最大列.宽等参数,消掉打印不完全 ...
- Java入门 - 语言基础 - 01.Java简介
原文地址:http://www.work100.net/training/java-intro.html 更多教程:光束云 - 免费课程 Java简介 序号 文内章节 视频 1 概述 2 主要特性 3 ...
- 「 从0到1学习微服务SpringCloud 」04服务消费者Ribbon+RestTemplate
系列文章(更新ing): 「 从0到1学习微服务SpringCloud 」01 一起来学呀! 「 从0到1学习微服务SpringCloud 」02 Eureka服务注册与发现 「 从0到1学习微服务S ...
- SpringCloud Zipkin
原文地址:https://blog.csdn.net/z8414/article/details/78600646 Zipkin是一个链路跟踪工具,可以用来监控微服务集群中调用链路的通畅情况 前提:S ...
- 学习 lind api 十月 第一弹
step one 我们来看一下代码的结构
- nuxt.js学习初探
项目目标 把我个人博客的前端界面部分使用nuxt框架进行服务端渲染 nuxt介绍 nuxt可以把spa根据路由将单页面分割成多页面,比起vue的ssr渲染要更容易使用 nuxt的使用 项目创建 npx ...
- robotframework,移动端(小程序)自动化,通过屏幕坐标点击对应按钮的方法
使用场景: 下图通过常规方法是定位不到“红色”这个按钮的 我们把鼠标放置上去,下图右侧会显示该点的坐标地址 然后使用click a point指令定位 click a point 64 743 dur ...
- applyColorMap 在OpenCV中对灰度图进行颜色映射,实现数据的色彩化
什么是色彩映射: 说直白点就是将各种数据映射成颜色信息,例如:温度,高度,压力,密度,湿度,城市拥堵数据等等 色彩化后更加直观表达 在OpenCV里可以使用 Mat im_gray = imread( ...
- 2、初始ES6及Vue
今日内容 es6的语法 let 特点: 1.局部作用域 2.不会存在变量提升 3.变量不能重复声明 const 特点: 1.局部作用域 2.不会存在变量提升 3.不能重复声明,只声明常量 不可变的量 ...
- Gradle | Gradle项目无法导入依赖包
Gradle | Gradle项目无法导入依赖包 背景 今天使用idea导入一个Gradle项目,使用 gradle build构建成功,但是项目还是无法正常导入依赖包,显示错误如下: 解决方案 后来 ...