Search code examples
http-redirecttcsh

What do >! and >>! do in tcsh


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

In a tcsh (c shell) script I found the operators >! >>! being used. What do this operators do? tcsh does also have the > and >> operators, so what is the difference?


Solution

  • 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