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仄台别的相闭文章!
发表评论 取消回复