> 输出重定向

  • 重定向输出 >

  • >> 追加

目 录

  • 1、 >正确定向等同于1>

  • 2、 2> 错误定向

  • 3. &> 把错误导成正确的{洗钱}

  • 4. 正确的变成错误的

  • 5. > 覆盖

  • 6. 举一反三

最近学的命令中学到了一些很有意思的命令,分享一下j_0047.gif


重定向输出

最初见到这个符号是在学习终端的时候,那么各个终端之间是如何交流的呢?那么就用到了这个符号>

在这里采取的是远程控制的方法,所以以虚拟终端为例

对于两个终端 dev/pts/0   /dev/pts/1

设备dev/pts/0给设备/dev/pts/1发出Hello

在设备/dev/pts/0上发出命令     echo Hello! > /dev/pts/1

wKiom1l0KhaiIMYhAAAZiXxn23o719.png

那么便在设备/dev/pts/1上收到消息Hello!(类似于qq消息中的私聊)

wKioL1l0KiXTPs2XAAAYE8d23Cw935.png

还有另一种广播的方式

wall Hi

每个终端都会收到打招呼 Hi(类似于qq消息中的群发)。很有意思吧,可以试一下。j_0007.gif

1、 > 正确定向等同于 1>

我们一般键盘输入信息,输出的结果都是默认在终端上输出

查看I/O 设备

cd /dev/fd/

ls –l

0  标准输入 (默认输入来自键盘)

1  标准输出  (默认输出都是终端)    

2  标准错误  (默认输出都是终端)

那么当我们不想输出在终端上,想导出一个文件,方便以后查看,便需要输出重定向了。的作用就是把原本要输出在终端上的信息重定向导出到指定的地方。

我们知道/etc/passwd 存放着我们用户登录的信息,而/app/passwd 这个是不存在的,我们就以这两个为例子,终端还是dev/pts/0   /dev/pts/1

单独查看会显示一下结果

ls /app/passwd  /etc/passwd

wKiom1l0KkST7eWvAAAkzkI85dc418.png

 ls /app/passwd /etc/passwd > /dev/pts/1

wKiom1l0Kq7RQuDLAAAwCzs5Z1M444.png

wKiom1l0Kr-A4C8jAAAWgIkYd4E468.png

结论: 可以看出在/dev/pts/0 上只显示出错误的结果,因为/dev/pts/0把正确结果重定向输出到/dev/pts/1    > 只导出了正确的结果

2、  > 错误定向

还是相同的例子           

 ls /app/passwd /etc/passwd  2> dev/pts/1

wKiom1l0KxihAU8EAAAjQcYzFBs767.png

wKiom1l0KyexbCJMAAA0o-pGDHU711.png

结论:可以看出可以看出在/dev/pts/0上只显示出正确的结果,/dev/pts/0把错误结果重定向输出到/dev/pts/1    2> 只导出了错误的结果

那么有把正确和错误的都输出去吗,当然可以

3、  &> 把错误导成正确的{洗钱}

(1)   ls /app/passwd /etc/passwd > dev/pts/1  2>&1(老一代)

wKioL1l0K-aRV_eyAAAjC1vkKyg478.png

wKiom1l0K_qDGASqAAArSOYhXK0266.png

结论:可以看出在/dev/pts/0上不显示,/dev/pts/0把全部重定向输出到/dev/pts/12>&1 一般在老版本的CentOS上用,接下来的是在新的版本上才有的。

(2)  ls /app/passwd /etc/passwd  &> /dev/pts/1

 wKiom1l0LAnDGM11AAAi-TvBBUM521.png

wKioL1l0LDLCu1WVAAAmQq-WFfs351.png

4、当然还可以把正确的变成错误的

ls /app/passwd/etc/passwd > dev/pts/1  1>&2

wKiom1l0LKmiKENpAAAzaIBiLwY469.png

把正确的变成错误的都显示出来

5、 >  覆盖      

 (1)  例:  > a.txt  =touch a.txt 创建新文件a.txt

wKiom1l0LPeBlOJQAAAaw-UO4Nc135.png

 (2)  当已有文件存在时会怎样呢??

现在就以a.txt为例,首先我们在a.txt中写入内容Hello

echo Hello >a.txt

