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
相关文章
|
7月前
|
Java 编译器
重载和重写的区别是什么?
重载和重写的区别是什么?
|
24天前
重载和重写的区别
重载发生在同一个类中,方法名相同、参数列表、返回类型、权限修饰符可以不同 重写发生在子类中,方法名相、参数列表、返回类型都相同,权限修饰符要大于父类方法,声明异常范围要小于父类方法,但是final和private修饰的方法不可重写
24 1
|
6月前
|
Java
重载与重写的区别
重载与重写的区别
49 5
|
6月前
|
Java
重载和重写区别
重载和重写区别
37 2
|
Python
python之重写一般方法和重写特殊的构造方法
python之重写一般方法和重写特殊的构造方法
|
Java
方法的重写
方法的重写
59 0
什么是重载、重写,重载和重写的区别是什么?
什么是重载、重写,重载和重写的区别是什么?
108 2
什么是重载、重写,重载和重写的区别是什么?
|
机器学习/深度学习 Java
Java方法重写的注意事项
需要特别说明“无修饰符”这个情况,子类能否访问父类中无修饰符的变量/方法,取决于子类的位置。如果子类和父类在同一个包中,那么子类可以访问父类中的无修饰符的变量/方法,否则不行。
86 0
|
Java 编译器
重载与重写有什么区别?
重载与重写有什么区别?