首页 > 系统相关 >shell 2>&1的含义

shell 2>&1的含义

时间:2022-11-07 11:58:09浏览次数:56  
标签:输出 shell log 指向 含义 jar ----- 屏幕

目录

shell 2>&1的含义

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

image

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

echo "hello" > t.log 

其实也可以写成

echo "hello" 1> t.log

关于2>&1的含义

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

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

为什么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指向屏幕)
执行2>&1后, 2----->1 (2指向1,而1指向屏幕,因此2也指向了屏幕)
执行>log后, 1----->log (1指向log,2还是指向屏幕)
所以这就不是我们想要的结果。

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

有以下两种简写方式

&>log
>&log

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

nohup java -jar app.jar &>log &

上面两种方式都和">log 2>&1"一个语义。
那么 上面两种方式中&>和>&有区别吗?

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

文档转自

https://blog.csdn.net/zhaominpro/article/details/82630528

标签:输出,shell,log,指向,含义,jar,-----,屏幕
From: https://www.cnblogs.com/liwenchao1995/p/16865439.html

相关文章

  • JMeter中的BeanShell
    一、BeanShell1、什么是BeanShell?BeanShell是由Java编写的,相当于一个小巧的Java源码解释器,简单来说就是你可以在里面写代码,然后通过BeanShell翻译成插件可以识别指......
  • PowerShell提示 ”无法加载文件 WindowsPowerShell\profile.ps1,因为在此系统上禁止运
    win+S打开搜索框,=>打开PowerShell输入命令:set-executionpolicyremotesigned并输入Y确认......
  • shell-文件查找命令笔记三
    文件查找-find命令格式:find[路径][选项][操作]选项-name根据文件名查找-iname根据文件名查找,忽略大小写-perm根据文件权限查找find/etc-perm777-prun......
  • Shell编程
    1、Shell概述1.1Linux提供的Shell解释器都有哪些[root@hadoop100~]#cat/etc/shells/bin/sh/bin/bash/usr/bin/sh/usr/bin/bash/bin/tcsh/bin/csh1.2bash和sh的关系[roo......
  • shell-函数学习笔记二
    shell函数的定义#方法一functionname{command...command}#方法二name(){command...command}函数的调用直接使用函数名调用,可以将函数......
  • Jmeter中beanshell常用语法总结
    BeanShell前置处理器、BeanShell取样器、BeanShell后置处理器,它们之间的区别:1、BeanShell前置处理器、BeanShell后置处理器比BeanShell取样器多一个重置解释器(ResetInt......
  • xshell连接虚拟机
    xshell连接虚拟机 1.提前打开虚拟机,xshell才能连上 2.打开xshell,点击会话框或菜单栏的新建图标创建新连接  3.新建会话框左侧的类别,选择连接,输入相关信息 ......
  • 学习笔记-PowerShell 笔记
    PowerShell笔记什么是PowerShellWindowsPowerShell是一种命令行外壳程序和脚本环境,使命令行用户和脚本编写者可以利用.NETFramework的强大功能.WindowsPowerS......
  • linux shell 中实现基本的双循环
     001、[root@pc1test]#lsa.sh[root@pc1test]#cata.sh##测试程序#!/bin/bashfor((i=1;i<=3;i++))doecho"--------outerloop:$i--......
  • shell与bash
    内核和操作系统的关系系统内核提供硬件抽象层,硬盘及文件系统控制shellshell是什么Shell在Linux系统中充当的是人与内核(硬件)之间的交互程序,用户通过Shell去命令这些内......