重定向、管道——Linux基本命令(9)

1.     输出重定向

Linux默认输入是键盘,输出是显示器。可以用重定向来改变这些设置。比如用wc命令的时候本来是要手动输入一篇文字来计算字符数的,可以直接把一个已经写好的文件用‘<’指向这条命令,就直接可以统计这个文件的字符数等了。

 

STDOUT(标准输出)和STDERR(标准错误)可以被重定向到文件

命令 操作符号 文件名

支持的操作符号包括:

>  STDOUT重定向到文件

如图,etc下有passwd文件,app下没有passwd文件,将他们两个重定向导出到文件ls.txt中,回车之后只剩下错误的那条。然后我们查看ls.txt文件,发现正确的标准输出在里面

重定向、管道——Linux基本命令(9)

 

2> STDERR重定向到文件

同样,使用2>则将正确的显示出来,将错误输出到ls.txt文件了。

重定向、管道——Linux基本命令(9)

 

&> 把所有输出重定向到文件(或者> 2>&1也可以)

如图,两种方法将正确错误都输入进文件了

重定向、管道——Linux基本命令(9)


值得注意的是,使用> 会默认将文件内容覆盖。

使用set -C 禁止将内容覆盖已有文件,但可追加

>>  在原有内容的基础上,追加内容

>|
file
强制覆盖

set +C 允许覆盖

重定向、管道——Linux基本命令(9)

  

也可以一次分别将输出和错误各自定向至不同位置

重定向、管道——Linux基本命令(9)

如图,分别定向到right.txterror.txt文件中。

 

2.tr转换和删除

tr
[OPTION]… SET1 [SET2]

重定向、管道——Linux基本命令(9)

重定向、管道——Linux基本命令(9)

(先输入条件,之后回车可以输入要想转换的内容,输入一行输出一行,直到Ctrl+C退出)

 

也可以使用重定向功能,不需要输入,直接输入一个文件,就可以被替换了

重定向、管道——Linux基本命令(9)

如图,不需要将.bashrc的内容重新打一遍,就可以输出了.bashrc内容。(这种操作不会改变.bashrc的内容。)

 

       -c C
–complement
取字符集的补集(就是不删除什么)

如图,将除了c以外的字符都换成a

重定向、管道——Linux基本命令(9)


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

如图,将文件中所有的abc都删除了

重定向、管道——Linux基本命令(9)

 

-s  –squeeze-repeats 把连续重复的字符删除成一个字符

重定向、管道——Linux基本命令(9)

如图,将重复的abc变成一个,其余重复的字母不动。

 

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

 

对应的字符:

[:alnum:]:字母和数字

[:alpha:]:字母

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

[:digit:]:数字

[:graph:]:图形字符

[:lower:]:小写字母

[:print:]:可打印字符

[:punct:]:标点符号

[:space:]:空白字符

[:upper:]:大写字母

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

 

3.从文件中导入STDIN

同样的,我们可以使用<来重定向标准输入STDIN

某些命令能够接受从文件中导入的STDIN

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

    tr –d abc < /etc/fstab  该命令可以删除fstab文件中的所有abc中任意字符(这两个功能上面已经使用过了)

 

     cat
> file
可以写入内容到文件中

    重定向、管道——Linux基本命令(9)

ctrl+d或者 ctrl+c离开,可以使用文件来代替键盘的输入

 

<< 终止词

可以随意编辑,直到某一行只有那个终止词,将退出编辑,将上面的内容都发送给文件。

  重定向、管道——Linux基本命令(9)

 如图,直到最后一行为!时,自动退出。

 

       Cat > 
