What do >! and >>! do in tcsh

后端 未结 2 1167
刺人心
刺人心 2020-12-05 14:55

In normal bash redirection > redirecting standard output to a file, overwriting when it exists and >> redirecting standard output to a fil

相关标签:
2条回答
  • 2020-12-05 15:05

    The exclamation mark suppresses the check for the type of file being written to in certain cases.

    To quote the tcsh man page:

    If the shell variable noclobber is set, then the file must not exist or be a character special file (e.g., a terminal or ‘/dev/null’) or an error results. This helps prevent accidental destruction of files. In this case the ‘!’ forms can be used to suppress this check.

    0 讨论(0)
  • 2020-12-05 15:30

    In tcsh redirection the ! symbol means overwrite the existing file even if noclobber is set.

    In other words, if noclobber is set then:

    • cmd > file will write stdout to file if file does not exist
    • cmd > file will fail if file exists
    • cmd >> file will append stdout to file if file exists
    • cmd >> file will fail if file does not exist
    • cmd >! file will write stdout to file, overwriting any existing file
    • cmd >>! file will append stdout to file, creating the file if it does not already exist

    If noclobber is not set then the ! has no effect:

    • cmd > file will write stdout to file, overwriting any existing file
    • cmd >> file will append stdout to file
    • cmd >! file will write stdout to file, overwriting any existing file
    • cmd >>! file will append stdout to file
    0 讨论(0)
提交回复
热议问题