Linux-谁能清楚的讲讲联合符号&的作用

Linux-谁能清楚的讲讲联合符号&的作用

想挽留 发布于 2016-12-16 字数 163 浏览 1185 回复 2

cat >test2 1&2 <test1 标准输出和错误输出都到test2文件中
cat 1&2 >test2 <test1 标准输出到屏幕,错误输出到test2文件中
为什么啊?

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

灵芸 2017-09-16 2 楼

& 表示后台运行,例如:“ls &” 表示在后台运行ls命令:

&& 表示前者执行成功,执行后台命令,例如:“ls && ll”:

想挽留 2017-06-13 1 楼

根据你提供的命令和解释,推测在 & 符号旁边缺少了一个大于号 单纯的 & 会将前面输入的命令挂起,这一点可完全不会现出lz所述的结论哦~
如果我说错了,那就不用接着看下文了。
首先,关于文件描述符注意这么一个概念,默认的数字中,0 表示标准输入(键盘),1 表示标准输出(终端屏幕),2 为标准错误输出(终端屏幕)

然后说明一下重定向,意思就是把默认IO流进行重新定向

原第一条命令应该是

cat > test2 1>&2 < test1

cat > test2 表示将原来 标准输出 重定向 到 test2 文件
1>&2 表示将 标准输出 重定向 到 标准错误输出,原来的 标准错误输出保留
< test1 意思是将 test1 的文件内容作为 标准输出 放到该命令中

整理一下: test1 的内容输出到 test2,test1 的文件内容和错误输出还会输出到屏幕上

有了上面的分析,不难懂第二个命令了
原第二条命令应为:

cat 1>&2 > test2 < test1

先将标准输出 重定向 到标准错误输出,然后修改 标准输出 到 test2,由 test1 提供源
效果是:test1 的内容被放到了 test2 里面,出错了还是显示到屏幕上

推荐你一个视频教程
http://v.youku.com/v_show/id_XNDgxMzE1MTcy.html