重定向和管道

重定向和管道

今天一起来学习一下重定向的一些相关命令及用法:

我们都知道
程序=指令+数据 ,那么我们的数据的输入(Input)和输出(Output)是如何实现的呢?!跟小编君一起来看一下吧:

本博文小编君分成了四部分:1.重定向的讲解 2.管道符的讲解 3.涉及到的一些其他命令 4.练习题

一:重定向

重定向的本质是改变文件的默认位置,即换个地方存储数据。

Linux给程序提供三种I/O设备(它们均来自终端),分别是:

1.标准输入(STDIN) -0 默认接受来自键盘的输入

2.标准输出(STDOUT)-1 默认输出到终端窗口

      3.标准错误(STDERR)-2 默认输出到终端窗口

看一下这个命令:

cat > filea < fileb   : 将filed文件内容写入filea

其中“< filename”是将filename的内容输入到某处;

“> filename”是将内容重定向(导入)到某文件中。

执行命令的格式: 命令 操作符号 文件名

支持的操作符号包括:

> STDOUT(标准正确输出)重定向到文件(1>的简写)

2> STDERR(标准错误输出)重定向到文件

&> 把所有输出重定向到文件(包括正确和错误的)

> 2>&1 Centos6之前的格式))

>”:文件内容会被覆盖(例如:echo  djdf  >
filename;
若文件不存在时,则创建文件并导入内容;若文件已经存在并有内容时,覆盖原有内容; 也可以用 > filename 直接创建信息)

>>:在文件原有内容基础上,追加内容(文件不存在时,也创建。)

重定向和管道

为了防止误操作,我们可以设置“set –C filename:(禁止将内容覆盖已有文件,但可追加);但是我们在这个时候又想将里面的内容覆盖,就用 “>| file”:(强制覆盖);取消这种设置,用“set +C filename”: (允许覆盖)

重定向和管道

>>”追加正确的输出信息;

“2>>”追加错误的输出信息;

标准输出和错误输出各自定向至不同位置:

COMMAND >/path/to/file.out 2>/path/to/error.out

&>”将正确和错误的信息都覆盖重定向到文件

&>>”将正确和错误的信息都追加重定向到文件

例如:

COMMAND >/path/to/file.out 2>&1 (顺序很重要)

COMMAND >>/path/to/file.out 2>&1

重定向和管道

二:管道

管道(使用符号“|”表示)用来连接命令,其格式是:

命令1 | 命令2 | 命令3 |

即:将命令1的正确输出结果发送给命令2使用,命令2的正确输出结果发送到命令3使用,(错误输出默认不能通过管道转发,可利用 “2>&1 |”(之前的版本)或者
|&”(Centos 6 以后才有的)实现)

例: echo 1+3 |bc—>4(将“1+3”输出给下一条命令bc进行计算)(bc是计算器,)

可结合其他命令实现

重定向和管道

三.涉及到的其他命令

tr(translate):转换和删除字符,其用法格式为: tr [option] set1 [set2]

选项:

-c C –complement:取字符集的补集(取反)

-d –delete:删除所有属于第一字符集的字符

-s –squeeze-repeats:把连续重复的字符以单独一个字符表示

-t –truncate-set1:将第一个字符集对应字符转化为第二字符集

如下图所示:

重定向和管道

对应的字符

[:alnum:]:字母和数字

[:alpha:]:字母(包括大小写)

[:cntrl:]:控制(非打印)字符

[:digit:]:数字

[:graph:]:图形字符

[:lower:]:小写字母

[:print:]:可打印字符

[:punct:]:标点符号

[:space:]:空白字符

     [:upper:]:大写字母

            [:xdigit:]:十六进制字符

在这里总结一下目前知道的这些字符的用法:在tr命令里用时只需一个中括号,在引用或者正则表达式里用时需要再加一个中括号。

重定向和管道

例:

tr 可以结合重定向和管道一起使用:例:

tr a-z’ ‘A-Z< /etc/issue该命令会把/etc/issue中的小写字符都转换成大写字符

tr d abc < /etc/fstab 删除fstab文件中的所有abc中任意字符

cat filename| tr ‘a-z’ ‘A-Z’将filename的内容里所有小写字母转换成大写字母显示

重定向和管道

四:接下来做几道习题练练手,加深一下印象,

1./etc/issue文件中的内容转换为大写后保存至/tmp/issue.out文件中

