shell命令中重定向符号&>file、2>&1、1>&2的区别

我们将直接通过几个例子来讲解。

grep abc test.txt 1>&2
rm -f $(find / -name test) &> /dev/null

上面两例中的 & 如何理解,& 不是放到后台执行吗?

案例分析:

1.&>file 或 n>&m 均是一个独立的重定向符号,不要分开来理解。

2.明确文件和文件描述符的区别。

3.&>file 表示重定向标准输出和错误到文件,例如:

rm -f $(find / -name test) &> /dev/null

/dev/null 是一个文件,这个文件比较特殊,所有传给它的东西它都丢弃掉。

4.n>&m 表示使文件描述符 n 成为输出文件描述符 m 的副本。这样做的好处是,有的时候你查找文件的时候很容易产生无用的信息,如:2 > /dev/null 的作用就是不显示标准错误输出;另外当你运行某些命令的时候,出错信息也许很重要,便于你检查是哪出了毛病,如:2>&1。

更多例子:

注意,为了方便理解,必须设置一个环境使得执行 grep abc test.txt 命令会有正常输出和错误输出,然后分别使用下面的命令生成三个文件:

grep abc test.txt > log1
grep abc test.txt > log2 1>&2
grep abc test.txt > log3 2>&1 #grep abc test.txt 2>log4 1>&2 结果一样

1.查看 log1 会发现里面只有正常输出内容?

2.查看 log2 会发现里面什么都没有?

我要评论!

想一个你喜欢的昵称。
给一个你的常用邮箱。
想和萌萌哒的TA们说点啥。
  • iOS 10出来之后很多都会使用DFU模式或iTunes重新刷机,但近期发现比较多在Mac系统上出现“iTunes无法验证服务器”s.mzstatic.com”的身份”、“iTunes无法联接更新服务器”。 简单地说就是服务器证书无效。 出现上面问题,网上有说添加DNS的,如...
  • 背景信息: 2019年6月15日,监测到Oracle WebLogic 在野0day命令执行漏洞,该漏洞绕过了最新的Weblogic补丁(CVE-2019-2725),攻击者可以发送精心构造的恶意HTTP请求,在未授权的情况下远程执行命令,风险极大。 漏洞描述: 该漏洞绕过CVE-2019-2725...
  • 漏洞描述: 2017年9月5日,Struts官方发布一个严重级别的安全漏洞,该漏洞编号为:S2-052,在一定条件下,攻击者可以利用该漏洞远程发送精心构造的恶意数据包,获取业务数据或服务器权限,存在高安全风险。 漏洞定级: 高危 漏洞CVE编号: CVE-2017-9805 漏洞影响范围: Stru...
  • 漏洞描述: 2019年6月14日上午,监测到互联网正在传播Coremail通杀漏洞POC,通过POC可获取Coremail配置文件信息,包括配置IP、端口、文件路径、数据库密码、用户名等信息。 漏洞定级: 高 漏洞影响范围: 已安装的程序包的版本号日期早于20190524。 漏洞处置建议: Core...
  • 在 Linux 中为了安全起见,小于1024的端口都归root用户所有,其他用户没有使用这些端口的权限。 因此大量的新手或粗心的运维就会遇到伤害了。怎么解决呢?有两种方式,一种是用 root 账户来执行,另一种就是利用 iptables 进行端口转发。 但是若是用 root 账户来启动服务,如 to...
微信扫一扫即可带走我!