iis服务器助手广告广告
返回顶部
首页 > 资讯 > 操作系统 >Linux shell中2>&1的含义是什么
  • 754
分享到

Linux shell中2>&1的含义是什么

2023-06-09 12:06:38 754人浏览 独家记忆
摘要

这篇文章主要介绍linux shell中2>&1的含义是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!A.首先了解下1和2在Linux中代表什么在Linux系统中0 1 2是一个文件描述符名称代码操

这篇文章主要介绍linux shell中2>&1的含义是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

A.首先了解下1和2在Linux中代表什么

在Linux系统中0 1 2是一个文件描述符

名称代码操作符Java中表示Linux 下文件描述符(Debian 为例)
标准输入(stdin)0< 或 <<System.in/dev/stdin -> /proc/self/fd/0 -> /dev/pts/0
标准输出(stdout)1>, >>, 1> 或 1>>System.out/dev/stdout -> /proc/self/fd/1 -> /dev/pts/0
标准错误输出(stderr)22> 或 2>>System.err/dev/stderr -> /proc/self/fd/2 -> /dev/pts/0

上面表格引用自这里

从上表看的出来,我们平时使用的

echo "hello" > t.log

其实也可以写成

echo "hello" 1> t.log

B.关于2>&1的含义

(关于输入/输出重定向本文就不细说了,不懂的可以参考这里,主要是要了解> < << >> <& >& 这6个符号的使用)

含义:将标准错误输出重定向到标准输出

符号>&是一个整体,不可分开,分开后就不是上述含义了。
比如有些人可能会这么想:2是标准错误输入,1是标准输出,>是重定向符号,那么"将标准错误输出重定向到标准输出"是不是就应该写成"2>1"就行了?是这样吗?
如果是尝试过,你就知道2>1的写法其实是将标准错误输出重定向到名为"1"的文件里去了

写成2&>1也是不可以的

C.为什么2>&1要放在后面

考虑如下一条shell命令

nohup java -jar app.jar >log 2>&1 &

(最后一个&表示把条命令放到后台执行,不是本文重点,不懂的可以自行Google)

为什么2>&1一定要写到>log后面,才表示标准错误输出和标准输出都定向到log中?

我们不妨把1和2都理解是一个指针,然后来看上面的语句就是这样的:

  • 本来1----->屏幕 (1指向屏幕)

  • 执行>log后, 1----->log (1指向log)

  • 执行2>&1后, 2----->1 (2指向1,而1指向log,因此2也指向了log)

再来分析下

nohup java -jar app.jar 2>&1 >log &
  1. 本来1----->屏幕 (1指向屏幕)

  2. 执行2>&1后, 2----->1 (2指向1,而1指向屏幕,因此2也指向了屏幕)

  3. 执行>log后, 1----->log (1指向log,2还是指向屏幕)

所以这就不是我们想要的结果。

简单做个试验测试下上面的想法:

java代码如下:

public class Htest { public static void main(String[] args) {  System.out.println("out1");  System.err.println("error1"); }}

javac编译后运行下面指令:

java Htest 2>&1 > log

你会在终端上看到只输出了"error1",log文件中则只有"out1"

D.每次都写">log 2>&1"太麻烦,能简写吗?

有以下两种简写方式

&>log>&log

比如上面小节中的写法就可以简写为:

nohup java -jar app.jar &>log &

上面两种方式都和">log 2>&1"一个语义。

那么 上面两种方式中&>和>&有区别吗?

语义上是没有任何区别的,但是第一中方式是最佳选择,一般使用第一种

以上是“Linux shell中2>&1的含义是什么”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网操作系统频道!

--结束END--

本文标题: Linux shell中2>&1的含义是什么

