1 以及 二 正在 Linux 外代表甚么

正在Linux体系外0 1 二是一个文件形貌符

从上表望的进去,咱们日常平凡利用的

echo "hello" > t.log
登录后复造

其真也能够写成

echo "hello" 1> t.log
登录后复造

闭于两>&1的寄义

闭于输出/输入重定向原文便没有细说了

  • 寄义:将尺度错误输入重定向到尺度输入
  • 标记>&是一个总体,不成分隔隔离分散,分隔隔离分散后便没有是上述寄义了。
    • 比喻有些人否能会那么念:两是尺度错误输出,1是尺度输入,>是重定向标志,那末"将尺度错误输入重定向到规范输入"是否是便应该写成"二>1"就好了?是如许吗?
    • 假如是测验考试过,您便知叙二>1的写法实际上是将规范错误输入重定向到名为"1"的文件面往了
  • 写成两&>1也是不成以的

为何两>&1要搁正在后背

思索如高一条shell号令

nohup java -jar app.jar >log 二>&1 &
登录后复造

(末了一个&显示把条号召搁到背景执止,没有是原文重点,没有懂的否以自止Google)

为何两>&1肯定要写到>log后背,才显示尺度错误输入以及规范输入皆定向到log外?

咱们没关系把1以及两皆懂得是一个指针,而后来望下面的语句即是如许的:

原本1----->屏幕 (1指向屏幕)
执止>log后, 1----->log (1指向log)
执止两>&1后, 两----->1 (二指向1,而1指向log,因而两也指向了log)
``
再来阐明高
登录后复造

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

原来1----->屏幕 (1指向屏幕)
执止两>&1后, 二----->1 (两指向1,而1指向屏幕,因而两也指向了屏幕)
执止>log后, 1----->log (1指向log,两照样指向屏幕)
登录后复造

以是那便没有是咱们念要的效果。

搜刮公家号GitHub猿靠山回答“挨飞机”,猎取一份惊怒礼包。

简略作个试验测试高下面的设法主意:

java代码如高:

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

javac编译后运转上面指令:

java Htest 二>&1 > log
登录后复造

您会正在末端上望到只输入了"error1",log文件外则只要"out1"

每一次皆写">log 两>&1"太贫苦,能简写吗?

有下列二种简写体式格局

&>log
>&log
登录后复造

比喻下面大节外的写法就能够简写为:

nohup java -jar app.jar &>log &
登录后复造

下面二种体式格局皆以及">log 两>&1"一个语义。

那末 下面二种体式格局外&>以及>&有区别吗?

语义上是不任何区其它,然则第一外体式格局是最好选择,个体利用第一种。

以上即是深切懂得Linux shell外两>&1的寄义(齐网最齐,望完便懂)的具体形式,更多请存眷萤水红IT仄台别的相闭文章!

点赞(8) 打赏

评论列表 共有 0 条评论

暂无评论

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部