Linux数据流重定向与管道
数据流重定向简单来说就是把原本应该输出到某处(比如说屏幕)的数据,重定向其输出目的地,到其他的地方(比如文件)。
linux中的输入与输出:
标准输入(stdin):默认从键盘输入
标准输出(stdout):执行的正常结果信息,默认输出到屏幕
标准错误输出(stderr):执行的错误信息,默认输出到屏幕
那就让我们来体验下这三个鬼东西吧:
[fuwh@localhost 08:32 ~]$ ll <-- 标准输出,默认结果输出到屏幕
总用量 24
drwxrwxr-x. 2 fuwh fuwh 4096 7月 30 13:42 bin
drwxr-xr-x. 3 fuwh fuwh 4096 7月 26 12:04 data
drwxrwxr-x. 2 fuwh fuwh 4096 8月 3 20:34 stu
drwxrwxr-x. 3 fuwh fuwh 4096 7月 25 10:27 stu2
-rw-r--r--. 1 root root 2439 7月 26 11:57 stu2.tar.bz2
-rw-r--r--. 1 root root 165 7月 26 11:57 stu2.tar.gz
[fuwh@localhost 08:33 ~]$ ll dat <-- 标准错误输出,默认结果输出到屏幕
ls: 无法访问dat: 没有那个文件或目录
[fuwh@localhost 08:33 ~]$ cat name
cat: name: 没有那个文件或目录
[fuwh@localhost 08:33 ~]$ cat he
cat: he: 没有那个文件或目录
[fuwh@localhost 08:33 ~]$ cat > he <-- 标准输入,默认键盘
name
go
[fuwh@localhost 08:34 ~]$
输出或者错误输出重定向就是,我不想把这些信息输出到屏幕上了,我希望输出到文件里面之类的。
输入从定向就是我不希望从键盘输入,我希望用一个文件来作为输入之类的。
标准输入:代码为0,使用 < 或 <<
标准输出:代码为1,使用 > 或 >>
标准错误输出:代码为2,使用 2> 或 2>>
※>>或<<表示累加,其中>就是表示1>
下面我们就来试一下:
[fuwh@localhost 08:41 ~/stu]$ ll
总用量 0
[fuwh@localhost 08:41 ~/stu]$ ll ../
总用量 28
drwxrwxr-x. 2 fuwh fuwh 4096 7月 30 13:42 bin
drwxr-xr-x. 3 fuwh fuwh 4096 7月 26 12:04 data
-rw-rw-r--. 1 fuwh fuwh 8 8月 5 08:33 he
drwxrwxr-x. 2 fuwh fuwh 4096 8月 5 08:41 stu
drwxrwxr-x. 3 fuwh fuwh 4096 7月 25 10:27 stu2
-rw-r--r--. 1 root root 2439 7月 26 11:57 stu2.tar.bz2
-rw-r--r--. 1 root root 165 7月 26 11:57 stu2.tar.gz
[fuwh@localhost 08:42 ~/stu]$ ll ../ > home.txt <-- 标准输出重定向,重定向到一个文件
[fuwh@localhost 08:42 ~/stu]$ ll ../dat
ls: 无法访问../dat: 没有那个文件或目录
[fuwh@localhost 08:42 ~/stu]$ ll ../dat 2> err.txt <-- 标准错误输出重定向,重定向到一个文件
[fuwh@localhost 08:42 ~/stu]$
[fuwh@localhost 08:42 ~/stu]$ cat > c.txt
name
[fuwh@localhost 08:44 ~/stu]$ cat c.txt
name
age[fuwh@localhost 08:44 ~/stu]$ cat home.txt
总用量 28
drwxrwxr-x. 2 fuwh fuwh 4096 7月 30 13:42 bin
drwxr-xr-x. 3 fuwh fuwh 4096 7月 26 12:04 data
-rw-rw-r--. 1 fuwh fuwh 8 8月 5 08:33 he
drwxrwxr-x. 2 fuwh fuwh 4096 8月 5 08:42 stu
drwxrwxr-x. 3 fuwh fuwh 4096 7月 25 10:27 stu2
-rw-r--r--. 1 root root 2439 7月 26 11:57 stu2.tar.bz2
-rw-r--r--. 1 root root 165 7月 26 11:57 stu2.tar.gz
[fuwh@localhost 08:44 ~/stu]$ cat > c.txt < home.txt <-- 标准输入重定向,从文件输入
[fuwh@localhost 08:44 ~/stu]$ cat c.txt
总用量 28
drwxrwxr-x. 2 fuwh fuwh 4096 7月 30 13:42 bin
drwxr-xr-x. 3 fuwh fuwh 4096 7月 26 12:04 data
-rw-rw-r--. 1 fuwh fuwh 8 8月 5 08:33 he
drwxrwxr-x. 2 fuwh fuwh 4096 8月 5 08:42 stu
drwxrwxr-x. 3 fuwh fuwh 4096 7月 25 10:27 stu2
-rw-r--r--. 1 root root 2439 7月 26 11:57 stu2.tar.bz2
-rw-r--r--. 1 root root 165 7月 26 11:57 stu2.tar.gz
[fuwh@localhost 08:44 ~/stu]$
如果我们想让标准输入和标准错误输入都输出到一个文件,那又应该怎么操作呢?
那这时候需要使用一种特殊写法了
[fuwh@localhost 08:49 ~/stu]$ cat c.txt a.txt
总用量 28
drwxrwxr-x. 2 fuwh fuwh 4096 7月 30 13:42 bin
drwxr-xr-x. 3 fuwh fuwh 4096 7月 26 12:04 data
-rw-rw-r--. 1 fuwh fuwh 8 8月 5 08:33 he
drwxrwxr-x. 2 fuwh fuwh 4096 8月 5 08:42 stu
drwxrwxr-x. 3 fuwh fuwh 4096 7月 25 10:27 stu2
-rw-r--r--. 1 root root 2439 7月 26 11:57 stu2.tar.bz2
-rw-r--r--. 1 root root 165 7月 26 11:57 stu2.tar.gz
cat: a.txt: 没有那个文件或目录
[fuwh@localhost 08:49 ~/stu]$ cat c.txt a.txt > jt.txt 2>&1
[fuwh@localhost 08:50 ~/stu]$ cat jt.txt
总用量 28
drwxrwxr-x. 2 fuwh fuwh 4096 7月 30 13:42 bin
drwxr-xr-x. 3 fuwh fuwh 4096 7月 26 12:04 data
-rw-rw-r--. 1 fuwh fuwh 8 8月 5 08:33 he
drwxrwxr-x. 2 fuwh fuwh 4096 8月 5 08:42 stu
drwxrwxr-x. 3 fuwh fuwh 4096 7月 25 10:27 stu2
-rw-r--r--. 1 root root 2439 7月 26 11:57 stu2.tar.bz2
-rw-r--r--. 1 root root 165 7月 26 11:57 stu2.tar.gz
cat: a.txt: 没有那个文件或目录
[fuwh@localhost 08:50 ~/stu]$ cat c.txt a.txt &> jt2.txt
[fuwh@localhost 08:51 ~/stu]$ cat jt2.txt
总用量 28
drwxrwxr-x. 2 fuwh fuwh 4096 7月 30 13:42 bin
drwxr-xr-x. 3 fuwh fuwh 4096 7月 26 12:04 data
-rw-rw-r--. 1 fuwh fuwh 8 8月 5 08:33 he
drwxrwxr-x. 2 fuwh fuwh 4096 8月 5 08:42 stu
drwxrwxr-x. 3 fuwh fuwh 4096 7月 25 10:27 stu2
-rw-r--r--. 1 root root 2439 7月 26 11:57 stu2.tar.bz2
-rw-r--r--. 1 root root 165 7月 26 11:57 stu2.tar.gz
cat: a.txt: 没有那个文件或目录
[fuwh@localhost 08:51 ~/stu]$
但是,试想,如果有时候的错误信息,我们既不想输出到屏幕上,也不想保存到文件中去,那应该怎么办呢?
这个时候,就需要使用一个垃圾桶黑洞的装置了。
[fuwh@localhost 08:53 ~/stu]$ ll
总用量 20
-rw-rw-r--. 1 fuwh fuwh 367 8月 5 08:44 c.txt
-rw-rw-r--. 1 fuwh fuwh 52 8月 5 08:42 err.txt
-rw-rw-r--. 1 fuwh fuwh 367 8月 5 08:42 home.txt
-rw-rw-r--. 1 fuwh fuwh 407 8月 5 08:51 jt2.txt
-rw-rw-r--. 1 fuwh fuwh 407 8月 5 08:50 jt.txt
[fuwh@localhost 08:54 ~/stu]$ ll > /dev/null
[fuwh@localhost 08:54 ~/stu]$ ll
总用量 20
-rw-rw-r--. 1 fuwh fuwh 367 8月 5 08:44 c.txt
-rw-rw-r--. 1 fuwh fuwh 52 8月 5 08:42 err.txt
-rw-rw-r--. 1 fuwh fuwh 367 8月 5 08:42 home.txt
-rw-rw-r--. 1 fuwh fuwh 407 8月 5 08:51 jt2.txt
-rw-rw-r--. 1 fuwh fuwh 407 8月 5 08:50 jt.txt
[fuwh@localhost 08:54 ~/stu]$
管道:|
管道命令就是将上一个命令的标准输出作为下一个命令的标准输入
[fuwh@localhost 08:57 ~/stu]$ ll
总用量 0
[fuwh@localhost 08:57 ~/stu]$ touch a.txt
[fuwh@localhost 08:57 ~/stu]$ touch ab.txt
[fuwh@localhost 08:57 ~/stu]$ ll
总用量 0
-rw-rw-r--. 1 fuwh fuwh 0 8月 5 08:57 ab.txt
-rw-rw-r--. 1 fuwh fuwh 0 8月 5 08:57 a.txt
[fuwh@localhost 08:57 ~/stu]$ ll | cat > c.txt
[fuwh@localhost 08:57 ~/stu]$ ll
总用量 4
-rw-rw-r--. 1 fuwh fuwh 0 8月 5 08:57 ab.txt
-rw-rw-r--. 1 fuwh fuwh 0 8月 5 08:57 a.txt
-rw-rw-r--. 1 fuwh fuwh 154 8月 5 08:57 c.txt[fuwh@localhost 08:58 ~/stu]$ cat c.txt
总用量 0
-rw-rw-r--. 1 fuwh fuwh 0 8月 5 08:57 ab.txt
-rw-rw-r--. 1 fuwh fuwh 0 8月 5 08:57 a.txt
-rw-rw-r--. 1 fuwh fuwh 0 8月 5 08:57 c.txt
[fuwh@localhost 08:58 ~/stu]$
[fuwh@localhost 08:59 ~/stu]$ ll a.txt d.txt | cat > f.txt
ls: 无法访问d.txt: 没有那个文件或目录
可以发现,这时候标准错误输出是没有被管道传送的。
Linux数据流重定向与管道的更多相关文章
- 十句话教你学会Linux数据流重定向
		
