理解shell脚本中的2>&1

简介: 理解shell脚本中的2>&1

问题描述:

    最近在写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是存在还是不存在都会在屏幕上显示出来。

相关文章
|
22天前
|
Java Shell Linux
使用 sh -x 进行 shell 脚本调试
使用 sh -x 进行 shell 脚本调试
32 9
使用 sh -x 进行 shell 脚本调试
|
2天前
|
监控 关系型数据库 MySQL
优秀的网络工程师,早就偷偷收藏了这9 个实用 Shell 脚本!
优秀的网络工程师,早就偷偷收藏了这9 个实用 Shell 脚本!
|
12天前
|
存储 Shell 应用服务中间件
[ansible]wget批量调用shell脚本
[ansible]wget批量调用shell脚本
|
14天前
|
运维 监控 Shell
掌握100个开箱即用的Shell脚本~(附PDF)
Shell脚本是实现Linux系统管理及自动化运维所必备的重要工具。许多其它岗位的小伙伴也经常使用Shell脚本来实现某项需求。 今天分享《100个shell脚本案例》,共有55页,支持文字搜索定位,代码清晰可复制。
|
22天前
|
Shell 测试技术 Linux
Shell 脚本循环遍历日志文件中的值进行求和并计算平均值,最大值和最小值
Shell 脚本循环遍历日志文件中的值进行求和并计算平均值,最大值和最小值
29 3
|
1月前
|
JavaScript 前端开发 Shell
Shell 脚本编程保姆级教程(上)
Shell 脚本编程保姆级教程(上)
|
1月前
|
Shell Linux C语言
|
1月前
|
Shell 网络安全
shell脚本 配饰ssh
【7月更文挑战第15天】
23 4
|
1月前
|
网络协议 Shell Linux
Shell脚本配置Centos静态ip地址
这是一个用于在CentOS上设置静态IP的Shell脚本摘要: - 脚本交互式获取用户输入的IP地址、子网掩码、网关和DNS。 - 使用`sed`命令动态更新`/etc/sysconfig/network-scripts/ifcfg-ENS33`配置文件。 - 修改`BOOTPROTO`为`static`,并设置IP、NETMASK、GATEWAY和DNS1字段。 - 用`systemctl restart network`重启网络服务。 - 提示用户新配置的静态IP信息。
|
1月前
|
Shell Linux
Linux Shell 脚本入门教程:开启你的自动化之旅
Shell是一种计算机程序,它充当了用户与操作系统之间的接口。在Linux系统中,Shell允许用户通过命令行界面(CLI)来控制计算机。Shell脚本则是一种使用Shell语言编写的脚本,它可以自动执行一系列的命令,帮助用户实现任务自动化,提高工作效率。