cat
es una utilidad estándar de Unix que lee archivos secuencialmente, escribiéndolos en la salida estándar . El nombre se deriva de su función para con cat enar archivos.
Autor (es) original (es) | Ken Thompson , Dennis Ritchie |
---|---|
Desarrollador (es) | Laboratorios AT&T Bell |
Versión inicial | 3 de noviembre de 1971 |
Sistema operativo | Unix , similar a Unix , Plan 9 , Inferno |
Plataforma | Multiplataforma |
Tipo | Mando |
Historia
cat
fue parte de las primeras versiones de Unix , por ejemplo, la Versión 1 , y reemplazó pr
, una utilidad PDP-7 y Multics para copiar un solo archivo a la pantalla. [1]
La versión de coreutilscat
incluida en GNU fue escrita por Torbjorn Granlund y Richard Stallman . [2]
Uso
La Especificación Única de Unix define la operación de cat
leer archivos en la secuencia dada en sus argumentos, escribiendo su contenido en la salida estándar en la misma secuencia. La especificación exige el soporte de un indicador de opción, u para salida sin búfer, lo que significa que cada byte se escribe después de haber sido leído. Algunos sistemas operativos, como los que utilizan GNU Core Utilities , hacen esto de forma predeterminada e ignoran la bandera. [3]
Si uno de los nombres de archivo de entrada se especifica como un solo guión ( - ), se cat
lee desde la entrada estándar en ese punto de la secuencia. Si no se especifica ningún archivo, cat
lee solo de la entrada estándar.
La sintaxis del comando es:
gato [opciones] [nombre_archivo]
Opciones
Ejemplo de algunas cat
opciones: [4]
- -b(GNU :) --number-nonblank, número de líneas de salida que no están en blanco
- -eimplica, -vpero también muestra los caracteres de final de línea comoPS(Solo GNU: -Elo mismo, pero sin dar a entender -v)
- -n(GNU :) --number, numere todas las líneas de salida
- -s(GNU --squeeze-blank:), aprieta varias líneas en blanco adyacentes
- -timplica -v, pero también muestran pestañas como^ Yo(GNU: -Tlo mismo, pero sin dar a entender -v)
- -uutilice E / S sin búfer para la salida estándar. POSIX no especifica el comportamiento sin esta opción.
- -v(GNU --show-nonprinting:), muestra caracteres no imprimibles, excepto las pestañas y el carácter de final de línea
Casos de uso
cat
se puede utilizar para canalizar un archivo a un programa que espera texto sin formato o datos binarios en su flujo de entrada. cat
no destruye los bytes que no son de texto al concatenar y generar. Como tal, sus dos casos de uso principales son archivos de texto y ciertos tipos de archivos binarios compatibles con el formato.
La concatenación de texto se limita a archivos de texto que utilizan la misma codificación heredada, como ASCII . cat
no proporciona una forma de concatenar archivos de texto Unicode que tienen una marca de orden de bytes o archivos que usan codificaciones de texto diferentes entre sí.
Para muchos conjuntos de datos binarios estructurados, el archivo combinado resultante puede no ser válido; por ejemplo, si un archivo tiene un encabezado o pie de página único, el resultado los duplicará falsamente. Sin embargo, para algunos formatos de contenedor digital multimedia , el archivo resultante es válido y, por lo tanto, cat
proporciona un medio eficaz para agregar archivos. Los flujos de video pueden ser un ejemplo significativo de archivos que cat
pueden concatenarse sin problemas, por ejemplo, el flujo de programas MPEG (MPEG-1 y MPEG-2) y los formatos DV (Video digital), que son básicamente flujos de paquetes simples.
Ejemplos de
Command | Explicación |
---|---|
cat file1.txt | Mostrar el contenido del archivo |
cat file1.txt file2.txt | Concatenar dos archivos de texto y mostrar el resultado en la terminal |
cat file1.txt file2.txt > newcombinedfile.txt | Concatenar dos archivos de texto y escribirlos en un archivo nuevo |
cat >newfile.txt | Cree un archivo llamado newfile.txt. Escriba la entrada deseada y presione CTRL + D para finalizar. El texto estará en el archivo newfile.txt. |
cat -n file1.txt file2.txt > newnumberedfile.txt | Algunas implementaciones de cat, con la opción -n, también pueden numerar rectas |
cat file1.txt > file2.txt | Copie el contenido de file1.txt en file2.txt |
cat file1.txt >> file2.txt | Agregue el contenido de file1.txt a file2.txt |
cat file1.txt file2.txt file3.txt | sort > test4 | Concatenar los archivos, ordenar el conjunto completo de líneas y escribir la salida en un archivo recién creado |
cat file1.txt file2.txt | less | Ejecute el programa "menos" con la concatenación de archivo1 y archivo2 como entrada |
command | cat | Cancelar el comportamiento especial de "comando" (por ejemplo, paginación) cuando escribe directamente en TTY (consulte UUOC a continuación) |
Cultura Unix
Definición de archivo de jerga
La versión 4.4.7 del archivo de jerga enumera esto como la definición de cat
:
- Para arrojar un archivo completo a la pantalla o algún otro receptor de salida sin pausa (syn. Blast).
- Por extensión, para descargar grandes cantidades de datos en un objetivo no preparado o sin la intención de examinarlo con atención. Uso: considerado tonto. Rara fuera de los sitios Unix. Véase también dd, BLT .
Entre los fanáticos de Unix, cat(1)se considera un excelente ejemplo de diseño de interfaz de usuario , porque entrega el contenido del archivo sin tanta verbosidad como espaciado o encabezados entre los archivos, y porque no requiere que los archivos consistan en líneas de texto, pero funciona con cualquier tipo de datos.
Entre los críticos de Unix, cat(1)se considera el ejemplo canónico de un mal diseño de interfaz de usuario, debido a su nombre lamentablemente no obvio. Se usa con mucha más frecuencia para convertir un solo archivo en una salida estándar que para concatenar dos o más archivos. El nombre catde la operación anterior es tan intuitivo como, por ejemplo, LISP s' cdr.
Uso inútil de gato
El uso inútil de cat ( UUOC ) es una jerga común de Unix para construcciones de línea de comando que solo proporcionan una función de conveniencia para el usuario. [5] En informática, la palabra "abuso", [6] en el segundo sentido de la definición, se utiliza para desacreditar el uso excesivo o innecesario de una construcción del lenguaje; por lo tanto, el abuso de a cat
veces se denomina "abuso de gatos". cat
En el premio se da un ejemplo de abuso común :
cat nombre de archivo | comando arg1 arg2 argn
Esto se puede reescribir usando la redirección de stdin en su lugar, en cualquiera de las siguientes formas (la primera es más tradicional):
comando arg1 arg2 argn
Más allá de otros beneficios, los formularios de redirección de entrada permiten que el comando realice un acceso aleatorio al archivo, mientras que los cat
ejemplos no. Esto se debe a que el formulario de redirección abre el archivo como el descriptor de archivo stdin al que el comando puede acceder por completo, mientras que el cat
formulario simplemente proporciona los datos como un flujo de bytes.
Otro caso común en el que no cat
es necesario es cuando un comando por defecto opera en stdin, pero leerá desde un archivo, si el nombre del archivo se da como argumento. Este es el caso de muchos comandos comunes; los siguientes ejemplos
cat "$ archivo" | grep "$ patrón" cat "$ archivo" | menos
en cambio, se puede escribir como
grep "$ patrón" "$ archivo" menos "$ archivo"
Un uso interactivo común de cat
para un solo archivo es generar el contenido de un archivo en una salida estándar. Sin embargo, si la salida se canaliza o se redirige, no cat
es necesario.
Un cat
escrito con UUOC aún podría ser preferido por razones de legibilidad, ya que leer un flujo canalizado de izquierda a derecha podría ser más fácil de conceptualizar. [7] Además, un uso incorrecto del símbolo de redirección ">" en lugar de "<" (a menudo adyacente en los teclados) puede eliminar permanentemente el contenido de un archivo, en otras palabras , una paliza , y una forma de evitar esto es usar cat
con tubería. Comparar:
comandocommand2> fuera command2> fuera
con:
gato en | comando | command2> fuera
tac
tac es un comando de Linux que permite ver archivos línea por línea, comenzando desde la última línea. (tac no invierte el contenido de cada línea individual, solo el orden en el que se presentan las líneas). Se nombra por analogía con cat
.
Uso:
Uso: tac [OPCIÓN] ... [ARCHIVO] ...Escriba cada ARCHIVO en la salida estándar, la última línea primero.Sin FILE, o cuando FILE es -, lea la entrada estándar.Los argumentos obligatorios para las opciones largas también son obligatorios para las opciones cortas. -b, --antes adjuntar el separador antes en lugar de después -r, --regex interpretan el separador como una expresión regular -s, --separator = STRING usa STRING como separador en lugar de nueva línea : ayuda a mostrar esta ayuda y salir --version información de la versión de salida y salida
Ver también
Referencias
- ^ McIlroy, MD (1987). Un lector de investigación Unix: extractos comentados del Manual del programador, 1971–1986 (PDF) (Informe técnico). CSTR. Bell Labs. 139.
- ^ https://linux.die.net/man/1/cat
- ^ GNU Coreutils. "GNU Coreutils manual" , GNU , recuperado el 1 de marzo de 2017.
- ^ Página de manual de OpenBSD y la versión GNU Core Utiltites de cat
- ^ comp.unix.shell. "Ejemplo de premio temprano de UUOC (1994)" , comp.unix.shell a través de Google Groups , recuperado el 1 de marzo de 2017.
- ^ "Definición de abuso de Merriam Webster" . Consultado el 25 de febrero de 2021 .
- ^ Nguyen, Dan. "Laboratorio de periodismo computacional de Stanford" . stanford.edu . Consultado el 8 de octubre de 2017 .
enlaces externos
- : concatenar e imprimir archivos - Referencia de comandos y utilidades, Especificación única de UNIX , Edición 7 de The Open Group
- Estilo UNIX, o cat -v Considered Dañino - Un artículo de Rob Pike sobre el diseño adecuado de comandos Unix usando cat como ejemplo.
- cat (1) página de manual original en la Primera Edición de Unix .
- : concatenar y escribir archivos - referencia de GNU Coreutils
- : concatenar e imprimir archivos - Manual de comandos generales de OpenBSD
- - Manual de comandos generales de FreeBSD
- - Manual del programador de Plan 9 , Volumen 1
- : concatenar y escribir archivos al revés - referencia de GNU Coreutils