redirect - Que hacer>! y>> hacer en tcsh
(2)
En redirección de bash normal >
redireccionando salida estándar a un archivo, sobrescribiendo cuando existe y >>
redireccionando salida estándar a un archivo, añadiéndola cuando existe.
En un script tcsh (c shell) encontré los operadores >!
>>!
siendo utilizado. ¿Qué hacen estos operadores? tcsh también tiene los operadores >
y >>
, ¿cuál es la diferencia?
El signo de admiración suprime el cheque para el tipo de archivo que se escribe en ciertos casos.
Para citar la página man de tcsh:
Si se configura la variable de shell noclobber, entonces el archivo no debe existir o ser un archivo especial de caracteres (por ejemplo, un terminal o ''/ dev / null'') o se produce un error. Esto ayuda a prevenir la destrucción accidental de archivos. En este caso, el ''!'' formularios pueden ser utilizados para suprimir esta verificación.
En tcsh redirección el! symbol significa sobrescribir el archivo existente incluso si noclobber
se configuró noclobber
.
En otras palabras, si no se establece noclobber, entonces:
-
cmd > file
escribirástdout
en el archivo si el archivo no existe -
cmd > file
fallará si el archivo existe -
cmd >> file
anexarástdout
al archivo si el archivo existe -
cmd >> file
fallará si el archivo no existe -
cmd >! file
cmd >! file
escribirástdout
en el archivo , sobrescribiendo cualquier archivo existente -
cmd >>! file
cmd >>! file
agregarástdout
al archivo , creando el archivo si no existe
Si no se establece noclobber
entonces el! no tiene efecto:
-
cmd > file
escribirástdout
en el archivo , sobrescribiendo cualquier archivo existente -
cmd >> file
anexarástdout
al archivo -
cmd >! file
cmd >! file
escribirástdout
en el archivo , sobrescribiendo cualquier archivo existente -
cmd >>! file
cmd >>! file
agregarástdout
al archivo