Mejor evitar el gato; escríbalo de esta manera si la edición de líneas es importante:
$ < filename grep pattern
La razón es que enviar todos los datos a través de cat cuesta memoria y recursos de CPU. Otro beneficio de pasar el nombre del archivo como argumento en lugar de redirigir la entrada estándar es que le permite al comando la opción de mmap() el archivo.
No puedo creer que nadie haya hecho referencia al "Uso inútil del gato" http://www.smallo.ruhr.de/award.html todavía
Hay una ventaja cuestionable. Si tiene una canalización larga, parece un poco más ortogonal con cat:
cat file | command1 | command 2 | command3
Agrupa todos los comandos juntos.
Por supuesto, como han dicho otros (y yo lo hago)
< file command1 | command2 | command3
Realiza prácticamente lo mismo. Dicho esto, cat es bastante pequeño y no dañará tu computadora si la usas cuando realmente no la necesitas.
Normalmente usando cat
vs golpear directamente un archivo no cambia nada, pero hace una diferencia para ciertos comandos que se preocupan si hay varios archivos como argumentos, como grep
. Caso en cuestión:
cat file1 file2 | grep SOMETHING
tendrá una salida diferente a
grep SOMETHING file1 file2
Que tendrá los nombres de archivo coincidentes en la salida. Hay momentos en los que no quiero los nombres de archivo, y es una ventaja usar cat
.
No hay ventaja. El hecho de que el cursor esté al final tampoco importa mucho si lo estructura así:< inputfile grep -args foo