¿Hay alguna razón para usar `cat` cuando tienes` less`?


59

Solía ​​usar catpara ver archivos. Luego aprendí que lessgeneralmente es mejor, y es imprescindible si el archivo es más largo que unas pocas docenas de filas.

Mi pregunta: ¿hay alguna razón para usar en catlugar de less? ¿Hay alguna situación en la que cathaya una mejor solución?


17
lessy catresuelven diferentes problemas y cada uno es mejor que el otro en su propio dominio del problema
David Heffernan

2
Solo uso catpara canalizar su salida lessdespués.
FUZxxl

1
A menudo uso catpara imprimir archivos muy cortos en la consola, los archivos /procy /sysson muy buenos candidatos. De esta manera puedo ver el contenido de varios archivos simultáneamente.
Feuermurmel

Respuestas:


20

Personalmente prefiero viewel contenido estático o tail -fel contenido dinámico.

Sin embargo, esto no responde a su pregunta. Hay un dicho "por qué usar más si tienes menos" ;-)

Pero hay casos en los que prefiero gato a menos: generalmente trabajo con X11-windows. Estas ventanas tienen un búfer de desplazamiento que se puede configurar en unos cientos de líneas.

Hacer un catfor - digamos 200 líneas y luego usar el mouse con la barra de desplazamiento es más cómodo para mí que usarlo lessen estos casos.


44
¿ viewQuieres decir lo de siempre vim -R, o tienes algo más con ese nombre?
manatwork

No, solo vi (o vim) en modo de solo lectura. CentOS establece ese alias por defecto. Esto no activará HIDS cuando vea un archivo en un directorio seguro.
Nils

2
less +Fhace lo que tail -fhace
legends2k

2
En realidad, viewno es un alias; Es un enlace ( viao vim). vimira argv[0]cuando comienza (para ver qué nombre se invocó bajo) y, si eso es viewo rview, se establece el modo de sólo lectura (como si hubiera escrito vim -R).
G-Man dice 'reinstalar a Monica' el

91

Aunque ambos comandos le permiten ver el contenido de un archivo, sus propósitos originales son bastante diferentes.

menos extiende las capacidades de más . Este último fue creado para ver el contenido de un archivo de una pantalla a la vez. menos agrega características tales como movimientos hacia atrás y una mejor administración de memoria (no es necesario leer el archivo completo antes de poder ver las primeras líneas).

cat concatena archivos e imprime el resultado en la salida estándar. Si proporciona solo un archivo, verá el contenido de ese archivo. Se vuelve 'poderoso' cuando proporciona múltiples archivos. Un buen ejemplo es la combinación de split y cat. El primer comando dividirá un archivo grande en pequeñas porciones. El segundo concatenará las pequeñas porciones en un solo archivo.

Volviendo a su pregunta, se preferiría cat en un script autónomo que requiera que los archivos se lean por completo (o se concatenen) sin interacción. En términos de visualización de archivos, creo que es más una cuestión de gustos.


44
lesssiempre permite buscar dentro del archivo, que catno lo hace.
Bernhard

@Bernhard: ¿Qué tal hacer un grep en la salida de cat?
user3527975

23

Usualmente lo uso catcuando necesito escribir un comando basado en algo en el archivo. cates más conveniente ya que puede ver el archivo (si es pequeño) mientras tiene acceso al indicador de comandos de shell. También permite el revestimiento de tuberías.


3
Para un archivo, la redirección de la entrada estándar también es posible y, a menudo, preferible.
Programador

17
¿Hay alguna situación en la que el gato sea una mejor solución?

Cuando se trata de más de un archivo y desea concatenarlos.

Desde la página del manual:

cat f - g
        Output f's contents, then standard input, then g's contents.

15

Hay personas que argumentan violentamente que el único propósito de cates para con gato archivos Enate. Para cualquier otro uso, hay more(o less).

