He visto el comando cat aparecer en algunas cosas en línea y tenía curiosidad por saber qué cat
hizo y para qué sirve en el contexto de alguien que solo está haciendo algunas cosas simples de la línea de comandos.
He visto el comando cat aparecer en algunas cosas en línea y tenía curiosidad por saber qué cat
hizo y para qué sirve en el contexto de alguien que solo está haciendo algunas cosas simples de la línea de comandos.
Respuestas:
cat
's objetivo principal es con gato archivos Enate. cat file1 file2 ...
mostrará los contenidos de file
, file2
y los otros uno tras otro, como si los contenidos estuvieran en un solo archivo. Ver la página de manual :
NAME
cat - concatenate and print files
Está destinado para el uso donde:
un comando de destino no puede leer archivos y debe pasarle varios archivos. Un ejemplo es la tr
utilidad. Por lo general, con un archivo, haría:
tr < file
Pero con varios archivos, la redirección no se puede usar, por lo que debe hacer lo siguiente:
cat file1 file2 ... | tr
wc
, que imprime los recuentos de cada archivo, junto con los nombres de los archivos, donde podría haber deseado solo el total, sin un nombre de archivo.Recuerde que la mayoría de los comandos que encuentro ( grep
, sed
, awk
, sort
, ...) puede leer archivos perfectamente bien.
Si desea ver el contenido de un archivo, use un buscapersonas , less
y more
ambos son muy capaces de presentar archivos para su visualización, y son mucho más convenientes de usar.
cat
es uno de los comandos más utilizados en sistemas operativos tipo Unix. Tiene tres funciones relacionadas con los archivos de texto:
La sintaxis general de cat es:
cat [options] [filenames] [-] [filenames]
El uso más común de cat es leer el contenido de los archivos, y cat es a menudo el programa más conveniente para este propósito. Todo lo que se necesita para abrir un archivo de texto para ver en el monitor es escribir la palabra gato seguida de un espacio y el nombre del archivo y luego presionar la tecla ENTER. Por ejemplo, lo siguiente mostrará el contenido de un archivo llamado archivo1:
cat file1
El segundo papel del gato es la concatenación. (Esta es la fuente del curioso nombre del gato). No hay ningún efecto en los archivos originales.
Por ejemplo, el siguiente comando concatenará copias de los contenidos de los tres archivos archivo1, archivo2 y archivo3:
cat file1 file2 file3
El contenido de cada archivo se mostrará en la pantalla del monitor. Esta salida podría redirigirse fácilmente con el operador de redirección de salida a otro archivo, como el archivo 4, usando lo siguiente:
cat file1 file2 file3 > file4
Gracias al comentario de @muru : cat es capaz de crear nuevos archivos dependiendo de la función de redirección de shell y no de sí mismo
Para archivos pequeños, esto es a menudo más fácil que usar vi, gedit u otros editores de texto. Se logra escribiendo cat seguido por el operador de redirección de salida y el nombre del archivo que se creará, luego presionando ENTERy finalmente presionando simultáneamente las teclas Ctrl& d.
Por ejemplo, un nuevo archivo llamado archivo1 se puede crear escribiendo
cat > file1
luego presione ENTERy simultáneamente presione las teclas Ctrl& d.
PS1: si ya existe un archivo llamado archivo1, se sobrescribirá
PS2: puede agregar al archivo salido utilizando el operador de agregar >>
ejemplo cat >> file1
El comando cat también se puede usar ( según la función de redirección de shell) para crear un nuevo archivo y transferirle los datos de un archivo existente. Ejemplo: hacer una copia del archivo oldfile.txt
:
cat oldfile.txt > newfile.txt
Referencias
cat
no está creando esos archivos, el shell es cuando usaste la redirección. Es posible que lo hayas hecho bien echo foo > file1
.
cat
lo que realmente está haciendo otra cosa. Por ejemplo, hacer less file1 > file2
(o grep '.*' file1 > file
o awk 1 file1 > file2
o ...) tiene el mismo efecto. Lo mismo para 4. Estos son solo malos usos.
> file
y dar el mismo resultado, pero ¿no puedo considerar válido hacerlo con cat?
cat
no se está creando el archivo. Decir que cat
crea o copia el archivo es simplemente falso.
Se puede usar para mostrar el contenido de un archivo. Por ejemplo: cat "my file.txt"
. También puede hacer man cat
para mostrarle los detalles sobre para qué cat
se puede utilizar.
Aquí hay otra forma de creación de archivos mediante redirección de shell (o canalización) y cat
:
cat << EOF > foo.sh
#!/bin/sh
echo 'Hello World!'
EOF
cat << EOF
mostrará las siguientes líneas hasta que la cadena EOF
se encuentre nuevamente. Luego >
( >>
) redirigirá la salida al archivo foo.sh
. Alternativamente, si necesita crear un archivo como root, puede canalizar la salida al comando tee
( tee -a
), ejecutado por el comando sudo
:
cat << EOF | sudo tee foo.sh && sudo chmod +x foo.sh
#!/bin/sh
HELLO='Hello World!'
echo "\$HELLO"
EOF
chmod +x
) si se creó con éxito ( &&
).$
) debe escaparse (con \
) dentro de la salida de cat
.
< <(cat file[12]) tr
así como también<<<$(cat file[12]) tr
son formas perfectamente válidas para redirigir múltiples archivos. Por supuesto, también necesitacat
eso, solo que las tuberías no son la única forma.