如何覆盖bash的“ noclobber”选项?


17

bash noclobber选项可防止通过重定向覆盖文件。但是有时候我真的很想。csh具有类似的选项,可以通过!在文件名前放置a来覆盖它。有什么办法做到这一点bash

Answers:


19

是。附加|到重定向运算符以形成>|。这在《 Bash参考手册》(qv)第3.6.2节中

如果重定向运算符为“>”,并且已启用内置集合的noclobber选项,则如果存在其名称由word扩展产生的文件并且该文件是常规文件,则重定向将失败。如果重定向操作符为“> |”,或者重定向操作符为“>”,并且未启用noclobber选项,则即使存在以word命名的文件,也会尝试进行重定向。

请访问有关noclobber选项的本教程。可能会有帮助。


3

在中使用|(“ pipe”)bash,而不是在中使用!(“ bang”)csh。例如:

echo done >| out

请注意,如果您想重定向stderrstdout 覆盖noclobber,则>|&也不行&>|;使用长格式:

cmd-with-errors done >| out 2>&1

你知道为什么err &>| out不起作用吗?
Sanghyun Lee
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.