noclobber:避免文件的重写

简介:
shell提供了一种称为noclobber( 如set noclobber 明确声明不覆盖,clobber的单词有殴打,击打的意思)的特性,该特性可防止重定向时不经意地重写了已存在的文件。通过设置变量noclobber可以将此特性打开。打开后若将输出重定向到某个已存在文件,则shell将报告错误消息,并且不执行重定向命令。如果前面的示例产生了下面的消息之一,则设置了 noclobber特性。下面的示例首先打开noclobber特性,然后是将echo的输出重定向到已存在文件,最后是关闭noclobber特性。
$ set -o noclobber
$ echo "kick" > tmp
-bash: tmp: Cannot overwrite existing file
$ set +o noclobber
$ echo "kick" > tmp
我们也可以写一个简单的if语句的脚本来检查noclobber选项是否开启:
#!/bin/bash
# These lines will print a message if the noclobber option is set:
if [ ! -o noclobber ]
  then
    echo "Your files are not protected against accidental overwriting using redirection."
fi
# ./noclobber.sh 
Your files are not protected against accidental overwriting using redirection.
从输出可以看出,我并未开启noclobber选项。


本文转自 zhangzj1030 51CTO博客,原文链接:http://blog.51cto.com/tech110/232312
相关文章
|
2月前
|
Java 编译器
重载和重写的区别是什么?
重载和重写的区别是什么?
|
2月前
重载和重写的区别
重载和重写的区别
12 0
|
7月前
|
Python
python之重写一般方法和重写特殊的构造方法
python之重写一般方法和重写特殊的构造方法
|
10月前
重载和重写有什么区别?
重载和重写有什么区别?
46 0
|
9月前
|
Java
方法的重写
方法的重写
32 0
|
10月前
|
C#
什么是重载、重写,重载和重写的区别是什么?
什么是重载、重写,重载和重写的区别是什么?
87 2
什么是重载、重写,重载和重写的区别是什么?
|
机器学习/深度学习 Java
Java方法重写的注意事项
需要特别说明“无修饰符”这个情况,子类能否访问父类中无修饰符的变量/方法,取决于子类的位置。如果子类和父类在同一个包中,那么子类可以访问父类中的无修饰符的变量/方法,否则不行。
64 0
|
Java 编译器
重载与重写有什么区别?
重载与重写有什么区别?
为什么不通过修改接口或者选择书写继承接口重写方法的新子类,偏偏选择添加上一个装饰器
为什么不通过修改接口或者选择书写继承接口的新子类,偏偏选择添加上一个装饰器?
110 0
为什么不通过修改接口或者选择书写继承接口重写方法的新子类,偏偏选择添加上一个装饰器