In normal bash redirection >
redirecting standard output to a file, overwriting when it exists and >>
redirecting standard output to a fil
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.
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 existcmd > file
will fail if file existscmd >> file
will append stdout
to file if file existscmd >> file
will fail if file does not existcmd >! file
will write stdout
to file, overwriting any existing filecmd >>! file
will append stdout
to file, creating the file if it does not already existIf noclobber
is not set then the ! has no effect:
cmd > file
will write stdout
to file, overwriting any existing filecmd >> file
will append stdout
to filecmd >! file
will write stdout
to file, overwriting any existing filecmd >>! file
will append stdout
to file