IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 数据流重定向:标准输入<,标准输出>,标准错误输出2> -> 正文阅读

[Java知识库]数据流重定向:标准输入<,标准输出>,标准错误输出2>

数据流重定向

将某个命令执行后应该在屏幕上显示的数据,传输到其他地方,例如:文件或者设备–打印机

标准输入&标准输出&标准错误输出

将正确和错误的输出分别传输到不同的文件和设备需要用到的特殊字符:

标准输入stdin:代码0,使用<或<<

标准输出stdout:代码1,使用>或>>。仅存在>时,代表默认代码1

标准错误输出stderr:代码2,使用2>或2>>

>> 是追加内容

> 是覆盖原有内容

数据流重定向

执行命令后显示的信息

执行一个命令后会有2种信息在屏幕显示:

标准输出STDOUT,显示命令执行所返回的正确信息

标准错误输出STDEER,显示命令执行失败所返回的错误信息

[hadoop@node1 ~]$ find /home -name .bashrc
#STDOUT:正确信息,返回hadoop用户根目录下的.bashrc文件
/home/hadoop/.bashrc
#STDEER:错误信息hadoop用户没有权限访问test用户根目录下的.bashrc文件
find: ‘/home/test’: Permission denied
[hadoop@node1 ~]$ 

将正确和错误信息分别放入不同文件

#重定向>的文件不存在,系统会在当前目录自动创建
[hadoop@node1 ~]$ find /home -name .bashrc >> right 2>> error
#正常和错误信息都放入了指定的文件中,屏幕不返回任何信息
[hadoop@node1 ~]$ ll
total 8
drwxrwxrwx  2 root   root     6 Apr 11  2021 bin
-rw-rw-r--  1 hadoop hadoop  42 Feb 16 21:28 error
drwxr-xr-x 14 hadoop hadoop 207 Mar 26  2020 IdeaProjects
drwxr-xr-x  2 root   root     6 Apr 11  2021 jars
-rw-rw-r--  1 hadoop hadoop  21 Feb 16 21:28 right
[hadoop@node1 ~]$ cat error 
find: ‘/home/test’: Permission denied
[hadoop@node1 ~]$ cat right 
/home/hadoop/.bashrc

/dev/null垃圾桶黑洞设备

在知道会有错误信息的情况下,怎么故意不储存或显示错误信息?

/dev/null可以吃掉任何导向这个设备的信息

#丢弃错误的信息,屏幕上显示正确的信息
[hadoop@node1 ~]$ find /home -name .bashrc 2>> /dev/null
/home/hadoop/.bashrc

将正确和错误的信息写入一个文件

#错误,正确和错误信息交叉写入文件,会造成次序错乱,会生成文件,但是里面数据排序不对,并非原本在屏幕上打印的输出顺序
[hadoop@node1 ~]$ find /home -name .bashrc > right 2> right		
#正确
[hadoop@node1 ~]$ find /home -name .bashrc > right 2>&1		
#正确
[hadoop@node1 ~]$ find /home -name .bashrc &> right		
[hadoop@node1 ~]$ cat right 
/home/hadoop/.bashrc
find: ‘/home/test’: Permission denied

自定义错误信息

#让"error message"作为标准错误的格式输出
[hadoop@node1 ~]$ echo "error message" 1>&2
error message
[hadoop@node1 ~]$ echo "error message" 2> /dev/null 1>&2
#屏幕上没有输出"error message",说明"error message"已经作为标准错误输出放入了/dev/null

标准输入

<

将原本需要键盘输入的数据,改由文件内容来替换

[hadoop@node1 ~]$ cat error 
find: ‘/home/test’: Permission denied
#将error的内容覆盖的方式写入catfile
[hadoop@node1 ~]$ cat > catfile < error 
[hadoop@node1 ~]$ cat error 
find: ‘/home/test’: Permission denied
[hadoop@node1 ~]$ cat catfile 
find: ‘/home/test’: Permission denied
#将error的内容追加的方式写入catfile
[hadoop@node1 ~]$ cat >> catfile < error 
[hadoop@node1 ~]$ cat catfile 
find: ‘/home/test’: Permission denied
find: ‘/home/test’: Permission denied

搭配mail命令非常好用

<<

<<代表结束的输入字符,写程序的时候很好用

#不用使用ctrl+d也能结束cat的输入
[hadoop@node1 ~]$ cat >> catfile << "end" 
> 1
> 2
> end
[hadoop@node1 ~]$ cat catfile 
find: ‘/home/test’: Permission denied
find: ‘/home/test’: Permission denied
1
2
[hadoop@node1 ~]$ 

为什么要使用数据流重定向

  • 屏幕输出的信息很重要,要存下来
  • 后台执行中的程序,不希望他干扰屏幕的正常输出
  • 一些系统的计划任务命令(比如:写在/etc/crontab中的文件)的执行结果,希望存下来
  • 已知错误信息,想要丢掉 2> /dev/null
    • root收到系统crontab传来的错误信息,这是常见的错误,这个错误信息可以忽略
  • 错误信息和正确信息分别输出时
  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-02-19 01:00:55  更:2022-02-19 01:03:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 11:34:55-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码