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 会发现里面什么都没有?

相关推荐:
一、准备工作: 准备一个 8GB 或以上容量的 U 盘,确保里面的数据已经妥善备份好(该过程会抹掉 U 盘全部数据),下载苹果官方 OS X Yosemite 正式版的安装程序。 如果你是从 Mac AppStore 下载的,下载完 …
htop 是Linux系统中的一个互动的进程查看器,一个文本模式的应用程序(在控制台或者X终端中),需要ncurses。与Linux传统的top相比,htop更加人性化。它可让用户交互式操作,支持颜色主题,可横向或纵向滚动 …
在事件查看器中,可以看到: 应用程序-特定 权限设置未将 COM 服务器应用程序(CLSID 为 {0C0A3666-30C9-11D0-8F20-00805F2CD064} )的本地激活权限授予用户 NT AUTHORITY\NETWORK SERVICE SID (S-1-5-20)。 …
安卓手机有一些软件是在应用列表无法显示的,但它却可以运行,也可以通过其它方法启动,就是根据这个原理实现的。 教程: 1、反编译要编辑的软件,找到AndroidManifest.xml; 2、用记事本打开,找到以下字 …
sdcard存储的信息可以被其他应用任意读取,如果有敏感信息会造成信息被恶意应用获取风险。 通过内部存储存文件openFileOutput(filename, Context.MODE_PRIVATE)或者对于敏感的数据加密后存储。
拿起手机扫一扫即可带走我!