GNU/Linux >> Tutoriales Linux >  >> Linux

¿Es un Uuoc (uso inútil de Cat) redirigir un archivo a otro?

Si quiero hacer el contenido de file2 coincide con el contenido de file1 , obviamente podría simplemente ejecutar cp file1 file2 .

Sin embargo, si quiero conservar todo sobre file2 excepto el contenido:propietario, permisos, atributos extendidos, ACL, enlaces duros, etc., etc., entonces no me gustaría ejecutar cp .* En ese caso, solo quiero dejar caer el contenido de file1 en file2 .

Parece que lo siguiente lo haría:

< file1 > file2

Pero no funciona. file2 se trunca a nada y no se escribe. Sin embargo,

cat < file1 > file2

lo hace trabajo.

Me sorprendió que la primera versión no funciona.

¿Es la segunda versión un UUOC? ¿Hay alguna manera de hacer esto sin invocar un comando, simplemente usando redirecciones?

Nota:Soy consciente de que UUOC es más un punto pedante que un verdadero anti-patrón.

*Como descubrió tniles09, cp voluntad de hecho funciona en este caso.

Respuesta aceptada:

cat < file1 > file2 no es un UUOC. Clásicamente, < y > hacer redirecciones que corresponden a duplicaciones de descriptores de archivos a nivel del sistema.
Las duplicaciones de descriptores de archivos por sí mismas no hacen nada (bueno, > las redirecciones se abren con O_TRUNC , por lo que, para ser precisos, las redirecciones de salida truncan el archivo de salida). No dejes que el < > los símbolos te confunden. Las redirecciones no mueven datos:asignan descriptores de archivo a otros descriptores de archivo.

En este caso, abre file1 y asigne ese descriptor de archivo al descriptor de archivo (<file1 ==0<file1 ) y file2 y asigne ese descriptor de archivo al descriptor de archivo 1 (>file2 ==1>file2 ).

Ahora que tiene dos descriptores de archivo, necesita un proceso para palear datos entre los dos, y eso es lo que cat es para.


Linux
  1. Cómo copiar o clonar permisos de un archivo a otro en Linux

  2. ¿Herramienta para obtener las líneas en un archivo que no están en otro?

  3. ¿Cómo copiar las líneas 10 a 15 de un archivo en otro archivo, en Unix?

  4. ¿Puedo usar un disco de virtualbox para varias máquinas?

  5. reemplazar líneas en un archivo con líneas en otro por número de línea

Cómo usar Nginx para redirigir

Comando Cat en Linux

¿Cómo copiar un archivo de otro directorio al actual?

Redirigir strace al archivo

¿Cómo redirijo un dominio a otro dominio localmente?

¿Es mejor usar cat, dd, pv u otro procedimiento para copiar un CD/DVD?