¿Para qué se usa 'cat'?


14

He visto el comando cat aparecer en algunas cosas en línea y tenía curiosidad por saber qué cathizo y para qué sirve en el contexto de alguien que solo está haciendo algunas cosas simples de la línea de comandos.

Respuestas:


12

cat's objetivo principal es con gato archivos Enate. cat file1 file2 ...mostrará los contenidos de file, file2y 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 trutilidad. 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
    
  • un comando de destino puede leer desde múltiples archivos, pero su comportamiento puede cambiar cuando se le dan múltiples archivos. Un ejemplo es 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 , lessy moreambos son muy capaces de presentar archivos para su visualización, y son mucho más convenientes de usar.


La redirección se puede usar muy bien con múltiples archivos, ya que puede combinarla con el proceso y la sustitución de comandos: < <(cat file[12]) trasí como también <<<$(cat file[12]) trson formas perfectamente válidas para redirigir múltiples archivos. Por supuesto, también necesita cateso, solo que las tuberías no son la única forma.
postre

@dessert si tienes que ser pedante, esa redirección todavía usa solo un archivo: el archivo que representa el stdout del comando (o stdin, si es al revés). Bash no admite la verdadera redirección de múltiples archivos como zsh.
muru

9

cates uno de los comandos más utilizados en sistemas operativos tipo Unix. Tiene tres funciones relacionadas con los archivos de texto:

  1. mostrándolos
  2. combinando copias de ellos
  3. creando nuevos.
  4. Copiar archivos

La sintaxis general de cat es:

cat [options] [filenames] [-] [filenames]

Lectura de archivos

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

Concatenación

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

Creación de archivos

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

Copiar archivos

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


1
Re 3: catno está creando esos archivos, el shell es cuando usaste la redirección. Es posible que lo hayas hecho bien echo foo > file1.
muru

@muru Tienes toda la razón, pero sigue siendo un uso del comando cat
Maythux

1
No lo es. Estás atribuyendo catlo que realmente está haciendo otra cosa. Por ejemplo, hacer less file1 > file2(o grep '.*' file1 > fileo awk 1 file1 > file2o ...) tiene el mismo efecto. Lo mismo para 4. Estos son solo malos usos.
muru

Sé que podría usarlo solo > filey dar el mismo resultado, pero ¿no puedo considerar válido hacerlo con cat?
Maythux

1
Puede, si especifica que catno se está creando el archivo. Decir que catcrea o copia el archivo es simplemente falso.
muru

1

Se puede usar para mostrar el contenido de un archivo. Por ejemplo: cat "my file.txt". También puede hacer man catpara mostrarle los detalles sobre para qué catse puede utilizar.


0

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 << EOFmostrará las siguientes líneas hasta que la cadena EOFse 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
  • Lo anterior hará que el archivo sea ejecutable ( chmod +x) si se creó con éxito ( &&).
  • El significado especial de algunos caracteres (as $) debe escaparse (con \) dentro de la salida de cat.
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.