Pero esto no tiene en cuenta un hecho bastante importante: cates un carácter menos para escribir. Utilizo esos comandos con tanta frecuencia que un personaje menos es obvio.

Otra razón es cuando quieres crear un archivo. A menudo copio y pego texto de la web en un archivo como este (se muestra el símbolo del sistema):

$ cat > filename
<Cmd-V>
<Ctrl-D>
$

Es decir, abro un archivo filenamepara acceso de escritura, pego el contenido y cierro la secuencia presionando Ctrl- D. Ni lesstampoco morepueden hacerlo, y es más rápido que abrir un editor.


44
Si usa zsh como shell, puede configurarlo para que $<filename(dónde $está el indicador) invoque $ PAGER con stdin conectado filename. Eso es aún menos caracteres para escribir que cat.
Kevin Cathcart

@Kevin Es bueno saberlo pero soy un usuario bash.
Konrad Rudolph

2
En Mac OS X, uso pbpaste > filename, y creo que X tiene algo similar. Todavía uso catpara la creación rápida de archivos, solo que no para pegar.
cobbal

@cobbal Jeje, nunca pensé en eso a pesar de que uso pbcopy/ pbpastepara otros fines.
Konrad Rudolph

1
En realidad, son dos caracteres menos: debe presionar qpara salir less: D
Martin von Wittich

9

A veces no quieres la paginación que lesssí lo hace y solo quieres el archivo completo para que lo uses cat.


4

Yo uso catpara grep(múltiples) archivos.

cat <filename1> [<filename2> <filename3>] | grep -i "string of interest"

Sé que grepadmite nombres de archivo, pero si está seleccionando el mismo archivo para diferentes términos de búsqueda, editar un comando donde el término de búsqueda es lo último en la línea es más fácil que tener que presionar Ctrl + tecla de flecha de vuelta a través de la línea.


4

cat se puede usar para concatenar varios archivos binarios en uno grande:

cat data.001 data.002 data.003 > bigdata.dat

3

Yo uso less -FX, lo que hace que se lesscomporte como catcuando un archivo se puede mostrar en una pantalla. Desde la página del less(1)manual:

-F or --quit-if-one-screen
       Causes less to automatically exit if the entire file can be dis-
       played on the first screen.

-X or --no-init
       Disables sending the termcap initialization and deinitialization
       strings  to  the  terminal.   This is sometimes desirable if the
       deinitialization string does something unnecessary, like  clear-
       ing the screen.

2

Supongo que, debido a la popularidad de las variantes de Unix ahora, muchas personas no tienen que administrar sus sistemas (con venganza). Cuando las cosas se complican, es posible que pueda reiniciar e ingresar a su sistema en lo que se denomina un entorno restringido.

Obtiene una línea de comando y accede a un pequeño conjunto de lo que se considera comandos útiles que son pequeños y generalmente están vinculados estáticamente. Puede obtener vi como editor o incluso el ed más pequeño, pero no emacs o vim. Conseguirías un gato, pero no menos. La idea es darle suficientes herramientas para reparar su sistema sin tomar demasiados recursos, ya que esos recursos pueden estar configurados incorrectamente o agotados. cuanto menos control sobre esas circunstancias es superfluo.


2

Y lessno está preinstalado en todas las distribuciones de GNU / Linux. (por ejemplo, Gentoo) catestá en todas partes, probablemente.


2

Las catestancias en la pantalla. Todo lessdesaparece.

Aclarado por / para Volker Siegel:

La salida de catpermanece en la pantalla. Todo lo que se muestra lessdesaparece después del cierre.


1

Puede haber un problema con la escalada de privilegios, ya que dentro de 'menos' puede presionar 'v' para editar un archivo o '!' para enviar un comando de shell.

