资讯专栏INFORMATION COLUMN

理解shell脚本中的2>&1

894974231 / 2489人阅读

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

问题描述:

    最近在写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脚本中的2>&1

    摘要:问题分析首先我们看前面的这个比较好理解,意思是每天的点整去执行脚本并且将标准输出重定向到文件中我们再来看后面的,然后我们还得知道一个概念,文件描述符,可以参考下对文件描述符的简绍和文件描述符的原理链接。 问题描述:     最近在写crontab的时候,看到一条0 10 sh /abc/f.sh > /abc/log 2>&1大致长成这样的一条定时任务。不知道最后面的2>&1...

    KitorinZero 评论0 收藏0
  • 前端自动部署 - Shell脚本

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

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

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

    89542767 评论0 收藏0
  • rpm包构建

    RPM(Redhat Package Manager)是Rhel,Centos,Fedora等系统的软件包管理格式安装在centos等使用rpm的系统中安装yuminstall-yrpm-buildrpmlintyum-utilsrpmdevtools生成目录结构初始化目录结构:rpmdev-setuptree在home目录下生成目录结构如下rpmbuild ├──BUILD ├──BUILD...

    社区管理员 评论0 收藏0
  • kubectl多集群管理

    大部分情况我们不只一个k8s集群,这个时候我们需要快速的在各个集群之间进行切换。且省去每次都要申明namespace使用kubectxkubectx是个可以快速的切换集群且能设置namespace的官方地址安装brewinstallkubectx为了能够使用模糊推查找荐安装fzf使用kubectx 可以看到所有环境,通过模糊查找可快速选择集群kubens 可以看到当前环境所有的namespace,...

    社区管理员 评论0 收藏0

发表评论

0条评论

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