2011-07-20 17 views
12

En la redirección de bash normal > se redirige la salida estándar a un archivo, sobrescribiendo cuando existe y >> redirigiendo la salida estándar a un archivo, que se agrega cuando existe.¡Qué hacer>! y >> do en tcsh

En una secuencia de comandos tcsh (shell c) encontré los operadores >!>>! utilizados. ¿Qué hacen estos operadores? tcsh también tiene los operadores > y >>, ¿cuál es la diferencia?

Respuesta

28

In tcsh redirection the! símbolo significa sobrescribir el archivo existente incluso si está configurado noclobber.

En otras palabras, si noclobber se establece a continuación:

  • cmd > file escribirá stdout a archivo si archivo no existen
  • cmd > file fallará si existe archivo
  • cmd >> file anexará stdout a archivo si archivo existe
  • cmd >> file fallará si archivo no existe
  • cmd >! file escribirá stdout a archivo, sobrescribiendo cualquier archivo existente
  • cmd >>! file anexará stdout a archivo, creando el archivo si ya no existe

Si noclobber es no establece entonces el! no tiene ningún efecto:

  • cmd > file escribirá stdout-archivo, sobrescribiendo cualquier archivo existente
  • cmd >> file anexará stdout-archivo
  • cmd >! file escribirá stdout-archivo, sobrescribiendo cualquier archivo existente
  • cmd >>! file anexará stdout a archivo
+1

Tenga en cuenta que bash tiene algo similar. Tiene su propia opción "noclobber" (que normalmente no está configurada), y usa "> |" y ">> |" para anularlo. –

3

El signo de exclamación suprime el cheque para el tipo de archivo que está siendo escrita en ciertos casos.

Para citar la página man tcsh:

Si el noclobber variable de shell se establece, 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, los formularios '!' Se pueden usar para suprimir este control.

Cuestiones relacionadas