wKioL1l0LQKyfJj3AAAYcoruVYs346.png

然后我们再将Hi apple!以同样的方式再写一遍

echo Hi apple>a.txt

wKiom1l0LRDCmAxHAAAZcNN-lHI126.png

3)那么我们现实中必定会有不想覆盖的文件,而我们想要继续在原文件后面追加,那么便需要>>了。

在后面追加Hello water

echo Hello water >>a.txt

wKioL1l0LRzxwoL7AAAnU2dYmbE809.png

(4)如果在工作中,我们想要在文件中追加内容时>>,却不小心只写入就执行了,那么我们的文件被覆盖了,因此就有了,禁止覆盖的命令,set –C

让我们试一下吧,首先输入set–C 然后再输入覆盖命令

wKioL1l0LVaitG25AAAq1GInvpE718.png

如果我们想一次强制覆盖   >|

wKioL1l0LWLBeN8yAAAeK4DRag0043.png

当然我们也可以解除这种禁止 set +C ,很好理解禁止 –C  ,解除+C

wKiom1l0LW7SuJl-AAAosanxveM971.png

6、当然可以举一反三

>>  追加正确的内容

2>> 追加错误的内容

&>> 全部追加

() 合并 echo abc ;echo 123> b.txt 可以一次显示两条信息

wKioL1l0LXqR_3zhAAAbymwZx64057.png

结合以前所学的符号,命令,都会有新的发现。大家可以共同探讨。

原创文章,作者:guanman,如若转载,请注明出处:http://www.178linux.com/84711

(0)
上一篇 2017-08-13 23:19
下一篇 2017-08-13 23:40

相关推荐

  • 一键编译安装httpd服务

    一键编译安装httpd服务 背景: httpd服务是一个常用的web服务,所以很多地方会用到,这里写一个一键编译安装httpd服务的脚本。 环境: 系统:centos6.9和centos7.3(应该所有的6和7的版本都可以使用) httpd源代码版本:httpd-2.2.34.tar.bz2和httpd-2.4.27.tar.bz2 。下载网址官网:http…

    2017-09-16
  • sed 高级用法(1) 之 n N

    前言 我在参考其它多个Blog中发现,有些Blog中sed的功能介绍和实际有出入,这可能和版本有关系,正如sed文档中所说“might change in future versions”,所以本文sed是以4.2.1为例。如果以后sed更新版本了,有可能会不一样。 好记性不如烂笔头! sed的工作原理 sed维护着两个数据的缓冲空间,一个是模式空间(pat…

    Linux干货 2015-07-03
  • N27_第十三周作业

    1、建立samba共享,共享目录为/data,要求:描述完整的过程 1)共享名为shared,工作组为magedu 2)添加组develop,添加用户gentoo,centos和Ubuntu,其中gentoo和centos以develop为附加组,Ubuntu不属于develop组,密码均为用户名 3)添加samba用户gentoo,centos和Ubunt…

    2017-11-20
  • Linux基础之安全加密及CA、证书实战应用

    一、建立私有CA并让客户端申请请求,需要两台虚拟机完成 1、建立私有CA,生成私钥 2、CA公司给自己,生成自签证书 3、为CA提供所需要的目录及文件(如果事先存在,此步骤可以跳过) 二、CA公司已建立,需要一台客户机配合CA签署证书 1、客户端用到证书,因此生成私钥 2、客户端生成证书签署请求 3、将请求通过可靠方式发送给CA主机,这里作为测试,因此使用s…

    Linux干货 2016-10-04
  • 如何查找Ubuntu系统中占用磁盘最大的那些文件夹

    根据马哥的指导,我们需要用df和du两个磁盘管理命令来查看 先用df来了解磁盘大致的空间情况: 然后用du -sh 某个folder来查看哪个文件夹占用多少空间 然后我们可以用du /homewebown | sort -nr | more 可来定位具体是哪个文件夹占用空间过大。

    Linux干货 2016-11-06
  • Linux文件查找及压缩

    Linux文件查找(locate & find) locate     查询系统上预建的文件索引数据库(速度快,但更新不实时)     /var/lib/mlocate/mlocate.db     依赖于事先构建的索引 &nbsp…

    Linux干货 2016-08-19