¿Cómo puedo mostrar el contenido de un archivo de texto en la línea de comando?


132

Me gustaría mostrar el contenido de un archivo de texto en la línea de comando. El archivo solo contiene 5-6 caracteres. ¿Hay una forma fácil de hacer esto?

Respuestas:


195

Utilizando cat

Como su archivo es corto, puede usarlo cat.

cat filename

Utilizando less

Si tiene que ver el contenido de un archivo más largo, puede usar un localizador como less.

less filename

Puede hacer que se lesscomporte como catcuando se invoca en archivos pequeños y que se comporte normalmente de lo contrario al pasarle las banderas -Fy -X.

less -FX filename

Tengo un alias para less -FX. Puedes hacer uno tú mismo así:

alias aliasname='less -FX'

Si agrega el alias a su configuración de shell , puede usarlo para siempre.

Utilizando od

Si su archivo contiene caracteres extraños o no imprimibles, puede usar odpara examinar los caracteres. Por ejemplo,

$ cat file
(ÐZ4 ?o=÷jï
$ od -c test
0000000 202 233   ( 320   K   j 357 024   J 017   h   Z   4 240   ?   o
0000020   = 367  \n
0000023

+1, también sed -n l filepodría ser útil.
enzotib

1
¿ lessTiene alguna ventaja clara sobre otros programas de buscapersonas pgo simplemente se reduce a preferencias personales?
Sam Weinberg

@SamWeinberg: lesstiene más funciones que pg. Echar un vistazo a la less(1)y pg(1)páginas de manual. También hay otros buscapersonas. Echa un vistazo a unix.stackexchange.com/questions/81129/… . lesses probablemente el buscapersonas más utilizado, pero el que usa se reduce a preferencias personales.

no te olvides morey most!
Rudolf Olah

29

A pesar de que todo el mundo usa cat filenamepara imprimir un texto archivos a la salida estándar de primer propósito es CON gato enating. De la página del manual del gato:

cat: concatena archivos e imprime en la salida estándar

Ahora cat está bien para imprimir archivos, pero hay alternativas:

  echo "$(<filename)"
or
  printf "%s" "$(<filename)"

El ( )devolver el valor de una expresión, en este caso el contenido de nombre de archivo que luego es expandido en $para echoo printf.

Actualizar:

< filename

Esto hace exactamente lo que quieres y es fácil de recordar.

Aquí hay un ejemplo que le permite seleccionar un archivo en un menú y luego imprimirlo.

#!/bin/bash

select fname in *;
do
# Don't forget the "" around the second part, else newlines won't be printed
  printf "%s" "$(<$fname)"
  break
done

Para más información:
BashPitfalls - archivo cat | sed s / foo / bar /> referencia de archivo
Bash - Redireccionamiento


Su actualización: " < filenamees exactamente lo que quiere, ..." es engañosa. En general, aunque esta es una discusión interesante sobre alternativas, creo que cates más simple.
X Tian

Desnudo < filenameno muestra el contenido del archivo, pero cat filenamesí.
jarno

También podrías usarlo tee < filename.
jarno

2
+1 para el echo "$(<filename)"bashismo. No hay suficiente de eso aquí.
Yokai

Esa es una gran idea para usar Linux Internal Command con echo "$(<filename)". Gracias ...
Reza Harasani

9

Puede usar el siguiente comando para mostrar el contenido de un archivo de texto.

nombre de archivo del gato 

Para obtener más información acerca de cat, ejecute man cat.

9

Las herramientas para manejar archivos de texto en Unix son comandos básicos y cotidianos:

En Unix y Linux para imprimir todo el contenido en el archivo

cat filename.txt

o

more filename.txt

o

less filename.txt

Para las últimas líneas

tail filename.txt

Para las primeras líneas

head filename.txt

4

Una opción es usar more

p.ej more file.txt

Sin embargo, no tiene todas las características agregadas por less.
Un ejemplo simple es que no puede desplazarse hacia atrás en la salida. En general, ha sido superado por less, que se nombró en broma porque

menos es más


3

Siempre uso $ less "your file here", ya que es muy simple, proporciona un grepcomando interactivo incorporado y le brinda una interfaz fácil de usar que puede desplazar con las teclas de flecha.

(También se incluye en casi todos los sistemas * nix)


lesses la versión exagerada de more(comparar man lesscon man more), y para mí tiene dos características molestas: 1) cambia al búfer de pantalla alternativo, cuando menos termina, el archivo que estaba viendo desaparece 2) en EOF debe escribir explícitamente q(Lo sé, hay una opción para esto). Entonces, una de mis primeras acciones en un nuevo entorno es establecer export PAGER=/bin/moreen mi perfil y usar moretodo el tiempo.
ott--

@ ott--: 1) Pruebe la -Xbandera. 2) Prueba la -Ebandera. lessTiene un moremodo de emulación. Puede habilitarlo configurando la LESS_IS_MOREvariable ambiental. Puede desplazarse hacia arriba en el moremodo de emulación.


Aunque, en general, estoy de acuerdo en que lesses demasiado complicado. Su capacidad para ejecutar comandos externos es un ejemplo perfecto de su excesiva complejidad.

@EvanTeitelman Siempre he encontrado que la funcionalidad grep es extremadamente útil para mí, @ ott-- Me parece que debido a su emulación morey sus muchas características adicionales, hace el trabajo muy bien.
SG60

2

Si es un archivo grande y desea buscar alguna parte específica, puede usar

 cat filename | grep text_to_search -ni 

También puede usar un editor Vim más interactivo (o editor vi si no tiene Vim):

 vim filename
Or
 vi filename

Vim / vi es un gran editor, también se puede usar como lector en "Modo Normal" o usando la opción -R, tiene muchas características que lo ayudarán a navegar a través del archivo.


Más corto para vim -Res view. Pero tenga en cuenta que no le gustan las redirecciones, como se discutió en xargs y vi - "La entrada no es desde un terminal" .
manatwork

gracias @manatwork por el aviso! Recientemente comencé a usar Vim y me gusta por sus varias características. En cuanto a las redirecciones, me olvidé de eso, gracias por recordarme. A partir de ahora, estoy trabajando en una máquina virtual remota, donde uso ssh sin interfaz GUI, por lo tanto, Vim es de gran utilidad, cuando cualquier otro editor de GUI no puede funcionar, es por eso que enfaticé Vim aquí.
No te preocupes niño

1

Use el comando cat para mostrar el contenido del nombre del archivo. nombre de archivo del gato

Use el comando vim para editar el archivo. nombre de archivo vim

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.