Es posible que desee permitir que algunos usuarios vean un archivo que solo puede leer el superusuario, pero no permitir que esos usuarios editen el archivo o usen privilegios de superusuario en general. Puede hacer esto editando '/ etc / sudoers' para permitirles usar 'sudo / bin / cat / etc / importantfile'. No querría permitir 'sudo / usr / bin / less / etc / importantfile', porque podrían usar 'v' para editar el archivo, o usar '!' lanzar un shell con privilegios completos de superusuario.

Por supuesto, los usuarios podrían usar 'sudo / bin / cat / etc / importantfile | less 'y aún usa' less ', sin los riesgos de seguridad.


1

Los dos son diferentes. lesses un buscapersonas no estándar ( morees el estándar), que se usa para ver texto, mientras que cates una utilidad estándar, que se usa para concatenar cualquier tipo y número de flujos de datos en uno.

Puede parecer que hacen lo mismo en algunas circunstancias, pero, de nuevo, también lo hacen otras utilidades.


0

Por conveniencia. el gato tiene 3 caracteres mientras que más / menos tiene 4 caracteres. Y escribir gato solo requiere su mano izquierda solamente.


1
¿Por qué solo usar su mano izquierda es una ventaja? No uso el mouse en la terminal ...
Bernhard

0

En términos de cómo mostrar los personajes en la pantalla, lesspuede hacer lo que catpuede hacer; Y mucho más.

Pero hay una muy buena razón para usar cat en algunos casos:
lesses demasiado complejo para arrojarlo a problemas muy simples. Tengo tantas opciones que es difícil encontrar las catrelacionadas en la página del manual.


¿Quieres mostrar las pestañas en un Makefile?

En man cat, la primera opción es -A.
La descripción no es útil: -vET.
Sin embargo, el nombre de la opción suena justo: --show-all.

Y cat -A Makefilehace lo que necesito.


Ahora, ve a buscar eso para less.


0

Tanto 'less' como 'more' funcionarán exactamente como 'cat' si la salida no es un terminal (tty), en cuanto a tuberías y archivos, ambos volverán a la paginación.

Creo que es seguro decir que 'cat' siempre está presente en cualquier sistema tipo Unix que puedas encontrar. La presencia de 'menos' y / o 'más' en cualquier sistema es menos predecible.

Por lo tanto, en los scripts, si solo necesita una operación de no paginación, 'cat' seguramente estará presente donde sea que se use su script en un sistema de tipo Unix.


1
Bueno, es seguro asumir que moreestará disponible, ya que es obligatorio según la Especificación Single Unix.
Kusalananda

Lamentablemente, aunque puede ser un mandato así, pero en mi experiencia no siempre está presente. Vale la pena señalar que hay una serie de sistemas similares a Unix que no afirman ser Unix. Creo que uno puede estar razonablemente seguro de que sea un lesso una morese presentará, pero creo que no se puede confiar en una en particular, ni de que se trata de una 'verdadera' aplicación ... a menudo uno tiene un alias a la otra, a veces' Re una versión ligera mínima.
user208007

-1

Tubería cat a través de grep es útil:

cat <filename> | grep -i "string of interest"

44
Sin mencionar que greptoma un nombre de archivo como argumento, o podría usar la redirección. La pipa es cara.
Chris Down

25
¡Felicitaciones, ganaste un premio de 'uso inútil del gato'!
ThatGraemeGuy

44
@TimKennedy - "cuando tienes less" está en el título de la pregunta ...
Chris Down

55
Votado. Hago esto regularmente. Si quiero grep un archivo varias veces para diferentes términos de búsqueda, esto es más fácil. grep quiere grep [search term] [filename]Por lo tanto, es más difícil editar el término de búsqueda si estoy usando el historial del terminal. Al canalizar grep, el término de búsqueda es lo último en la línea y más fácil de editar.
Nombre falso

10
Todavía puede tener el orden que desee sin usar cat: < [filename] grep [search term]y < filename tail -n 1000 | grep pattern. La redirección puede ir prácticamente a cualquier parte de una línea de comando.
camh
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.