1.看到重定向一下子就想起了web里面的redirect,没错,但是Linux数据流重定向的作用不是跳到另一个网页,而是用来存储重要的屏幕信息.将不必要的屏幕信息输出到文件里或者“黑洞”里.将错误信息 ...
 - 谈谈Linux下的数据流重定向和管道命令
		
一.标准输入.标准输出.错误输出概述 1.标准输入(stdin)是指令数据的输入,代码为0,使用<或者<<,默认是键盘. 2.标准输出(stdout)是指令执行成功返回的结果,代码为 ...
 - linux——(8)数据流重定向、管道命令
		
概念一:数据流重定向 数据流分输入流和输出流,还有一个标准错误流,负责管理出错信息,比如一般的命令的输出会输出到屏幕上,我们可以用重定向让他输入到某个文件内. 相关操作: 1,标准输入(stdin): ...
 - Linux Shell 重定向与管道【转帖】
		
by 程默 在了解重定向之前,我们先来看看linux 的文件描述符. linux文件描述符:可以理解为linux跟踪打开文件,而分配的一个数字,这个数字有点类似c语言操作文件时候的句柄,通过句柄就可以 ...
 - Linux 数据流重定向
		
1.三种数据流重定向1)标准输入(stdin):代码为0,使用0<或0<<,其中代码0可以省略2)标准输出(stdout):代码为1,使用1>或1>>,其中代码1可 ...
 - Linux06--Shell程序设计02  数据流重定向与管道
		
