当前位置:首页 > linux基础 > 正文内容

Linux中的2>&1到底是如何工作的

4年前 (2022-04-26)linux基础3863

在Linux系统中,很多时候会看到命令后面会跟上一个2>&1,但是这个2>&1不是算术表达式,然而它是一个文件重定向命令,文件重定向是>符号,就是左边的内容重定向到右边。

1,文件重定向

重定向是Linux中的一项功能,因此在执行命令时,可以更改标准的输入/输出设备。任何 Linux 命令的基本工作流程都是它接受输入并提供输出。输出可以输出到控制台,也可以输出到其它文件。下面来看一个简单的例子,把aaa.txt的文件输出到bbb.txt文件。

[root@sharplee ~]# cat aaa.txt>bbb.txt

从上图可以看到控制台输出了报错信息。查看bbb.txt 文件,文件中没有内容,主要是“>”符号代表输出重定向。用于把aaa.txt的内容标准输出到bbb.txt,现在没有aaa.txt文件,则打印出了标准错误,标准错误直接打印到控制台了。接着创建一个aaa.txt文件,再把aaa.txt文件重定向到bbb.txt,可以看到能够把文件内容重定向到bbb.txt中,并且控制台没有打印。

2,文件描述符

文件描述符只不过是表示打开的文件的正整数。如果打开了100个文件,将有 100 个文件描述符。唯一需要注意的是,在Unix系统中,一切都是文件。但现在这并不重要,最重要的只需要知道标准输出(stdout)和标准错误(stderr)都有文件描述符。标准输入(stdin)的文件描述符是0,标准输出(stdout)的文件描述符是1,标准错误(stderr)的文件描述符是2.标准错误默认显示在屏幕上。

3,标准输出重定向

通过1>来标准输出重定向,重定向内容到另外的文件中。

[root@sharplee ~]# ping a.com 1>a.txt

上图可以看出,执行命令报错了,通过标准错误来重定向了,标准错误默认是打印到屏幕上。接下来看一个成功的。

[root@sharplee ~]# ping www.baidu.com 1>a.txt

从上图可以看出,把标准输出重定向到了a.txt文件中。

4,标准错误重定向

通过使用2>符号来把标准错误重定向到另外一个文件。

[root@sharplee ~]# ping a.com 2>a.txt


上图可以看出把错误消息重定向到了a.txt 文件中。接着来一个成功而不是错误的。

[root@sharplee ~]# ping www.baidu.com 2>a.txt

从上图可以看出标准错误输出,只重定向标准错误到另外一个文件,标准输出是不会重定向的。标准输出默认显示到屏幕上了。

5,2>&1重定向

啥是“2>&1”重定向呢?指的是把标准错误重定向为和标准输出一样。“1>&2”指的是把标准输出重定向为和标准错误一样。

[root@sharplee ~]#ping a.com>a.a 2>&1  


把标准错误重定向到标准输出,和标准输出一样,接着标准输出重定向了a.a文件,所以最终是把标准错误以及标准输出重定向到了a.a文件。

[root@sharplee ~]# ping a.com>aa 1>&2

1>&2把标准输出重定向到标准错误。意思就是标准输出和标准错误一样,然而标准输出到一个文件aa。标准输出已经重定向到了标准错误,这样标准错误没有重定向到任何地方,只能打印到屏幕上了。

接着再看一个例子:

[root@sharplee ~]# ping a.com 2>aa 1>&2

该命令把标准输出重定向标准错误,接着标准错误又重定向到了aa文件,结果是把标准输出和标准错误都打印到aa文件了。

最后如何只打印错误消息以及如何只打印正确信息。通过重定向到/dev/null,来丢弃对应的内容,把正确的输出重定向到/dev/null.意思是只打印错误的信息。把标准错误重定向到/dev/null,意思就是把错误丢弃,只显示正确的信息。

丢弃错误信息/dev/null

[root@sharplee ~]# ping v.com 2>/dev/null 

2>用于重定向错误信息到另外一个文件,1>主要用于标准输出重定向到另外一个文件。2>&1主要用于标准输出和标准错误都定位到输出。&>和>&和2>&1相同。

返回列表

上一篇:frps内网穿透

没有最新的文章了...

“Linux中的2>&1到底是如何工作的” 的相关文章

Linux文件编辑-VIM编辑器

Linux文件编辑-VIM编辑器

VIM基本概述1.什么是VIM?vi和vim是Linux下的一个文本编辑工具。(可以理解为windows的记事本,或word文档)2.为什么要使用VIM?因为Linux系统一切皆为文件,而我们工作最多的就是修改某个服务的配置(其实就是修改文件内容)。也就是说如果没有vi/vim,我们很多工作都无法完...

Linux用户的基本操作

Linux用户的基本操作

用户基本概述1.什么是用户?用户指的是能够正常登录Linux或Windows系统2.Linux下的用户有什么用?2.1.系统上的每一个进程(运行的程序),都需要一个特定的用户运行2.2.通常在公司是使用普通用户管理服务器,因为root权限过大,容易造成故障。2.3.每一个文件都有特定的用户拥有,所以...

Linux基本权限

Linux基本权限

1.什么是权限我们可以把它理解为操作系统对用户能够执行的功能所设立的限制,主要用于约束用户能对系统所做的操作,以及内容访问的范围,或者说,权限是指某个特定的用户具有特定的系统资源使用权力。2.为什么要有权限因为系统中不可能只存在一个root用户,一定会存在多个用户,为了保护每个登陆用户的隐私和工作环...

Linux进程管理

Linux进程管理

进程概述1.当我们运行一个程序,那么我们将运行的程序叫进程。PS1: 当程序运行为进程后,系统会为该进程分配内存,以及进程运行的身份和权限。PS2: 在进程运行的过程中,系统会有各种指标来表示当前运行的状态。2.程序和进程的区别1.程序是数据和指令的集合,是一个静态的概念。比如/bin/ls、/bi...

自动化运维(二)Ansible Playbook

自动化运维(二)Ansible Playbook

1.Playbook剧本1.playbook翻译过来就是“剧本”,那playbook组成如下play: 定义的是主机的角色task: 定义的是具体执行的任务playbook: 由一个或多个play组成,一个play可以包含多个task任务简单理解为: 使用不同的模块完成一件事情2.playbook的...

网站打不开各种故障代码及其含义

1xx:(临时响应)用于表示临时响应并需要请求者执行操作才能继续的状态代码。100:(继续)请求者应当继续提出请求。服务器返回此代码则意味着,服务器已收到了请求的第一部分,现正在等待接收其余部分。101:(切换协议)请求者已要求服务器切换协议,服务器已确认并准备进行切换2xx:(成功)用于表示服务器...