一、Linux重定向

重定向能够实现Linux命令的输入输出与文件之间重定向,以及实现将多个命令组合起来实现更加强大的命令。这部分涉及到的比较多的命令主要有:

涉及到的比较多的命令主要有:

  • cat:连接文件
  • sort:排序文本行
  • uniq:忽略或者报告重复行
  • wc:统计文件的行数、词数、字节数
  • grep:打印匹配制定模式的行
  • head:输出文件的头部
  • tail:输出文件的尾部
  • tee:从标准输入读,并往标准输出或者文件写

使用shell中默认使用文件描述符012分别代表标准输入、标准输出、标准错误

1.  >与>>的含义

使用>可以将本来出现在屏幕的标准输出信息重定向到一个文件中。

用>>可以在实现重定向时不覆盖原有内容,而是在文件末尾追加内容。

两个命令都是如果文件不存在则创建文件

2.屏蔽不想看到的信息

Linux中有一个特殊的文件/dev/null,这个文件叫做比特桶(bit bucket),可以接受输入信息但是什么都不做。因此要抑制命令的输出信息,只需要如下操作:

  ls /usr/ > /dev/null    将ls /usr/的标准输出重定向到比特桶

3.举栗

输出重定向      
类型 符号 功能 举栗
标准输出重定向

命令>文件或

命令>>文件

以覆盖或追加的方式,把命令的正确输出内容输出到指定的文件中,

命令的错误输出打印到终端中

ls -l /usr/tmp >dir  重定向覆盖

ls -l /usr/tmp >>dir  重定向追加

标准错误输出重定向

错误命令 2>文件或

错误命令 2>>文件

以覆盖或追加的方式,把命令的错误输出内容输出到指定的文件中,

命令的正确输出打印到终端中

ls /usr/tmp 2>err.file 错误输出到err.file
标准输出与标准错误输出重定向

命令 >文件 2>&1或

命令 >>文件 2>&1

以覆盖或追加的方式,把命令的正确输出或错误输出内容输出到指定的文件中。

ls /usr/tmp >output.file 2>&1  错误和输出重定向到output

命令 &>文件 或

命令 &>>文件

以覆盖或追加的方式,把命令的正确输出或错误输出内容输出到指定的文件中。

ls /usr/tmp &>output.file  错误和输出重定向到output
命令 >>文件1 2>文件2

以追加的方式,把命令的正确输出内容输出到文件1中,以覆盖的方式,把命令的错误输出内容输出到文件2。

 

其他例子:

ls /usr/tmp 2>&1 >output.file  输出重定向到output,错误输出到屏幕

  wc </etc/passwd  输入重定向,<其实是0<的简写

echo "" > test.log  或>test.log,快速清空文件

二、管道

管道是一种两个进程间进行单向通信的机制,它表现出来的形式将前面每一个进程的输出(stdout)直接作为下一个进程的输入(stdin),如果要进行双工通信,需要建立两个管道。

因为管道传递数据的单向性,管道又称为半双工管道。

管道命令的特性:

1、管道命令使用|作为界定符号

2、管道命令只能处理前一个命令的standard output,对于standard error output会予以忽略。

3、管道命令必须要能够接受来自前一个命令的数据成为standard input继续处理才行,比如less,more,head,tail...,而ls,cp,mv不会接受standard input的命令,所以他们就不是管道命令了。

举栗:

1.uniq与sort命令:uniq命令排除重复的行,sort命令将文本行排序。

  [root@test]#cat ls.txt 

  aaaaaaaaaaaaaaaaaaaaaaaa

  bbbbbbbbbbbbbbbbbbbbbbbb

  aaaaaaaaaaaaaaaaaaaaaaaa  

  [root@test]#cat ls.txt |sort|uniq

  aaaaaaaaaaaaaaaaaaaaaaaa

  bbbbbbbbbbbbbbbbbbbbbbbb

我们还可以对uniq命令加上-d选项来查看重复的行,如下:

  [root@test]#cat ls |sort|uniq -d

  aaaaaaaaaaaaaaaaaaaaaaaa

2.  wc命令:统计文本的行数、单词书和字节数

  [root@test]#ls /bin /usr/bin/ | sort | uniq | wc

使用wc -l参数统计代码的行数:

  [root@test]#find cn/ -name "*.php" |xargs cat|wc -l

上面这个例子统计了cn目录下所有php文件的行数之和。

3.grep命令:用来查找匹配的模式,并且打印包含该模式的行:

  [root@test]#ls /bin /usr/bin/ | sort | uniq | grep zip

在/bin和/usr/bin目录下找出名字带有zip的程序,并且打印这些程序的名字。

4.head和tail命令:head查看文件或者文本的前面部分,tail查看文件或者文本的末尾部分。二者都可以接收-n选项,表示显示的行数。

  [root@test]#ls /bin/ | head -n 5

