【linux】linux 中 > 和 >>的区别, > 是代替rm 的安全方式
linux中>表示覆盖原文件内容(文件的日期也会自动更新),>>表示追加内容(会另起一行,文件的日期也会自动更新)。
一. >操作
1.执行命令 curl 'xxx' ,将其返回结果保存到 log.log 中
[root@gx-solr1 ~]# curl 'http://192.168.0.110:8983/solr/scan_detail/admin/file?_=1544066402749&contentType=text/plain;charset=utf-8&file=managed-schema&wt=json' > log.log
2.执行命令 cat /etc/hosts , 将其返回结果保存到 hosts.log 中
[root@slave1 ~]# cat /etc/hosts > hosts.log
[root@slave1 ~]# more hosts.log
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
可以看到,使用 > ,执行命令时,每次都会新生成一个 > 后面的文件,将之前生成的文件替换掉(文件创建时间也会跟着改变)。
所以,如果对一个已经存在的 文件,使用 >。结果就是创建一个 新文件,覆盖了 原本存在的文件。
3. 上述效果,等同于 删除操作,例如 :删除 hosts.log 文件
即不对新生成的文件 输入任何内容。
[root@slave1 ~]# > hosts.log
所以,有些公司对于使用rm -rf /* 等操作 讳莫如深或怕误操作。可以采用 >命令 直接跟 要删除的文件名,达到删除的效果。
二. >>操作
1.使用 >> 向 hosts.log中追加 当前日期
[root@slave1 ~]# ls -l hosts.log
-rw-r--r--. 1 root root 11 Dec 13 16:04 hosts.log # 查看hosts.log 的日期
[root@slave1 ~]# cat hosts.log # 查看hosts.log 文件的内容
I am OK!
[root@slave1 ~]# echo "当前日期是 `date`" >> hosts.log # 向hosts.log中追加 当前日期
[root@slave1 ~]# cat hosts.log # 再次查看hosts.log 文件的内容
I am OK!
当前日期是 Thu Dec 13 16:05:18 CST 2018
[root@slave1 ~]# ls -l hosts.log # 再次查看hosts.log 的日期
-rw-r--r--. 1 root root 56 Dec 13 16:05 hosts.log
[root@slave1 ~]#