filea <  fileb

      重定向、管道——Linux基本命令(9)

       如图,将text.txt中的内容写入到file.txt

 

       同样,我们也可以通过这种方式导入文件到邮件里并发送。

       (发送邮件的代码为 mail -s “邮件名想要发送给的用户,然后输入内容后使用Ctrl+d退出)

        重定向、管道——Linux基本命令(9)

       现在我们将text.txt这个文件写入邮件并发送:

  重定向、管道——Linux基本命令(9)

       如图,登陆magedu用户,输入mail查看邮件,发现收到了这封内容是text.txt的信。(看完之后输入quit退出)

 

4.管道

管道(使用符号“|”表示)用来连接命令

重定向、管道——Linux基本命令(9)

如图,将1+2传给计算器,得出结果

 

命令1 | 命令2 | 命令3 |   将命令1STDOUT发送给命令2STDIN,命令2STDOUT发送到命令3STDIN

重定向、管道——Linux基本命令(9)

如图,将|tr结合使用,将所有重复的空格变成一个空格。

然后继续使用|grep命令(这个命令以后会讲到)查询/boot那行

重定向、管道——Linux基本命令(9)


| 只能将正确结果重定向给下一条命令

使用 2>&1 | |&  可以将全部结果重定向

 

5.重定向到多个目标tee

       命令1 | tee [-a ] 文件名 | 命令2

把命令1STDOUT保存在文件中,做为命令2的输入

-a 追加

      使用:

            保存不同阶段的输出

             复杂管道的故障排除

             同时查看和记录输出

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

(0)
T_endlessT_endless
上一篇 2017-07-20
下一篇 2017-07-20

相关推荐

  • 程序包管理之yum:yum源\库配置以及源码编译安装

    程序包管理之yum yum概念 什么是yum 由yellow dog这一发行版的开发者Terra Soft研发。 使用rpm命令安装软件包时,解决不了依赖关系,就会很麻烦,使用yum可以自行解决依赖关系。 删除某个安装包,如果是用rpm删除,就卸载掉某个依赖关系从而导致其他软件包不能使用。 yum特点 可同时配置多个软件仓库 简洁的配置文件/etc/yum.…

    Linux干货 2016-11-22
  • 程序包管理之制作yum本地源

    Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。 使用本地yum源有两种方式:第一直接使用光盘镜像,不过此方…

    Linux干货 2016-08-24
  • 笔记–8.4 文本处理工具,正则表达式

    cat 查看文本文件 命令功能: cat主要有三大功能: 1.一次显示整个文件:cat filename 2.从键盘创建一个文件:cat > filename 只能创建新文件,不能编辑已有文件. 3.将几个文件合并为一个文件:cat file1 file2 > fil…

    Linux干货 2016-08-07
  • 公钥和私钥的原理

          今天上课老师讲到公钥和秘钥,模模糊糊听了个大概,始终还是不能够详细的理解公钥怎么会事?私钥怎么会事?工作原理是怎么的?今天在网上找了半天,通过查看大家对这个密钥对的理解,总算弄清楚了,咱就把我的心得写出来给大家对密钥对有疑问的同志们看看。      公钥和私钥就是俗称…

    Linux干货 2016-11-30
  • 使用monit搭建一个监控系统

     上周用monit搭建或者说定制了一个监控系统,来监控服务器发生事情。当然了主要是监控异常,因为我们的产品属于服务器类型,很多进程都daemon,要不停的运行。我们搭建监控目的不过是出现问题能够及时的知道,平时可从web UI上看到整个系统的状况,同时它本身要轻量级,不要影响性能。当然了类似的产品很多了,比如Ganglia,我在老科长波哥曾经搭建过…

    Linux干货 2015-02-15
  • 8.3_Linux习题和作业

    课堂习题 1.当用户xiaoming对/testdir 目录无执行权限时,意味着无法做哪些操作? 答:不能cd进该目录 2.当用户xiaoqiang对/testdir 目录无读权限时,意味着无法做哪些操作? 答:不能查看目录内的文件列表,不能cd,也不能查看目录里面文件的元数据 3.当用户wangcai 对/testdir 目录无写权限时,该目录下的只读文件…

    Linux干货 2016-08-04