linux错误输出重定向标准输出到文件夹,Linux标准输入输出与重定向详解|果断收藏...

Linux标准输出与错误输出重定向详解
本文详细介绍了Linux中的标准输入、输出和错误输出,以及如何通过重定向操作符>``, `>>`, `2>`, `2>>`, `2>&1`, `&>`来改变它们的方向。通过实例演示了如何将输出重定向到文件,追加内容,以及如何同时处理标准输出和错误输出。还提到了使用`/dev/null`过滤输出和`/dev/zero`创建指定长度文件的应用。" 109538467,9841367,Java实现TCP-C/S通信与UDP聊天,"['Java', 'TCP通信', 'UDP通信', '网络协议', '聊天应用开发']

6eccfef81aa4

重定向分类

linux中的>、>>、、2>>、2>&1、&>、&

为了更好的理解这个问题,我们需要追本溯源。

简单了解下标准输入输出

执行一个shell命令行时通常会自动打开三个标准文件

(1) 、标准输入文件(stdin)

通常对应终端的键盘。

(2)、标准输出文件(stdout)。

(3)、标准错误输出文件(stderr)。

(2)和(3)这两个文件都对应终端的屏幕。

进程将从标准输入文件中得到输入数据。

将正常输出数据输出到标准输出文件[显示器]。

将错误信息送到标准错误文件中[显示器]。

下图所示:

0、1、2表示一个文件描述符

6eccfef81aa4

6eccfef81aa4

但是,有时候我们不想把一些进程处理后信息输出到显示器。

这时我们就引出了重定向。

重定向目的

改变标准输入/输出的方向

三种重定向:

1、重定向标准输出,包括两种。

(1)、>(覆盖),等价1>

将命令执行的结果输出到指定文件,非显示器。

(2) 、>>(追加),等价1>>

将命令执行的结果追加到指定文件,非显示器。

2、 重定向标准输入,包括两种。

(1) 、<

将命令中接收的输入途径,由键盘改为指定文件。

(2) 、<

命令序列传递到一个交互程序或者命令中。

3、 重定向标准错误,包括两种。

(1) 、2>(覆盖)

将命令执行的结果输出到指定文件。

(2) 、2>>(追加)

将命令执行的结果追加到指定文件。

补充说明

1、重定向标准输出和重定向标准错误到同一个文件中

有以下的几种方式

(1) 、2>&1

(2) 、>&

(3) 、&>

2、 两个特殊文件

(1) 、/dev/nul

过滤标准错误信息

意思就是不想显示结果就输出到这里面。

(2) 、/dev/zero

创建指定长度的文件

案例介绍

案例1:

测试> and >>

echo "使用>输出到文件shellFile">shellFile.txt

echo "使用>>追加内容到shellFile">>shellFile.txt

echo "使用>覆盖全部内容">shellFile.txt

//清空文件

>shellFile.txt

6eccfef81aa4

案例2:

测试< and <<

测试<

echo -e "123456\n123456">passwd.txt

useradd demo

//从文件中读取密码

passwd demo < passwd.txt

6eccfef81aa4

测试<<

//注意EOF结束标志

[root@kingdom stdin_out_err]# passwd demo << EOF

> abcdef

> abcdef

> EOF

6eccfef81aa4

案例3:

测试2> and 2>>

//查看当前目录的文件

[root@kingdom stdin_out_err]# ll

total 4

-rw-r--r-- 1 root root 14 Jan 22 16:25 passwd.txt

-rw-r--r-- 1 root root 0 Jan 22 16:19 shellFile.txt

//查看一条没有的文件记录,将错误信息输出到errFile.txt

[root@kingdom stdin_out_err]# ll noFile.txt 2> errFile.txt

[root@kingdom stdin_out_err]# cat errFile.txt

ls: cannot access noFile.txt: No such file or directory

//追加

[root@kingdom stdin_out_err]# ll noFile.txt 2>> errFile.txt

[root@kingdom stdin_out_err]# cat errFile.txt

ls: cannot access noFile.txt: No such file or directory

ls: cannot access noFile.txt: No such file or directory

6eccfef81aa4

案例4:

测试重定向标准输出和重定向标准错误到同一个文件中

(1)、>&

[root@kingdom stdin_out_err]# ll

total 8

-rw-r--r-- 1 root root 57 Jan 22 16:36 errFile.txt

-rw-r--r-- 1 root root 14 Jan 22 16:25 passwd.txt

-rw-r--r-- 1 root root 0 Jan 22 16:19 shellFile.txt

//查看两个文件,passwd.txt存在,passwd1.txt不存在

[root@kingdom stdin_out_err]# ll passwd.txt passwd1.txt &> one.txt

//查看输出,一条成功,一条错误

[root@kingdom stdin_out_err]# cat one.txt

ls: cannot access passwd1.txt: No such file or directory

-rw-r--r-- 1 root root 14 Jan 22 16:25 passwd.txt

6eccfef81aa4

image

(2)、&>

与上面的案例类似,不做解释

6eccfef81aa4

(3) 、2>&1

//ll执行的结果输出到file中

[root@kingdom stdin_out_err]# ll passwd.txt passwd1.txt > file 2>&1

//查看输出

[root@kingdom stdin_out_err]# cat file

ls: cannot access passwd1.txt: No such file or directory

-rw-r--r-- 1 root root 14 Jan 22 16:25 passwd.txt

6eccfef81aa4

案例5:

使用/dev/nul文件

有时候我们使用命令,不想将输出的信息显示到界面

这时我们可以使用 &> /dev/nul[常用]

简单测试修改demo 用户密码

//修改用户demo的密码,执行完后会有一些提示信息

[root@kingdom stdin_out_err]# echo "123456" | passwd --stdin demo

Changing password for user demo.

passwd: all authentication tokens updated successfully.

//使用&> /dev/nul不再显示器中显示这些信息

[root@kingdom stdin_out_err]# echo "123456" | passwd --stdin demo &> /dev/nul

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值