4.8 防止重定向时覆盖文件
不过,有一种办法可以防止重定向时覆盖文件,即noclobber
选项。如果将noclobber
设置为on
,bash
就不允许重定向覆盖已经存在的文件,除非得到你的明确许可。要打开noclobber
,使用以下命令:
$ set -o noclobber
从现在起,如果要使用重定向并覆盖文件,应该用>|
代替>
,如下所示:
$ pwd
/home/scott/music
$ ls -1F
Hank_Mobley/
hank_mobley.txt
Horace_Silver/
John_Coltrane/
$ ls -1F Hank_Mobley/* > hank_mobley.txt
ERROR
$ ls -1F Hank_Mobley/* >| hank_mobley.txt
$ cat hank_mobley.txt
1958_Peckin'_Time/
1960_Roll_Call/
1960_Soul_Station/
1961_Workout/
1963_No_Room_For_Squares/
如果觉得不喜欢或不需要noclobber
,可以把它关了:
$ set +o noclobber
要一直开着noclobber
选项,需要在.bashrc
文件中增加一行set -o noclobber
。