一、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. SUSE12 操作系统安装

    今天开发同事需要一个客户的SUSE环境,原来没有安装过这个操作系统,网络配置方面有些问题见下一篇 镜像:SLE-12-SP3-Server-DVD-x86_64-GM-DVD1.iso 安装过程: 选 ...

  2. 报错: Uncaught TypeError: Cannot read property 'prototype' of undefined(Day_43)

    报错原因 引入的js顺序错误,elementUI需要依赖于Vue,调整顺序即可. 调整后

  3. js闭包和包装类

    闭包 内部函数被返回到外部,函数本身保留了父函数的AO,即使父元素执行完了,取消对AO的引用,但依旧被子函数保留下来了,就形成了闭包. 闭包会导致原有作用域链不释放,造成内存泄漏. 作用 实现公有变量 ...

  4. NVIDIA TensorRT:可编程推理加速器

    NVIDIA TensorRT:可编程推理加速器 一.概述 NVIDIA TensorRT是一个用于高性能深度学习推理的SDK.它包括一个深度学习推理优化器和运行时间,为深度学习推理应用程序提供低延迟 ...

  5. 英特尔内存革新助平安云 Redis 云服务降本增效

    英特尔内存革新助平安云 Redis 云服务降本增效 英特尔 傲腾 数据中心级持久内存的引入,为平安云的降本增效开启了一条新的道路.通过对平安云 Redis 数据库产品的支持,用户能享受到性能优异且价格 ...

  6. 嵌入式Linux设备驱动程序:发现硬件配置

    嵌入式Linux设备驱动程序:发现硬件配置 Embedded Linux device drivers: Discovering the hardware configuration Interfac ...

  7. 用Taro写一个微信小程序(三)—— 配置dva

    一.关于dva dva 首先是一个基于 redux 和 redux-saga 的数据流方案,然后为了简化开发体验,dva 还额外内置了 react-router 和 fetch,所以也可以理解为一个轻 ...

  8. springcloud-config配置异常Cannot clone or checkout repository 和 Authentication is required but no CredentialsProvider has been registered解决过程

    Cannot clone or checkout repository, 出现这个异常,通过检查是因为自己本地没有配置 ssh,所以配置了, https://blog.csdn.net/zy_2818 ...

  9. Java基础_循环嵌套_打印乘法口诀、菱形,各种图形,计算二元一次和三元一次方程组_7

    循环嵌套 打印乘法口诀 for(int j=1;j<=9;j++){ for(int i=1;i<=j;i++){ System.out.print(i+"*"+j+& ...

  10. Qt项目ui文件中新添加的控件在代码中不识别的问题解决

    今天在学Qt框架的信号槽,然后发现在ui中加的控件,通过ui-> 找不到,没有识别,于是上网查找了一下问题 解决方法 添加ui控件后,执行程序,退出程序,将debug目录下的ui_XXXX.h拷 ...