从入门到放弃之IO
浅说IO
学到现在利用过的特殊符号不少组合起来很多都有让人眼前一亮的用法,在这里先聊聊I/O的一些相关知识。
本文开始之前先介绍一下需要知道的一些小知识和需要注意的地方。
- 在linux中也是有优先级的存在的和数学里的运算一样也有+ ,- ,* ,/等运算,还有<,>等。数学里的一样<,>这些符号的在linux命令运用中会优先计算。
- linux给程序提供三种I/O设备 #查看映射的文件地址是 cd /dev/fd/
- 标准输入(STDIN) -o 默认接收来自键盘的输入 #0对应输入==<======
- 标准输入的时候后面跟着的是文件 # 命令的结果不能让前面的输入
[root@localhost ~]# tr '\n' '\t' < who
-bash: who: 没有那个文件或目录
- < 标准输入拿文件代替键盘,实现标准输入的重定向
- 标准输出(STDOUT)-1 默认输出到终端窗口#1对应输出>
- 标准输出的时候前面是命令
- 标准错误(STDERR)-2 默认输出到终端窗口 #2对应错误输出
- I/O重定向:改变默认位置,将结果交给命令或者文件进行处理或者储存。
在这里贴上一些使用的小案例,通过这些案例来知晓用法。 这里直接带入三种I/O的应用。
首先告诉大家一些关于利用重定向将标准输出和错误输出都输出到文件的用法
利用重定向将标准输出和错误输出都输出到文件中
cat /eec /etc/passwd > /aap/f1 2> /app/f2
还有一种做法
cat /eec /etc/passwd > /aap/f1 2>&1 #把2重定向到1里去了=错的对的都放进一个文件 顺序必须是 2>&1 在后面==
ls >& /app/logo 这种做法也是将标准输出和错误输出都输出到文件中
重定向之合并多个程序
[root@localhost app]# (cal 7 2015 ; cal 8 2016) > 123.txt
[root@localhost app]# cat 123.txt
七月 2015
日 一 二 三 四 五 六 ...... #防止你们说我骗字数
重定向之多行内容的输入:作用添加多行内容进行输入
[root@localhost app]# cat >test <<EOF
> ADSASD
> SDFASF
> EOF
[root@localhost app]# cat test
ADSASD ......
上面的知识几乎都用的都是一个<或>几乎没用到<<或>>在这里给大家说一下< >在linux的运用中都是覆盖的作用,原本的文件会被<和>代表的内容覆盖。这在某些操作中非常危险很容易导致内容的丢失。这时候聪明的大家应该都想到<< >>的作用了吧,没错就是追加,将< >所代表的内容追加到文件末尾,不会清空文件原本的内容
在这里给大家提一下可能用的不多的命令他的作用也可以防止用重定向时误操作导致文件被覆盖。
set -C :禁止将内容覆盖已有文件,但可追加
[root@localhost app]# set -C
[root@localhost app]# ls >123.txt
[root@localhost app]# echo 123 >123.txt
-bash: 123.txt: cannot overwrite existing file
如果需要强制覆盖的话可以操作使用: >|
[root@localhost app]# echo 123 >| 123.txt
允许覆盖的话可以使用set +C
root@localhost app]# set +C
[root@localhost app]# w >123.txt
[root@localhost app]# cat 123.txt
20:22:38 up 16:59, 2 users, load average: 0.00, 0.01, 0.05
接下来介绍个经常和重定向一起使用的命令tr
tr:可以对来自标准输入的字符进行替换、压缩和删除。它可以将一组字符变成另一组字符,经常用来编写优美的单行命令,作用很强大。
例
tr 'a-z' 'A-Z' 第一字符集替换成第二字符集
-d:删除指定的内容 tr -d '要删除的内容'
[root@localhost app]# tr -d 'a-z'
gdasdfgewrat231312
231312
-c::取代所有不属于第一字符集的字符(很多情况下和-d配合)
例:[root@localhost ~]# echo dasdasd12312 | tr -c '12' 'sad'
ddddddd12d12d[root@localhost ~]#
与-d配合:[root@localhost ~]# echo dasdasd12312 | tr -dc '12'
1212
tr:可用的一些参数
常用几种:
[:digit:]:任意数字,相当于0-9
[:lower:]:任意小写字母
[:upper:]: 任意大写字母
[:alpha:]: 任意大小写字母
[:alnum:]:任意数字或字母
tr可以配合重定向转换文件内容
[root@localhost ~]# cat /etc/passwd > tr ‘a-z' 'A-Z'
cat: a-z: No such file or directiry
cat: A-Z: No such file or directiry
接下来是以后写脚本时候会经常用到的管道符| |管道符 将几个命令链接起来 把第一个命令的标准输出变成第二个命令的标准输入 #管道符只能接受标准输出,不能接受错误输出如果想接受错误输出可以这么做
cat /tmp/123.txt /ett 2>&1 | tr 'a-z' 'A-Z' 这个做法的意思是把错误输出输入到正确输入里去,在让管道符接收
第二种做法:
cat /tmp/123.txt /ett |&1 | tr 'a-z' 'A-Z'
tee命令:可以接受内容回显到终端上,接着保存到文件
利用他可以接着接管道符进行处理
ls /boot | tee ls.out | tr 'a-z' 'A-Z' # 文件里的内容还是小写
-a: tee命令默认会覆盖文件里的内容,如果不想覆盖需要加上-a
who | tee -a | ls .out | tr 'a-z' 'A-Z'
接下来是一些命令的整理
^string 取反
\ 反义字符
.. 上级目录
. 当前目录
| 管道命令把前一个命令的结果的输出交给后一个程序继续处理。
|| 如果有一个命令执行成功 那么其他命令就不再执行
{..}两个点是序列
~家目录
!取反 或交集 或并集
&& 并且
Ctrl + xx 光标在命令行首和光标之间移动
ctrl E: 回到行尾
ctrl a: 去行首
ctrl shift c: 复制
ctrl shift v: 粘贴
ctrl r: 命令行查找
ctrl l: 清屏
ctrl u: 清除当前行 同ctrl w
ctrl k: 删除当前光标至行尾的字符
从入门到放弃之IO的更多相关文章
- Android -- 带你从源码角度领悟Dagger2入门到放弃
1,以前的博客也写了两篇关于Dagger2,但是感觉自己使用的时候还是云里雾里的,更不谈各位来看博客的同学了,所以今天打算和大家再一次的入坑试试,最后一次了,保证最后一次了. 2,接入项目 在项目的G ...
- Android -- 带你从源码角度领悟Dagger2入门到放弃(二)
1,接着我们上一篇继续介绍,在上一篇我们介绍了简单的@Inject和@Component的结合使用,现在我们继续以老师和学生的例子,我们知道学生上课的时候都会有书籍来辅助听课,先来看看我们之前的Stu ...
- Struts2入门到放弃
写在前面------------------------------------------------------------------------- 本文章主要从三个方面来学习Struts2框架 ...
- OkHttp框架从入门到放弃,解析图片使用Picasso裁剪,二次封装OkHttpUtils,Post提交表单数据
OkHttp框架从入门到放弃,解析图片使用Picasso裁剪,二次封装OkHttpUtils,Post提交表单数据 我们这片博文就来聊聊这个反响很不错的OkHttp了,标题是我恶搞的,本篇将着重详细的 ...
- NetCore实践篇:分布式监控客户端ZipkinTracer从入门到放弃之路
前言 本文紧接上篇.Net架构篇:思考如何设计一款实用的分布式监控系统?,上篇仅仅是个思考篇,跟本文没有太大的关系.但有思考,结合现有的开源组件,实践起来更易理解起来,所以看本文之前,应该先看下上篇博 ...
- QML 从入门到放弃
发现了一个问题: QQuickView only supports loading of root objects that derive from QQuickItem. If your examp ...
- Android -- 带你从源码角度领悟Dagger2入门到放弃(一)
1,以前的博客也写了两篇关于Dagger2,但是感觉自己使用的时候还是云里雾里的,更不谈各位来看博客的同学了,所以今天打算和大家再一次的入坑试试,最后一次了,保证最后一次了. 2,接入项目 在项目的G ...
- dotnet 从入门到放弃的 500 篇文章合集
本文是记录我从入门到放弃写的博客 博客包括 C#.WPF.UWP.dotnet core .git 和 VisualStudio 和一些算法,所有博客使用 docx 保存 下载:dotnet 从入门到 ...
- FQ:从入门到放弃(二)
上次的FQ:从入门到放弃(一)介绍了XXNet的部署和基本使用.本文整理一些部署过程中出现的问题,都是这几天朋友们安装过程中出现的问题.如果覆盖不全,欢迎在博客下方评论,互相交流,互相学习. 不过首先 ...
随机推荐
- 逆向实战干货,快速定位自动捡阳光Call,或者标志
逆向实战干货,快速定位自动捡阳光Call,或者标志 注意: 关于CE和OD的使用,这里不再多说,快速定位,默认大家已经有了CE基础,或者OD基础. 第一种方法,找Call 第一步,打开CE,搜索阳光值 ...
- 用JS制作一个信息管理平台完整版
前 言 JRedu 在之前的文章中,介绍了如何用JS制作一个实用的信息管理平台. 但是那样的平台功能过于简陋了,我们今天来继续完善一下. 首先我们回顾一下之前的内容. 1.JSON的基础知识 ...
- 为异常处理做准备,熟悉一下WinDbg工具
为异常处理做准备,熟悉一下WinDbg工具 马上开始异常处理第二讲,但是在讲解之前,还有熟悉一下我们的WinDbg工具,当然你如果熟悉这个工具,那么就可以不用看了. 一丶熟悉WinDbg界面 刚开始打 ...
- .NetCore之下载文件
本篇将和大家分享的丝.NetCore下载文件,常见的下载有两种:A标签直接指向下载文件地址和post或get请求后台输出文件流的方式,本篇也将围绕这两种来分享:如果对您有好的帮助,请多多支持. 允许站 ...
- ASP.NET Core 认证与授权[1]:初识认证
在ASP.NET 4.X 中,我们最常用的是Forms认证,它既可以用于局域网环境,也可用于互联网环境,有着非常广泛的使用.但是它很难进行扩展,更无法与第三方认证集成,因此,在 ASP.NET Cor ...
- 我的第一个python web开发框架(1)——前言
由于之前经验不是很丰富,写的C#系统太过复杂,所以一直想重写,但学的越多越觉得自己懂的越少,越觉的底气不足.所以一直不敢动手,在内心深处对自己讲,要静下心来认真学习,继续沉淀沉淀.这两年多以来找各种机 ...
- Quartz源码——Quartz调度器的Misfire处理规则(四)
Quartz调度器的Misfire处理规则 调度器的启动和恢复中使用的misfire机制,还需细化! SimpleTrigger的misfire机制 默认的 Trigger.MISFIRE_INSTR ...
- 【重点突破】——two.js模拟绘制太阳月亮地球转动
一.引言 自学two.js第三方绘图工具库,认识到这是一个非常强大的类似转换器的工具,提供一套固定的接口,可用在各种技术下,包括:Canvas.Svg.WebGL,极大的简化了应用的开发.这里,我使用 ...
- Angular JS的正确打开姿势——简单实用(下)
前 言 絮叨絮叨 继上篇内容,本篇继续讲一下这款优秀并且实用的前端插件AngularJS. 六. AngularJS中的HTTP 6.1先看看JQuery的Ajax写法 $ajax({ me ...
- EXISTS/NOT EXISTS CASE WHEN等使用方法
--简单判断用法 WHERE EXISTS (SELECT * FROM cpay..System_Setting) --可以替换count ) FROM cpay..System_Setting U ...