资讯专栏INFORMATION COLUMN

理解shell脚本中的2>&1

894974231 / 2651人阅读

摘要:问题分析首先我们看前面的这个比较好理解,意思是每天的点整去执行脚本并且将标准输出重定向到文件中我们再来看后面的,然后我们还得知道一个概念,文件描述符,可以参考下对文件描述符的简绍和文件描述符的原理链接。

问题描述:

    最近在写crontab的时候,看到一条0 10 sh /abc/f.sh > /abc/log 2>&1大致长成这样的一条定时任务。不知道最后面的2>&1是起什么作用的,然后就去学习了一下。

问题分析:

    1.首先我们看前面的0 10 sh /abc/f.sh > /abc/log,这个比较好理解,意思是每天的10点整去执行f.sh脚本,并且将标准输出重定向到log文件中
    2.我们再来看后面的2>&1, 然后我们还得知道一个概念,文件描述符,可以参考下,wiki对文件描述符的简绍和文件描述符的原理链接。简单的来说就是有一个整数,它的枚举值是0(标准输入),1(标准输出),2(标准错误),然后0是从键盘输入,1和2都是输出到屏幕上。
    3.我们了解了整数的含义之后再来看就比较好理解了,对于重定向符号">",我们可以这么理解: 文件描述符 > 文件.比如 ls > a.txt,就是说把ls的输出存入a.txt, >等于 1 >, 所以写成ls 1> a.txt也是一样的效果.如果>后面是&1就是用来表示这是文件描述符.
    4.0 10 sh /abc/f.sh > /abc/log 2>&1所以这个命令就是说把执行结果的标准输出放入到log文件,又因为2>&1(标准错误也重定向到标准输入,之前标准输入已经重定向到了log),因此这个命令的正确执行和报错都会放入到log文件中。

实例:

我们可以看下面的两个例子:
1.首先由f,log两个文件,ll f1 > log 2 >&1,意思是标准输出和错误都输出到log中,所以cat log中有错误信息。

2.再看第二个,首先由f,log两个文件,ll f2 > log >&2,意思是标准输出重定向到log中,标准输出又重定向到标准错误中,因为标准错误是输出到屏幕的,所以不管ll f2是存在还是不存在都会在屏幕上显示出来。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/25099.html

相关文章

  • 前端自动部署 - Shell脚本

    前言前端部署服务器,需要经过打包、迁移、部署、回退操作,如果每次都手动处理,那么容易出错还浪费时间,自动化部署又比较复杂,那么选择shell脚本做自动化,也是一个不错的选择,具体实现如下:项目环境执行自动化构建的前端项目myweb项目通过命令构建测试环境文件或生产环境文件linux服务器,nginx部署项实现原理一、构建一个前端项目通过cra构建前端项目,修改配置文件,通过传递配置参数,配置测试环...

    社区管理员 评论0 收藏0
  • 应用Python脚本制作获取基因组测序指定位置编码序列

    此篇文章关键给大家介绍了应用Python脚本制作获取基因组测序指定位置编码序列的实例详细说明,感兴趣的小伙伴值得借鉴参考一下,也希望能有一定的帮助,祝愿大家多多的发展,尽早涨薪  前言  在基因组分析中,大家常常会有这样一个要求,便是在一个fasta文件中获取某些编码序列出去。有时候这种编码序列注定是完备的编码序列,而有时候只是为原fasta文件中某一段编码序列中的一部分。尤其是当信息量许多时,应...

    89542767 评论0 收藏0

发表评论

0条评论

894974231

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<