Identificar y trabajar con distintos tipos de archivo

Si se es nuevo en Linux, enseguida de verá archivos con extensiones no reconocidas. La extensión es la parte final del nombre del archivo, tras el último punto (en el archivo sneakers.txt, "txt" es la extensión).

Aquí hay un listado de extensiones y el tipo al que corresponden:

Archivos Comprimidos

Formatos de archivos

Archivos de sistema

Archivos de programación y scripting

Pero no siempre se usan extensiones, o de forma coherente. ¿ Qué ocurre cuando no hay extensión , o el contenido no es el supuesto de la extensión?

El comando file está para ayudar.

En Capítulo 15, se creó un archivo llamado saturday -- sin extensión. Utilizando file, se puede averiguar el tipo de archivo tecleando:

file saturday
	    

y se verá que es de texto. Cualquier archivo designado como de texto debería ser legible usando cat, more, o less.

SugerenciaLea la página de manual
 

Para saber más sobre file, lea la página de manual file tecleando man file.

Y hablando de leer ficheros

Hay muchas formas de leer archivos en Linux. En Capítulo 15, por ejemplo, se vieron los paginadores more y less -- llamados paginadores porque se avanza página a página al ver el documento. También se vio que además se puede manipular archivos con cat.

Pero hay más opciones cuando se trata de ver archivos README, páginas de manual o documentos que se han creado.

Hay herramientas para archivos de texto, entre ellas, los editores de texto pico, emacs, y vim, los paginadores more y less, y los visores head, tail, cat, y grep.

Veamos características de estas utilidades.

less

En Capítulo 15, se introdujo el paginador less. Less es el paginador para ver páginas de manual.

Veamos la página de manual de less para ver a less en acción.

man less
	      

Para avanzar un página, pulsar Space; para retroceder pulsar B, y para salir, pulsar Q.

Hay otras potentes características de less, incluyendo la capacidad de movimiento horizontal y el poder avanzar un número determinado de líneas.

more

Aunque parezca raro, more ofrece menos que less (less está inspirado en more).

Veamos la página de manual de more, pero esta vez, veremos la página con more -- haciendo un tunel de la salida de man a more.

man more | more
	      

Puede no parecer distinto, pero hay menos características para more que para less. Lo más distinto de salida es la falta de un método para ir hacia atrá -- aunque avanzar pulsando Space y salir pulsando Q funciona igual.

head

Se puede usar head si sólo se quiere mirar el comienzo de un archivo.

head <filename>
	      

Head puede ser útil, pero al estar limitado a las primeras líneas, no se sabrá que longitud tiene. Por defecto, sólo se verán las 10 primeras líneas, aunque se puede establecer el número:

head -20 <filename>
            

Lea la página de manual de head (man head) para más información. Se verá que less o more son más útiles, porque se puede paginar el archivo si la información está mucho más allá de las primeras líneas.

tail

El inverso de head (obviamente), es tail. Con (tail), se ven las últimas 10 líneas del archivo.

cat

cat, abreviatura de concatenar, mostrará el contenido de un archivo en pantalla. Utilizar cat puede ser útil si el archivo es breve, como sneakers.txt. Pero si es relativamente grande, pasará de largo por la pantalla, ya que cat muestra el fichero entero.

grep

grep es muy útil para econtrar texto específico enun archivo. Si se quiere encontrar todas las referencias hechas a a "coffee" en sneakers.txt, creado en el directorio de login. Se puede teclear:

grep coffee sneakers.txt
          

y se vería cada línea en la que se encontró "coffee".

SugerenciaRecuérdese las mayúsculas
 

A menos que se especifique, grep busca distinguiendo mayúsculas y minúsculas. Buscar Coffee es diferente a buscar coffee. Entre las opciones de grep está -i, permite buscar sin distinciones en un archivo. Lea la página de manual de grep para más información sobre el comando.

Redirección de E/S y túneles

No hay que olvidar el uso de pipes y redirección para almacenar y/o imprimir algo para leer después.

Se puede, por ejemplo, usar grep para buscar algo en archivos, y guardar luego el resultado en un archivo o enviarlo a una impresora.

Para imprimir las referencias a "coffee" en sneakers.txt, por ejemplo, basta teclear:

grep coffee sneakers.txt | lpr
	      

El comando se comporta como ls -al /etc | more. Este comando se utilizó en Capítulo 15 para ver el contenido del directorio /etc y enviar el resultado a the more para verlo en pantalla.

SugerenciaEs más seguro utilizar >>
 

Recuérdese la diferencia entre > y >>: usar > sobreescribe el archivo, mientras que >> añade información al archivo. Generalmente, a menos que se quiera, es mejor usar >>, porque seguro que no se pierde información potencialmente valiosa (aunque habrá que editar el fichero si no se quiso añadir información a él).

Comodines y expresiones regulares

¿ Que pasa si se olvida el nombre del archivo que se busca? No se le puede decir al ordenador, "Busca un archivo llamado 'sneak' o algo parecido."

Bien, se puede, de una forma. Utilizando comodines o expresiones regulares, se puede ejecutar acciones en un archivo sin saber el nombre completo. Basta con poner lo que se sabe, y sustituir el resto con un comondín.

SugerenciaMás sobre comodines y expresiones regulares
 

Para saber más sobre comodines y expresiones regulares, mírese la página de manual de bash (man bash). Recuérdese que se puede salvar a un archivo de texto tecleando man bash | col -b > bash.txt. Así, se puede abrir y leer con less o pico (pico bash.txt). Si se quiere imprimir, hay que estar preparado: es muy largo.

Sabemos que el fichero se llama algo así como "sneak-something.txt," así que tecleamos:

ls sneak*.txt
	      

y ahí sale el nombre del archivo:

sneakers.txt
	      

Lo más frecuente es usar el asterisco (*) al buscar. El asterisco busca cualquier cosa que encaje en el patrón que se busca. Así que tecleando:

ls *.txt
	      

o:

ls sn*
	      

se encontrarái sneakers.txt -- sólo que habrá más archivos de texto, y saldrán todos porque encajan en el patrón que se busca.

Ayuda, estrechar la búsqueda lo más posible.

Una forma de estrechar la búsqueda es usar la interrogación (?). Como el asterisco, utilizar ? puede ayudar a localizar un fichero por patrón.

En este caso, ? es útil para encajar un solo carácter -- así que si se busca sneaker?.txt, se obtendría sneakers.txt como resultado -- y/o sneakerz.txt, si existiera tal archivo.

Cuando el asterisco, es parte del nombre del archivo, como si sneakers.txt se llamase sneak*.txt, es cuando las expresiones regulares son útiles.

Las expresiones regulares son más complejas que el asterisco o la interrogación.

Utilizando la contrabarra (\), se puede especificar que no se quiere buscar todo al utilizar el astericso, sino que se busca un archivo con asterisco en el nombre.

Si el archivo se llama sneak*.txt, hay que teclear:

sneak\*.txt
	      

Aquí hay una lista breve de expresiones regulares y comodines:

  • * -- Todos los caracteres

  • ? -- Encaja un caracter (como sneaker?.txt)

  • \* -- El caracter *

  • \? -- El caracter ?

  • \) -- El caracter )

También se pueden usar comodines para más que buscar: son útiles al mover y renombrar archivos. Y las expresiones regulares permiten renombrar archivos con nombres con caracteres como * y ?.

Para saber más, siga leyendo.