linux 之管道命令与重定向的更多相关文章

  1. linux shell 管道命令(pipe)使用及与shell重定向区别

    管道命令操作符是:”|”,它仅能处理经由前面一个指令传出的正确输出信息,也就是 standard output 的信息,对于 stdandarderror 信息没有直接处理能力.然后,传递给下一个命令 ...

  2. Linux的管道命令

    Linux的管道命令 管道命令(Pipe) 管道命令用"|"来表示,管道命令需要接收前一个命令的输出来进行操作,但不能处理前一个命令的错误. //选取界面:cut,grep cut ...

  3. Linux用管道命令对文件的移动

    我的问题是这样的:我有一个文件夹,里面有大约有1000个文件,然后我想把这样的一部分文件给随机分成两部分,一部分含有100张,另外一部分含有剩下的所有的文件,这个时候如果是在Linux图形界面的话直接 ...

  4. Linux系统管道命令符

    管道命令符“|”的作用是将前一个命令的标准输出作为后一个命令的标准输入,格式为“命令A | 命令B” 以下实例中,通过grep命令搜索关键字“/sbin/nologin”在/etc/passwd中查找 ...

  5. 每天学点Linux命令之Linux-Shell中的数据重定向与管道命令

    在Linux shell中, 数据重定向使用 > < 符号,管道命令使用 | 符号链接前后两个命令. 具体区别如下: 数据重定向 1.(>): 左侧应该有标准输出 > 右侧只能 ...

  6. 谈谈Linux下的数据流重定向和管道命令

    一.标准输入.标准输出.错误输出概述 1.标准输入(stdin)是指令数据的输入,代码为0,使用<或者<<,默认是键盘. 2.标准输出(stdout)是指令执行成功返回的结果,代码为 ...

  7. linux——(8)数据流重定向、管道命令

    概念一:数据流重定向 数据流分输入流和输出流,还有一个标准错误流,负责管理出错信息,比如一般的命令的输出会输出到屏幕上,我们可以用重定向让他输入到某个文件内. 相关操作: 1,标准输入(stdin): ...

  8. Linux下的管道命令有这些:

    Linux下的管道命令有这些: 选取命令:cat grep 排序命令:sort wc uniq 双向重定向:tee 字符转换命令: tr, col, join, paste, expand 切割命令: ...

  9. Linux下管道重定向使用以及Shell编程(操作系统)

    实验名称:Linux的基本操作 实验目的: 1.了解管道和重定向 2.熟悉基本的Linux脚本的编写 实验环境:Ubuntu 12.4(32位,简体中文) 实验内容: 1.将当前用户目录下的文件清单输 ...

随机推荐

  1. 把采集到的数据发送到一个Google Docs或者Google Form上 这个网站提供了参考和例子

    把采集到的数据发送到一个Google Docs或者Google Form上这个网站提供了参考和例子 http://www.instructables.com/id/Post-to-Google-Doc ...

  2. CentOS 6.5新增加硬盘挂载并实现开机自动挂载

    Centos7.x请参考:https://www.cnblogs.com/himismad/p/7851548.html 在内网主机Centos 6.5新增一个50G硬盘 (搭建在CAS服务器,直接新 ...

  3. JAVA基础语法-day02

    五.变量.常量.作用域 静态量(类变量)只能写在类中,不能在外面,用static修饰. final修饰的变量为常量. 六.运算符 Math类是一个工具类,用于复杂数学运算,它的构造器被定义成priva ...

  4. 微信小程序setdata修改数组或对象

    1.this.setdata修改数组的固定一项的值 changeItemInArr: function() { this.setData({ 'arr[0].text':'changed data' ...

  5. openresty 学习笔记二:获取请求数据

    openresty 学习笔记二:获取请求数据 openresty 获取POST或者GET的请求参数.这个是要用openresty 做接口必须要做的事情.这里分几种类型:GET,POST(urlenco ...

  6. 昇腾AI 软硬件全栈平台

    昇腾AI 软硬件全栈平台

  7. TVM性能评估分析(四)

    TVM性能评估分析(四) Figure 1.  Efficient Privacy-Preserving ML Using TVM Figure 2.  Motivation: Privacy-Pre ...

  8. MPC算法

    MPC算法 一.    引言 在工程技术方面,MPC全称可指Model Predictive Control模型预测控制(又称RHC, Receding Horizon  ). 模型预测控制算法 一种 ...

  9. 整理AI性能指标

    整理AI性能指标 Sorting out AI performance metrics 推理性能的最佳衡量标准是什么? 在人工智能加速器的世界里,对于给定的算法,芯片的性能经常以每秒万亿次的运算量(T ...

  10. jmeter链接mysql数据库

    一.下载与MySQL对应的jar包 1.1.查询MySQL的版本, 命令语句 :SELECT VERSION(); 1.2.MySQL官网下载jar包 ,https://downloads.mysql ...