包含3种数据流: •标准输入(stdin):代码为0,符号为<或<<; •标准输出(stdout):代码为1,符号为>或>>; •标准错误输出(stderr):代码 ...
 - Linux的重定向与管道
		
(1).输出重定向 定义:将命令的标准输出结果保存到指定的文件中,而不是直接显示在显示器上. 输出重定向使用>和>>操作符. 语法:cmd > filename,表示将标准输出 ...
 - Linux中重定向及管道
		
1重定向1.1 重定向符号 > 输出重定向到一个文件或设备 覆盖原来的文件 >! 输出重定向到一个文件或设备 强制覆盖原来的 ...
 - Linux IO重定向和管道
		
计算机组成部分: 由io . 控制器.计算器.存储器组成 IO: input output 计算机里面通过终端窗口实现输入和输出,键盘鼠标屏幕这些只是手段,真正完成输入输出的是终端窗口 标准输入.出. ...
 
随机推荐
- location和location.href跳转url的区别
			
使用 location = url 跳转,如果本地之前已经载入过该页面并有缓存,那么会直接读取本地的缓存,缓存机制是由本地浏览器设置决定的.状态码为: 200 OK (from cache) . ...
 - 1.由浅入深解析 SimpleDateFormat
			
一.SimpleDateFormat简介 SimpleDateFormat 是一个以国别敏感的方式格式化和分析数据的具体类. 它允许格式化 (date -> text).语法分析 (text - ...
 - ReentrantLock 与 AQS 源码分析
			
ReentrantLock 与 AQS 源码分析 1. 基本结构 重入锁 ReetrantLock,JDK 1.5新增的类,作用与synchronized关键字相当,但比synchronized ...
 - 课堂作业 泛型类-Bag
			
自定义泛型类Bag 一.具体代码: 代码连接 二.伪代码: 1.思路: 老师讲完后我的想法是要做出一个类似于List的Bag,首先它的本身是又数组构成的并且是可自动增加长度的,然后实现一些基本的操作, ...
 - Linux下进程间通信--共享内存:最快的进程间通信方式
			
共享内存: 一.概念: 共享内存可以说是最有用的进程间通信方式,也是最快的IPC形式.两个不同进程A.B共享内存的意思是,同一块物理内存被映射到进程A.B各自的进程地址空间. 进程A可以即时看到进程B ...
 - 20145237 实验一 逆向与Bof基础
			
20145237 实验一 逆向与Bof基础 1.直接修改程序机器指令,改变程序执行流程 此次实验是下载老师传给我们的一个名为pwn1的文件. 首先,用 objdump -d pwn1 对pwn1进行反 ...
 - 如何书写高效的css样式
			
如何书写高效的css样式? 有以下四个关键要素: 1.高效的css 2.可维护的css 3.组件化的css 4.hack-free css 书写高效的css: 1.使用外联样式替代行间样式或内嵌样式 ...
 - raid5 / raid5e / raid5ee的性能对比及其数据恢复原理
			
RAID 5 是一种存储性能.数据安全和存储成本兼顾的存储解决方案. RAID 5可以理解为是RAID 0和RAID 1的折中方案.RAID 5可以为系统提供数据安全保障,但保障程度要比Mirror低 ...
 - build.gradle & gradle.properties
			
一.build.gradle buildscript { ext { springBootVersion = '1.5.9.RELEASE' } repositories { maven { cred ...
 - zuul入门(3)开发zuul的过滤器
			
1.编写Zuul过滤器(Java&Groovy) 理解过滤器类型和请求生命周期后,我们来编写一个Zuul过滤器.编写Zuul的过滤器非常简单,我们只需继承抽象类ZuulFilter,然后实现几 ...