做什么>!和>>!在tcsh做

Pet*_*mit 18 redirect tcsh

在正常的bash重定向中,>将标准输出重定向到文件,在存在时覆盖>>并将标准输出重定向到文件,在存在时附加.

在tcsh(c shell)脚本中,我发现>! >>!正在使用的运算符.这个运营商做了什么?tcsh也有>>>运营商,那有什么区别?

Tom*_*Tom 35

在tcsh重定向!符号表示即使noclobber已设置也会覆盖现有文件.

换句话说,如果设置了noclobber,那么:

  • cmd > file将写入stdout文件,如果文件不存在
  • cmd > file如果文件存在,则会失败
  • cmd >> file如果文件存在,将附加stdout文件
  • cmd >> file如果文件不存在将失败
  • cmd >! file将写入stdout文件,覆盖所有现有文件
  • cmd >>! file将附加stdout文件,如果文件尚不存在则创建该文件

如果noclobber没有设置那么!没有效果:

  • cmd > file将写入stdout文件,覆盖所有现有文件
  • cmd >> file将附加stdout文件
  • cmd >! file将写入stdout文件,覆盖所有现有文件
  • cmd >>! file将附加stdout文件

  • 请注意,bash具有类似的功能。它有自己的“ noclobber”选项(通常未设置),并使用“> |” 和“ >> |” 覆盖它。 (2认同)