解:这里用到从/etc/issue里将内容导出(用< /etc/issue),然后用tr进行大小写转换,之后再将转换后的内容重定向到/tmp/issue.out,而且/tmp/issue.out这个文件本来是不存在的,在重定向的过程中,将其创建并导入内容
  [root@localhost test]# cat /tmp/issue.out
cat: /tmp/issue.out: No such file or directory
[root@localhost test]# tr ‘a-z’ ‘A-Z’ > /tmp/issue.out < /etc/issue
[root@localhost test]# cat /tmp/issue.out 
\S
KERNEL \R ON AN \M

2、将当前系统登录用户的信息转换为大写后保存至/tmp/who.out文件中

重定向和管道

3、将/root/下文件列表,显示成一行,并文件名之间用空格隔开

解:首先将/root/下的文件列表显示出来,然后用tr将换行符转换成空格就可以了

重定向和管道

4、计算1+2+3+..+99+100的总和(这是一道面试题)

解:首先先将1到100想办法显示出来,这里用echo 加大括号将变量分别显示出来,然后用tr把空格转换成+,最后传给计算器进行计算,最后输出运算结果。

重定向和管道

5.处理字符串“xt.,l 1 jr#!$mn 2 c*/fe 3 uz 4”,只保留其中的数字和空格

解:因为只要数字和空格,所以想办法将其余的不是数字和空格的删除,这里可以先用echo将字符串输出,然后用到tr里的选项“-c”对不是空格和字符的进行反选,用“-d”将反选到的非数字和空格的删除就OK。

重定向和管道

6、将PATH变量每个目录显示在独立的一行

重定向和管道


经过以上几个练习,对重定向和管道从了解到熟悉了吧,下去之后还可以多找些题练练手呦,这篇博客到这结束了,以后再写一些供参考。

原创文章,作者:M.Sun,如若转载,请注明出处:http://www.178linux.com/83667

(0)
M.SunM.Sun
上一篇 2017-08-04 21:56
下一篇 2017-08-05 10:53

相关推荐

  • date命令总结

    在linux中man手册页,对date -d 参数的的说明比较模糊,一下的举例,进一步说明: #-d –date=STRING display time described by STRING not 'now' 命令: date -d nex-day +%Y%m%d    //明天日期 d…

    Linux干货 2016-08-05
  • 任务计划

    所谓计划任务就是指某一个时间系统自动做一件事情如输入指令或者保存文件等等 计划任务分两种:一次性计划任务命令(at)和周期性计划任务命令(crontab)at的用法:如果当前时间为2017年6月6日 at 18:00 2017-06-6 w > /root/who.txt init 0 (输入ctrl+d结束编辑…

    Linux干货 2017-06-07
  • 魔术方法

    魔术方法 属性 含义 __name__ 类、函数、方法等的名字 __module__ 类定义所在的模块名 __class__ 对象或类所属的类 __bases__ 类的基类的元组,舒徐为他们在基类列表中出现的顺序 __doc__ 类、函数的文档字符串,如果没有定义则为None __mro__ 类的mro,class.mro()返回的结果保存在__mro__中…

    Linux干货 2017-11-21
  • 计算机之路及初识linux

    写在前面:     很抱歉,上周的事儿,拖到这周,也是个半成品,加班就不多说了,每个人都很忙,总要自己找时间。本计划这个周末好好补补,无奈身不由己,刚刚回来。    还好昨夜先起了个初稿,总算是有些东西可以交代给自己,想到马哥说的,完成远比完善重要,虽然来不及完善,先发出来吧,有了框架,至少知道自己做过什么。尽快排版吧…

    Linux干货 2016-12-05
  • Linux基础解析;echo;man;centos;runlevel;PS1;screen;shell 倒三角;date -d等命令—-fazion blog at22.July

    Linux基础解析 fazionlan blog in 178Linux.July 20nd. 内核、版本信息 # uname -a                 &n…

    Linux干货 2016-07-29
  • bash脚本之for循环和while循环及包管理

    一.概述 上一章剩余内容 压缩工具 cpio 复制从或到文件 cpio命令是通过重定向的方式将文件进行打包备份,还原恢复的工具,它可以解压以“.cpio”或者“.tar”结尾的文件。 cpio[选项] > 文件名或者设备名 cpio[选项] < 文件名或者设备名 选项 -o 将文件拷贝打包成文件或者将文件输出到设备上 -i解包,将打包文件解压或将…

    Linux干货 2016-08-24