起航学习网

- 让每个人都能学到最前沿新知识、新技能!
起航学习网
当前位置: 起航学习网 > 职业教育 > linux是什么 Linux 命令行中的2>&1是什么意思

linux是什么 Linux 命令行中的2>&1是什么意思

时间:2019-08-04 20:25:10来源:编程网 作者:IT培训网 已有: 名学员访问该课程

前言:实际上Linux并不是一个真正的系统,它仅仅是一个有着上万行代码的系统内核,最初版本也只能够在Minix操作系统上运行,并不是完全独立运行的,这个情况在第二个版本更新后才发生了改变,可以直接运行在制定类型的计算机上。

Linux 命令行中的2>&1究竟是什么意思?linux是什么。

Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

Linux是什么?

Linux系统是目前仅次于Windows系统的一个开源系统,并且拥有比Windows系统更广泛的应用范围,从航天到军事、从科研到金融、从手机到电脑,你能够在任何一个需要操作系统的地方看到Linux的身影。

实际上Linux并不是一个真正的系统,它仅仅是一个有着上万行代码的系统内核,最初版本也只能够在Minix操作系统上运行,并不是完全独立运行的,这个情况在第二个版本更新后才发生了改变,可以直接运行在制定类型的计算机上。

Linux操作系统诞生于1991 年10 月5 日(这是第一次正式向外公布时间)。Linux存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。

严格来讲,Linux这个词本身只表示Linux内核,但实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU工程各种工具和数据库的操作系统。

我们在Linux下经常会碰到:

nohup command>/dev/null 2>&1 &

这样形式的命令。

我们把这条命令大概分解一下。

(1)首先,就是一个nohup表示当前用户和系统的会话下的进程忽略响应HUP消息,也就是不挂断地运行命令。

(2)& 符号是把该命令以后台的job的形式运行。

(3)那么就剩下command>/dev/null 2>&1,其中command>/dev/null较好理解,/dev/null表示一个空设备,就是把 command的执行结果重定向到空设备中,说白了就是不显示任何信息。

(4)最后,2>&1又是什么含义?

2>&1 几个基本符号及其含义

/dev/null 表示空设备文件

0 表示stdin标准输入

1 表示stdout标准输出

2 表示stderr标准错误

command > /dev/null相当于执行了command 1 > /dev/null。执行command产生了标准输出stdout(用1表示),重定向到/dev/null的设备文件中。

分析 2>&1

对于2>&1的理解,2就是标准错误,1是标准输出,那么这条命令不就是相当于把标准错误重定向到标准输出么?是的。

为什么是&1而不是1,这里& 符号是什么?& 符号可以理解为引用(reference)。&1 就是对标准输出的引用。

command>a 2>a 与 command>a 2>&1的区别

通过上面的分析,对于command>a 2>&1这条命令,等价于command 1>a 2>&1。

可以理解为执行command产生的标准输入重定向到文件a中,标准错误也重定向到文件a中。

那么是否就说command 1>a 2>&1等价于command 1>a 2>a呢?

其实不是,command 1>a 2>&1与command 1>a 2>a 还是有区别的,区别就在于前者只打开一次文件a,后者会打开文件两次,并导致stdout被stderr覆盖。&1的含义就可以理解为用标准输出的引用,引用的就是重定向标准输出产生打开的a。从IO效率上来讲,command 1>a 2>&1比 command 1>a 2>a的效率更高。

演示一下效果

//test.sh shell 程序

#!/bin/sh

t

date

其中t指令并不存在,执行会报错,会输出到stderr。date能正常执行,执行会输出当前时间,会输出到stdout。

linux是什么 Linux 命令行中的2>&1是什么意思_qh.itpxw.cn

chmod +x test.sh为test.sh增加执行权限。

linux是什么 Linux 命令行中的2>&1是什么意思_qh.itpxw.cn

执行 ./test.sh > test.log,如下所示:

linux是什么 Linux 命令行中的2>&1是什么意思_qh.itpxw.cn

我们发现 stderr 并没有被重定向到 test.log 中,stderr 直接输出到屏幕上了。

执行 ./test.sh > test.log 2>&1,如下所示:

linux是什么 Linux 命令行中的2>&1是什么意思_qh.itpxw.cn

这次,我们发现stdout 和 stderr 都被重定向到了 test.log 中了。

文章出自:http://qh.itpxw.cn/qgtk/201950970.html

文章标题:linux是什么 Linux 命令行中的2>&1是什么意思



免责声明:本站文章均由入驻起航学习网的会员所发或者网络转载,所述观点仅代表作者本人,不代表起航学习网立场。如有侵权或者其他问题,请联系举报,必删。侵权投诉

你也许会喜欢如下的文章?
(责任编辑:IT培训网)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
培训学校
IT培训网 访问该机构站点 报名留言 加为好友 用户等级:注册会员 用户级别:10 机构名称:IT培训网 联 系 人:罗老师 联系电话:13783581536 联系手机:13783581536 在线客服:起航学习网客服 在 线 QQ:起航学习网客服 电子邮件: 网站域名:http://www.itpxw.cn 注册时间:2016-07-18 11:07 最后登录:2024-02-20 13:02