bueno hace unos dias ya les presenté los primeros comandos más basicos. En el día de hoy lo que les voy a presentaros es identificar el tipo de archivo en él que posiblmente tengas que trabajar.
Es bueno saber que este s.o no existe el concepto de extension pero es posible nombrarlos con .algo de modo orientativo para el usuario corriente o sea nosotros.
para el sistema esto es lo mismo archivo o archivo.txt
Luego aprendenderemos a buscar patrones en ficheros. extraeremos los que nos importa e incluso haremos un estudio de la información que pueda contener.
Y por ultimo para no ser muy pesado les enseñare a manejar los permisos.
hecha la aclaración o parte introductoría empezemos:
________________________________________________________________________________________
Comando file:
File se utiliza para saber de qué tipo es un archivo, bien porque carezca de extensión que lo identifique (txt, mp3, png…) o bien porque haya sido renombrado, este comando nos dirá de qué se trata.
algunos ejemplos:
#Fichero ejecutable
[root@LINUX1 ~]# file /usr/bin/clear
/usr/bin/clear: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped
#Fichero de texto
[root@LINUX1 ~]# file /root/fichero1.txt
/root/fichero1.txt: ASCII text
#Symbolic link
[root@LINUX1 ~]# file /usr/bin/poweroff
/usr/bin/poweroff: symbolic link to `consolehelper'
#Script
[root@LINUX1 ~]# file /usr/bin/tzselect
/usr/bin/tzselect: Bourne-Again shell script text executable
También podemos obtener un poco más de información con la opción -i:
file -i guia.pdf
guia.pdf: application/pdf; charset=binary
file -i notepad.png
notepad.png: image/png; charset=binary
Ahora vamos a cambiarle a uno de estos archivos su extensión a ver si podemos engañarle, renombraremos notepad.png a notepad.txt:
file notepad.txt
notepad9.txt: PNG image, 128 x 128, 8-bit/color RGBA, non-interlaced
Pues parece ser que ¡¡no!!
Otra opción también muy interesante es saber que hay dentro de un archivo comprimido. Para este ejemplo escogí un fichero de mi disco duro y lo comprimí con la extensión bz2.
Primero veamos que es esto de bz2:
file nino.bz2
nino.bz2: bzip2 compressed data, block size = 900k
¿Y qué habrá dentro? Ahora es cuando vamos a utilizar la opción -z para obtener más información del contenido de este archivo:
file -z nino.bz2
nino.bz2: RIFF (little-endian) data, AVI, 720 x 384, 25.00 fps, video: XviD, audio: Dolby AC3 (6 channels, 48000 Hz) (bzip2 compressed data, block size = 900k).
Otro ejemplo práctico podria ser que tengas que realizar una verificación en forma masiva.
es decir verificar de q tipo son los ficheros qe se nombraron como .txt y ver que cumplan un mismo patron. es decir que todos sean de un mismo y no haya otro tipo extraño.
file *.txt
Un archivo de texto llano, texto simple, texto plano, texto sencillo o texto pelado (en inglés plain text) es un archivo informático compuesto únicamente por texto sin formato, sólo caracteres, lo que lo hace también legible por humanos. Estos caracteres se pueden codificar de distintos modos dependiendo de la lengua usada. Algunos de los sistemas de codificación más usados son: ASCII, ISO-8859-1 o Latín-1 y UTF-8.
La extensión .txt se ha hecho popular en los últimos tiempos, pero habitualmente el contenido del archivo se determina con programas que examinan los primeros bytes, como por ejemplo el comando "file".
______________________________________________________________________________
Encontrar palabras, patrones, lineas en el texto.
Algunas de las opciones mas útiles y comunes de grep son las siguientes
-i ignora la deferencia entre mayúsculas y minúsculas en las búsquedas y las considera equivalentes.
-n muestra el texto de la línea y el número de línea dentro del archivo en la que se encontró
-c muestra solamente el número de líneas coincidentes
-l lista los archivos en donde se han encontrado coincidencias sin mostrar el texto
-r permite hacer búsquedas de forma recursiva dentro de los directorios que se encuentran en la ruta de búsqueda.
Encontrar una palabra en un archivo
Si tenemos un archivo de texto llamado INSTALL y deseamos buscar la palabra Web podemos ejecutar el comando grep de la siguiente forma:
$ grep Web INSTALL
La salida de grep te mostrará todas las lineas que contenga la cadena de texto “Web” y en mi caso muestra esta salida:
Web browser support:
encontrar todas las palabras sin importar mayúsculas o minúsculas
$ grep -i web INSTALL
en mi caso muestra una lista extensa de lineas donde está Web, web o WEB y muestro solo un fragmento de esta salida
- A web server running PHP 5.2.0 or higher, with PCRE....
Web browser support:
content of the "web" directory in your webserver's document root. If you
...
3 Mostrar cuantas coincidencias se han encontrado
En ocasiones no es necesario leer el texto donde se encuentra la cadena de texto o palabra que buscamos, pero, podemos necesitar saber cuantas veces está aparece en el archivo aquí te muestro un ejemplo de cuantas veces aparece la “web” con las opciones anteriores.
$ grep -c Web INSTALL
1
$ grep -c web INSTALL
5
$ grep -c -i "web" INSTALL
6
Este ejemplo muestra claramente que al utilizar la opción -i se consideras las coincidencias sin importar mayúsculas o minúsculas.
4 cuando necesitas saber en cual línea está lo que buscas
Para saber en cual línea está el texto o la palabra que buscas utilizas la opción -n asi:
$ grep -n Web INSTALL
8:Web browser support:
En esta salida te muestra al inicio del texto “8:” que es el número de la línea en donde está la la palabra “Web” dentro del archivo INSTALL.
5 Encontrar un texto en un listado de archivos
El comando linux grep también te puede ayudar a encontrar un texto que se encuentre en una lista de archivos y te puede indicar en que archivo se ha encontrado, aquí te muestro un ejemplo simple de esta opcion:
$ grep -l you ./*
./INSTALL
./LICENSE
./README
Esto te indica que la palabra “you” se encuentra en los archvios INSTALL, LICENCE y README y si estuvieran dentro de otros directorios te mostraría la ruta usando la opción -r para hacer la búsqueda de forma recursiba en los directorios que se encuentran en la ruta de búsqueda.
Espero que grep te sea de gran utilidad, para mí es uno de los comandos que uso casi a diario por que me permite tener información rápida y sencilla cuando administro un servidor linux. Te recomiendo que también veas el siguiente post para que veas como usar grep con tuberias o pipes.
No te limites con usar solo una opcion. Puedes combinarlas por ejemplo:
grep -ni orders reset.log
También un uso muy cotidiano es redirecionar estos mensajes de salida, que nos entrega este comando y crear un fichero con cierta info especifica. Aqui les mostraré la ventaja de usar la barra vertical | para unir la salida.
podes crear un fichero con la info que filtraste.
puedes leer salidas salidas muy grandes.
etc.
ejemplo:
grep -ni orders reset.log | more
esto no permite usar el comando more, que toma como entrada, la salida del grep.
es decir estas teniendo un mejor control.
tambien es posible crear un fichero. ejemplo
grep -ni orders reset.log > mInforme.
este tecnica se conoce como redirecionamiento e interconexion de comandos.
piping y redirection en ingles.
_____________
Y por ultimo para terminar. Asignar permisos de lectura, escritura y ejecución de lo que tu qieras.
Para esto se sigue este patron.
chmod 700 file1 --> Asignación de permiso.
Para entender este comando siemplemente debemos recordar esta numeración: 421
y eso lo traducimos como RWX
por ejemplo si queremos asignar lectura y ejecucion para el propietario.
entonces viendo qe r=4 , w=2 , x=1, me daria 4+1 osea 5
lo mismo con los otros.
chmod 755 file1
_______________________________________________________________________________________
espero que les haya gustado. Exitos.
Es bueno saber que este s.o no existe el concepto de extension pero es posible nombrarlos con .algo de modo orientativo para el usuario corriente o sea nosotros.
para el sistema esto es lo mismo archivo o archivo.txt
Luego aprendenderemos a buscar patrones en ficheros. extraeremos los que nos importa e incluso haremos un estudio de la información que pueda contener.
Y por ultimo para no ser muy pesado les enseñare a manejar los permisos.
hecha la aclaración o parte introductoría empezemos:
________________________________________________________________________________________
Comando file:
File se utiliza para saber de qué tipo es un archivo, bien porque carezca de extensión que lo identifique (txt, mp3, png…) o bien porque haya sido renombrado, este comando nos dirá de qué se trata.
algunos ejemplos:
#Fichero ejecutable
[root@LINUX1 ~]# file /usr/bin/clear
/usr/bin/clear: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped
#Fichero de texto
[root@LINUX1 ~]# file /root/fichero1.txt
/root/fichero1.txt: ASCII text
#Symbolic link
[root@LINUX1 ~]# file /usr/bin/poweroff
/usr/bin/poweroff: symbolic link to `consolehelper'
#Script
[root@LINUX1 ~]# file /usr/bin/tzselect
/usr/bin/tzselect: Bourne-Again shell script text executable
También podemos obtener un poco más de información con la opción -i:
file -i guia.pdf
guia.pdf: application/pdf; charset=binary
file -i notepad.png
notepad.png: image/png; charset=binary
Ahora vamos a cambiarle a uno de estos archivos su extensión a ver si podemos engañarle, renombraremos notepad.png a notepad.txt:
file notepad.txt
notepad9.txt: PNG image, 128 x 128, 8-bit/color RGBA, non-interlaced
Pues parece ser que ¡¡no!!
Otra opción también muy interesante es saber que hay dentro de un archivo comprimido. Para este ejemplo escogí un fichero de mi disco duro y lo comprimí con la extensión bz2.
Primero veamos que es esto de bz2:
file nino.bz2
nino.bz2: bzip2 compressed data, block size = 900k
¿Y qué habrá dentro? Ahora es cuando vamos a utilizar la opción -z para obtener más información del contenido de este archivo:
file -z nino.bz2
nino.bz2: RIFF (little-endian) data, AVI, 720 x 384, 25.00 fps, video: XviD, audio: Dolby AC3 (6 channels, 48000 Hz) (bzip2 compressed data, block size = 900k).
Otro ejemplo práctico podria ser que tengas que realizar una verificación en forma masiva.
es decir verificar de q tipo son los ficheros qe se nombraron como .txt y ver que cumplan un mismo patron. es decir que todos sean de un mismo y no haya otro tipo extraño.
file *.txt
Un archivo de texto llano, texto simple, texto plano, texto sencillo o texto pelado (en inglés plain text) es un archivo informático compuesto únicamente por texto sin formato, sólo caracteres, lo que lo hace también legible por humanos. Estos caracteres se pueden codificar de distintos modos dependiendo de la lengua usada. Algunos de los sistemas de codificación más usados son: ASCII, ISO-8859-1 o Latín-1 y UTF-8.
La extensión .txt se ha hecho popular en los últimos tiempos, pero habitualmente el contenido del archivo se determina con programas que examinan los primeros bytes, como por ejemplo el comando "file".
______________________________________________________________________________
Encontrar palabras, patrones, lineas en el texto.
Algunas de las opciones mas útiles y comunes de grep son las siguientes
-i ignora la deferencia entre mayúsculas y minúsculas en las búsquedas y las considera equivalentes.
-n muestra el texto de la línea y el número de línea dentro del archivo en la que se encontró
-c muestra solamente el número de líneas coincidentes
-l lista los archivos en donde se han encontrado coincidencias sin mostrar el texto
-r permite hacer búsquedas de forma recursiva dentro de los directorios que se encuentran en la ruta de búsqueda.
Encontrar una palabra en un archivo
Si tenemos un archivo de texto llamado INSTALL y deseamos buscar la palabra Web podemos ejecutar el comando grep de la siguiente forma:
$ grep Web INSTALL
La salida de grep te mostrará todas las lineas que contenga la cadena de texto “Web” y en mi caso muestra esta salida:
Web browser support:
encontrar todas las palabras sin importar mayúsculas o minúsculas
$ grep -i web INSTALL
en mi caso muestra una lista extensa de lineas donde está Web, web o WEB y muestro solo un fragmento de esta salida
- A web server running PHP 5.2.0 or higher, with PCRE....
Web browser support:
content of the "web" directory in your webserver's document root. If you
...
3 Mostrar cuantas coincidencias se han encontrado
En ocasiones no es necesario leer el texto donde se encuentra la cadena de texto o palabra que buscamos, pero, podemos necesitar saber cuantas veces está aparece en el archivo aquí te muestro un ejemplo de cuantas veces aparece la “web” con las opciones anteriores.
$ grep -c Web INSTALL
1
$ grep -c web INSTALL
5
$ grep -c -i "web" INSTALL
6
Este ejemplo muestra claramente que al utilizar la opción -i se consideras las coincidencias sin importar mayúsculas o minúsculas.
4 cuando necesitas saber en cual línea está lo que buscas
Para saber en cual línea está el texto o la palabra que buscas utilizas la opción -n asi:
$ grep -n Web INSTALL
8:Web browser support:
En esta salida te muestra al inicio del texto “8:” que es el número de la línea en donde está la la palabra “Web” dentro del archivo INSTALL.
5 Encontrar un texto en un listado de archivos
El comando linux grep también te puede ayudar a encontrar un texto que se encuentre en una lista de archivos y te puede indicar en que archivo se ha encontrado, aquí te muestro un ejemplo simple de esta opcion:
$ grep -l you ./*
./INSTALL
./LICENSE
./README
Esto te indica que la palabra “you” se encuentra en los archvios INSTALL, LICENCE y README y si estuvieran dentro de otros directorios te mostraría la ruta usando la opción -r para hacer la búsqueda de forma recursiba en los directorios que se encuentran en la ruta de búsqueda.
Espero que grep te sea de gran utilidad, para mí es uno de los comandos que uso casi a diario por que me permite tener información rápida y sencilla cuando administro un servidor linux. Te recomiendo que también veas el siguiente post para que veas como usar grep con tuberias o pipes.
No te limites con usar solo una opcion. Puedes combinarlas por ejemplo:
grep -ni orders reset.log
También un uso muy cotidiano es redirecionar estos mensajes de salida, que nos entrega este comando y crear un fichero con cierta info especifica. Aqui les mostraré la ventaja de usar la barra vertical | para unir la salida.
podes crear un fichero con la info que filtraste.
puedes leer salidas salidas muy grandes.
etc.
ejemplo:
grep -ni orders reset.log | more
esto no permite usar el comando more, que toma como entrada, la salida del grep.
es decir estas teniendo un mejor control.
tambien es posible crear un fichero. ejemplo
grep -ni orders reset.log > mInforme.
este tecnica se conoce como redirecionamiento e interconexion de comandos.
piping y redirection en ingles.
_____________
Y por ultimo para terminar. Asignar permisos de lectura, escritura y ejecución de lo que tu qieras.
Para esto se sigue este patron.
chmod 700 file1 --> Asignación de permiso.
Para entender este comando siemplemente debemos recordar esta numeración: 421
y eso lo traducimos como RWX
por ejemplo si queremos asignar lectura y ejecucion para el propietario.
entonces viendo qe r=4 , w=2 , x=1, me daria 4+1 osea 5
lo mismo con los otros.
chmod 755 file1
_______________________________________________________________________________________
espero que les haya gustado. Exitos.