4.8 防止重定向时覆盖文件

不过,有一种办法可以防止重定向时覆盖文件,即noclobber选项。如果将noclobber设置为onbash就不允许重定向覆盖已经存在的文件,除非得到你的明确许可。要打开noclobber,使用以下命令:

  1. $ set -o noclobber

从现在起,如果要使用重定向并覆盖文件,应该用>|代替>,如下所示:

  1. $ pwd
  2. /home/scott/music
  3. $ ls -1F
  4. Hank_Mobley/
  5. hank_mobley.txt
  6. Horace_Silver/
  7. John_Coltrane/
  8. $ ls -1F Hank_Mobley/* > hank_mobley.txt
  9. ERROR
  10. $ ls -1F Hank_Mobley/* >| hank_mobley.txt
  11. $ cat hank_mobley.txt
  12. 1958_Peckin'_Time/
  13. 1960_Roll_Call/
  14. 1960_Soul_Station/
  15. 1961_Workout/
  16. 1963_No_Room_For_Squares/

如果觉得不喜欢或不需要noclobber,可以把它关了:

  1. $ set +o noclobber

要一直开着noclobber选项,需要在.bashrc文件中增加一行set -o noclobber