本文链接: https://www.lsjlt.com/news/256102.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Linux shell中2>&1的含义是什么
    这篇文章主要介绍Linux shell中2>&1的含义是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!A.首先了解下1和2在Linux中代表什么在Linux系统中0 1 2是一个文件描述符名称代码操...
    99+
    2023-06-09
  • 如何理解shell 1>&2 2>&1 &>filename重定向的含义和区别
    本篇内容介绍了“如何理解shell 1>&2 2>&1 &>filename重定向的含义和区别”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这...
    99+
    2023-06-09
  • shell中>/dev/null 2>&1是什么意思
    小编给大家分享一下shell中>/dev/null 2>&1是什么意思,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!shell重定向介绍就像我们平时写的程序一样,一段程序会处理外部的输入,然后将运算结果...
    99+
    2023-06-09
  • shell中1小于/dev/null 2大于&1的含义是什么
    这篇文章主要介绍shell中1小于/dev/null 2大于&1的含义是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!shell中可能经常能看到:>/dev/null 2>&1 命令的...
    99+
    2023-06-09
  • linux shell中2>&1是什么意思
    这篇文章主要介绍了linux shell中2>&1是什么意思,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。linux shell 中"2>&1...
    99+
    2023-06-09
  • 如何分析linux中shell变量$#,$@,$0,$1,$2的含义
    本篇文章为大家展示了如何分析linux中shell变量$#,$@,$0,$1,$2的含义,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。linux中shell变量$#,$@,$0,$1,$2的含义解释...
    99+
    2023-06-28
  • linux shell中$$的含义是什么
    这篇文章主要介绍“linux shell中$的含义是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“linux shell中$的含义是什么”文章能帮助大家解决问题。在linux中,shell是一个...
    99+
    2023-06-29
  • Linux下" >/dev/null 2>&1 "的相关知识有哪些
    这期内容当中小编将会给大家带来有关Linux下" >/dev/null 2>&1 "相关知识有哪些,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一些终端命令或者程序...
    99+
    2023-06-05
  • linux中shell变量$#,$@,$0,$1,$2是什么意思
    这篇文章主要为大家展示了“linux中shell变量$#,$@,$0,$1,$2是什么意思”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“linux中shell变量$#,$@,$0,$1,$2是什...
    99+
    2023-06-09
  • mysql中limit 1的含义是什么
    在 MySQL 中,LIMIT 1 是一种用于限制查询结果行数的语句。当使用 LIMIT 1 时,表示只返回查询结果集中的第一行数据...
    99+
    2024-04-09
    mysql
  • linux中stream的含义是什么
    这篇文章主要介绍“linux中stream的含义是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“linux中stream的含义是什么”文章能帮助大家解决问题。 ...
    99+
    2023-03-19
    linux stream
  • linux中ll的含义是什么
    这篇文章主要讲解了“linux中ll的含义是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“linux中ll的含义是什么”吧!在linux中,“ll”是“ls -l”命令的别名,ls命令用...
    99+
    2023-06-29
  • Linux中点的含义是什么
    这篇文章主要介绍了Linux中点的含义是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Paul Brown 解释了 Linux shell 命令中那个不起眼的“点”的各种...
    99+
    2023-06-16
  • linux中samba的含义是什么
    这篇文章主要讲解了“linux中samba的含义是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“linux中samba的含义是什么”吧!在linux中,samba是一个基于SMB协议的开...
    99+
    2023-06-30
  • linux中tmp的含义是什么
    本篇内容主要讲解“linux中tmp的含义是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“linux中tmp的含义是什么”吧! ...
    99+
    2023-03-10
    linux tmp
  • linux中load average的含义是什么
    在Linux中,load average(负载平均值)是指在一段时间内系统中正在运行或等待运行的进程的平均数。它通常指的是过去1分钟...
    99+
    2024-03-15
    linux
  • linux中分区的含义是什么
    本篇内容介绍了“linux中分区的含义是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在linux中,分区就是把一片空间分割成多块,是指...
    99+
    2023-06-29
  • linux中命令的含义是什么
    今天小编给大家分享一下linux中命令的含义是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一...
    99+
    2023-03-19
    linux
  • linux中路径的含义是什么
    这篇文章主要介绍“linux中路径的含义是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“linux中路径的含义是什么”文章能帮助大家解决问题。linux中路径是指包含整个文件名称及文件的位置,这...
    99+
    2023-07-05
  • linux i686的含义是什么
    本文小编为大家详细介绍“linux i686的含义是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“linux i686的含义是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识...
    99+
    2023-03-24
    linux
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作