linux 之管道命令与重定向
一、Linux重定向
重定向能够实现Linux命令的输入输出与文件之间重定向,以及实现将多个命令组合起来实现更加强大的命令。这部分涉及到的比较多的命令主要有:
涉及到的比较多的命令主要有:
- cat:连接文件
- sort:排序文本行
- uniq:忽略或者报告重复行
- wc:统计文件的行数、词数、字节数
- grep:打印匹配制定模式的行
- head:输出文件的头部
- tail:输出文件的尾部
- tee:从标准输入读,并往标准输出或者文件写
使用shell中默认使用文件描述符0,1,2分别代表标准输入、标准输出、标准错误。
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 之管道命令与重定向的更多相关文章
- linux shell 管道命令(pipe)使用及与shell重定向区别
管道命令操作符是:”|”,它仅能处理经由前面一个指令传出的正确输出信息,也就是 standard output 的信息,对于 stdandarderror 信息没有直接处理能力.然后,传递给下一个命令 ...
- Linux的管道命令
Linux的管道命令 管道命令(Pipe) 管道命令用"|"来表示,管道命令需要接收前一个命令的输出来进行操作,但不能处理前一个命令的错误. //选取界面:cut,grep cut ...
- Linux用管道命令对文件的移动
我的问题是这样的:我有一个文件夹,里面有大约有1000个文件,然后我想把这样的一部分文件给随机分成两部分,一部分含有100张,另外一部分含有剩下的所有的文件,这个时候如果是在Linux图形界面的话直接 ...
- Linux系统管道命令符
管道命令符“|”的作用是将前一个命令的标准输出作为后一个命令的标准输入,格式为“命令A | 命令B” 以下实例中,通过grep命令搜索关键字“/sbin/nologin”在/etc/passwd中查找 ...
- 每天学点Linux命令之Linux-Shell中的数据重定向与管道命令
在Linux shell中, 数据重定向使用 > < 符号,管道命令使用 | 符号链接前后两个命令. 具体区别如下: 数据重定向 1.(>): 左侧应该有标准输出 > 右侧只能 ...
- 谈谈Linux下的数据流重定向和管道命令
一.标准输入.标准输出.错误输出概述 1.标准输入(stdin)是指令数据的输入,代码为0,使用<或者<<,默认是键盘. 2.标准输出(stdout)是指令执行成功返回的结果,代码为 ...
- linux——(8)数据流重定向、管道命令
概念一:数据流重定向 数据流分输入流和输出流,还有一个标准错误流,负责管理出错信息,比如一般的命令的输出会输出到屏幕上,我们可以用重定向让他输入到某个文件内. 相关操作: 1,标准输入(stdin): ...
- Linux下的管道命令有这些:
Linux下的管道命令有这些: 选取命令:cat grep 排序命令:sort wc uniq 双向重定向:tee 字符转换命令: tr, col, join, paste, expand 切割命令: ...
- Linux下管道重定向使用以及Shell编程(操作系统)
实验名称:Linux的基本操作 实验目的: 1.了解管道和重定向 2.熟悉基本的Linux脚本的编写 实验环境:Ubuntu 12.4(32位,简体中文) 实验内容: 1.将当前用户目录下的文件清单输 ...
随机推荐
- Linux进阶之Linux中的标准输入输出
Linux中的标准输入输出 标准输入0 从键盘获得输入 /proc/self/fd/0 标准输出1 输出到屏幕(即控制台) /proc/self/fd/1 错误输出2 输出到屏幕(即 ...
- Jmeter(四十八) - 从入门到精通高级篇 - Jmeter监控服务器性能(详解教程)
1.简介 JMeter是一款压力.接口等等的测试工具,Jmeter也可以像loadrunner一样监控服务器CPU.内存等性能参数,用来监控服务器资源使用情况,不过需要安装一些插件.JMeter正常自 ...
- GO学习-(9) Go语言基础之切片
Go语言基础之切片 本文主要介绍Go语言中切片(slice)及它的基本使用. 引子 因为数组的长度是固定的并且数组长度属于类型的一部分,所以数组有很多的局限性. 例如: func arraySum(x ...
- GStreamer 1.18.4稳定的错误修复版本
GStreamer 1.18.4稳定的错误修复版本GStreamer团队宣布最喜欢的跨平台多媒体框架的稳定的1.18版本系列中的另一个错误修复版本!此版本仅包含错误修复和重要的安全修复程序,并且从1. ...
- 智能物联网(AIoT,2020年)(下)
智能物联网(AIoT,2020年)(下) 12工业物联网是AIoT在工业领域第一战场 工业物联网分为感知.决策.执行,OS与软件是大脑+神经 13工业场景下一步如何使用AIoT 不止工业物联网:用人工 ...
- TensorRT 7.2.1 开发概要(下)
TensorRT 7.2.1 开发概要(下) 1.2. Where Does TensorRT Fit? 一般来说,开发和部署深度学习模型的工作流要经过三个阶段. Phase 1 is trainin ...
- 数据、人工智能和传感器按COVID-19新冠流感排列
数据.人工智能和传感器按COVID-19新冠流感排列 Data, AI and sensors arrayed against COVID-19 各国政府.卫生保健专业人士和工业界争先恐后地应对Cov ...
- 开发平台支持Arm Cortex-M的微控制器上人工智能训练
开发平台支持Arm Cortex-M的微控制器上人工智能训练 Development platform enables AI training on Arm Cortex-M-based microc ...
- halcon——缺陷检测常用方法总结(光度立体)
引言 机器视觉中缺陷检测分为一下几种: blob+特征(官方示例surface_scratch.hdev) blob+差分+特征(官方示例pcb_inspection.hdev) 光度立体 特征训练 ...
- SpringBoot+SpringDataJpa快速上手(基本CRUD)
以及表结构和数据 依赖 <!-- 如果有SpringBoot启动器,就不加--> <parent> <groupId>org.springframework.boo ...