从入门到放弃之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  这种做法也是将标准输出和错误输出都输出到文件中

重定向之合并多个程序

[[email protected] app]# (cal 7 2015 ; cal 8 2016) > 123.txt
[[email protected] app]# cat 123.txt
      七月 2015
日 一 二 三 四 五 六 ......  #防止你们说我骗字数

重定向之多行内容的输入:作用添加多行内容进行输入

[[email protected] app]# cat >test <<EOF
> ADSASD
> SDFASF
> EOF
[[email protected] app]# cat test
ADSASD ......

上面的知识几乎都用的都是一个<或>几乎没用到<<或>>在这里给大家说一下< >在linux的运用中都是覆盖的作用,原本的文件会被<和>代表的内容覆盖。这在某些操作中非常危险很容易导致内容的丢失。这时候聪明的大家应该都想到<< >>的作用了吧,没错就是追加,将< >所代表的内容追加到文件末尾,不会清空文件原本的内容

在这里给大家提一下可能用的不多的命令他的作用也可以防止用重定向时误操作导致文件被覆盖。

set -C :禁止将内容覆盖已有文件,但可追加
[[email protected] app]# set -C
[[email protected] app]# ls >123.txt
[[email protected] app]# echo 123 >123.txt
-bash: 123.txt: cannot overwrite existing file
如果需要强制覆盖的话可以操作使用: >|
[[email protected] app]# echo 123 >| 123.txt
允许覆盖的话可以使用set +C
[email protected] app]# set +C
[[email protected] app]# w >123.txt
[[email protected] 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: 删除当前光标至行尾的字符

时间: 2024-08-02 11:04:04

从入门到放弃之IO的相关文章

OkHttp框架从入门到放弃,解析图片使用Picasso裁剪,二次封装OkHttpUtils,Post提交表单数据

OkHttp框架从入门到放弃,解析图片使用Picasso裁剪,二次封装OkHttpUtils,Post提交表单数据 我们这片博文就来聊聊这个反响很不错的OkHttp了,标题是我恶搞的,本篇将着重详细的分析,探索OkHttp这个框架的使用和封装 一.追其原理 Android系统提供了两种HTTP通信类 HttpURLConnection HttpClient Google推荐使用HttpURLConnection,这个没必要多说,事实上,我这篇写的应该算是比较晚了,很多优秀的博文都已经提出了这些观

从入门到放弃,.net构建博客系统(二):依赖注入

文章目录:<从入门到放弃,.net构建博客系统> 从入门到放弃,.net构建博客系统(一):系统构建 从入门到放弃,.net构建博客系统(二):依赖注入 上一篇中有讲到项目启动时会进行ioc的依赖注入,但具体是怎么注入的呢?我们先一步步往下走 一.注册autofac配置 首先bootstraper会进行初始化,接着将当前mvc控制器工厂改为AutofacControllerFactory. 1 public class AutofacConfig 2 { 3 /// <summary&g

《Java从入门到放弃》文章目录

转眼半个月过去了,不知不觉也写了10篇博客,突然发现所有的目录都没有纯列表的展示,所以特意写一个目录篇,来记录该系列下所有的文章. 当然,因为现在还没有写完,所以先按时间顺序排列,等相关内容都写完后,再按学习顺序来整理. <Java从入门到放弃>入门篇:XMLHttpRequest的基本用法 <Java从入门到放弃>入门篇:Struts2的基本访问方 <Java从入门到放弃>入门篇:Struts2的基本访问方式(二) <Java从入门到放弃>入门篇:Stru

iOS 即时通讯,从入门到 “放弃”?

原文链接:http://www.jianshu.com/p/2dbb360886a8 本文会用实例的方式,将 iOS 各种 IM 的方案都简单的实现一遍.并且提供一些选型.实现细节以及优化的建议. —— 由宇朋Look分享 前言 本文会用实例的方式,将iOS各种IM的方案都简单的实现一遍.并且提供一些选型.实现细节以及优化的建议. 注:文中的所有的代码示例,在github中都有demo:iOS即时通讯,从入门到“放弃”?(demo)可以打开项目先预览效果,对照着进行阅读. 言归正传,首先我们来总

NDK开发 从入门到放弃(七:Android Studio 2.2 CMAKE 高效NDK开发)

前言 之前,每次需要边写C++代码的时候,我的内心都是拒绝的. 1. 它没有代码提示!!!这意味着我们必须自己手动敲出所有的代码,对于一个新手来说,要一个字母都不错且大小写也要正确,甚至要记得住所有的jni函数等,真是太折磨人了-平时写java代码的时候都是写几个字母会出来一大堆提示然后选择的,这样还有一个好处就是很多时候我们不知道有那些函数,但是我们可以通过obj.,然后就可以看到它有哪些方法函数了. 2. 很多地方会显示为红色,就像是错误提示的那种,当然,如果没错的话还是能编译运行的,但是如

CYQ.Data 从入门到放弃ORM系列:开篇:自动化框架编程思维

前言: 随着CYQ.Data 开始回归免费使用之后,发现用户的情绪越来越激动,为了保持这持续的激动性,让我有了开源的念头. 同时,由于框架经过这5-6年来的不断演进,以前发的早期教程已经太落后了,包括使用方式,及相关介绍,都容易引人误解. 为此,我打算重新写个系列来介绍最新的版本,让大伙从传统的ORM编程过渡到自动化框架型思维编程(自已造的词). 于是:这个新系列的名称就叫:CYQ.Data 从入门到放弃ORM系列 什么是:CYQ.Data 1:它是一个ORM框架. 2:它是一个数据层组件. 3

shell从入门到放弃 第二步 ++

此文承接 shell从入门到放弃 第一步 由此,继续从小白到放弃的第二部分@[email protected] 一.shell的运算符 Shell支持很多运算符,包括:Shell算数运算符.关系运算符.布尔运算符.字符串运算符等 算术运算    算术运算符:        +,-        *, /        %:取余        **:次方            算术运算格式:        (1) let  VAR=算术表达式         (2) VAR=$[算术表达式]  

Python的函数式编程,从入门到?放弃?

转:http://python.jobbole.com/84927/ 很早以前就听说过了函数式编程,印象中是一种很晦涩难懂的编程模式,但却一直没有去进行了解. 恰好这周组内的周会轮到我主持,一时也没想到要分享什么.灵光一闪,就选定函数式编程这个主题吧,反正组里的同事都没有学过,只需要讲解入门方面的知识就好,也正好可以借这个机会逼迫自己去学习下这种新的编程方式. 经过初步了解,发现支持函数式编程的语言挺多的,除了像Lisp.Scheme.Haskell.Erlang这样专用的函数式编程语言,我们常

[补档][从入门到放弃]——网络流 学习索引

前篇 由于某篇博文已经长到我自己看不下去的地步,又不忍心删,所以就有了这篇索引,方便自己找,也方便来访的客人看嘛(真的会有人来看吗啊喂) 最长的博文 2017-7-29 大佬讲课笔记 网络流--从入门到放弃 没错,就是它= = 各种题解的索引 搭配飞行员 士兵占领 王者之剑 happiness 切糕 餐巾 血帆海盗