Reunión sep/2016 – Introducción a Raspberry Pi y demostración

¡Buen día!

Te invitamos a la siguiente reunión del Gultij, Grupo de Usuarios de GNU/Linux de Tijuana.

Cuándo: Sábado 17 de septiembre de 2016 de 5:00 p. m. a 7:00 p. m.

Dónde: BIT Center, Tijuana.
– Sala de Capacitación «B»
– Google Maps: https://goo.gl/maps/l5IJg

Programa:
– Presentación del Gultij y asistentes (opcional).
– Presentación: Introducción a Raspberry Pi y demostración, por Marcos Carrera
– Discusión.

Estacionamiento:
El BIT Center tiene estacionamiento.

La entrada es libre, así que invita a quien gustes aunque no esté en la lista.

¡Los esperamos!

Evento en Facebook (visible aunque no tengas cuenta): https://www.facebook.com/events/1788254678127669/

Coreutils-04-wp

Coreutils: Permisos de archivos

Se dice que GNU/Linux es un sistema muy seguro, que no hay virus y que es muy difícil de vulnerar, la realidad es que eso es mentira. Como cualquier sistema, GNU/Linux es un sistema que es tan seguro como las medidas que se tomen para administrarle y una de las medidas más importantes es la gestión del sistema de archivos.

Coreutils-04-wp

Antes de empezar, ya sé que algunos leen esto cada semana (sólo mi mamá, tal vez) y que esperaban la publicación el día lunes y hoy es martes. – Gabriel! Eres un flojo y te retrasaste! –  Pues no, la verdad es que quiero probar diferentes fechas para analizar cuando tienen más tiempo de leer estas publicaciones, dicho esto, comencemos.

Hola mundo! Hoy es martes y toca hablar de GNU Core Utilities.

La semana pasada hablamos de  Coreutils tac: Output de archivos completos (parte 2)  , un comando bastante inútil y parece que bastante impopular, así que esta semana quiero redimirme con ustedes y les hablaré de un tema extremadamente útil y quizás la médula espinal de la seguridad en GNU/Linux.

¿Qué son «archivos»?

Me podrían decir: «¿Por qué debe ser tan importante proteger mis archivos? digo mis documentos, fotografías y canciones son importantes, pero no creo que eso constituya la médula espinal de nada».  Y yo les diría que tienen razón, pero en sistemas basados en Unix, TODO ES UN ARCHIVO, a veces esto no es muy claro asi que lo repetiré, EN UNIX Y SUS DERIVADOS TODO ES UN ARCHIVO.

«Eso no tiene ningún sentido, mis dispositivos no pueden ser archivos, ¿cómo mi mouse va ser un archivo?»

gabriel@gultij:~$ ls /dev/input/
by-id  by-path    mice  mouse0  mouse1

En realidad, los dispositivos no son realmente archivos, sino representaciones de los mismos como archivos, de esta forma podemos acceder a un dispositivo y a sus propiedades de la misma forma en que lo haríamos con un archivo, ya sea la configuración de un servicio, los parámetros de ejecución de un comando o tus documentos, música y otros medios, ante los ojos del root# todos los archivos son iguales.

Cuando hablamos de permisos de archivos, podemos dividirlo en dos categorías: Permisos Básicos y Permisos Avanzados, hoy sólo hablaremos de los básicos y si no los aburro, la próxima semana revisaremos los «Avanzados».

Permisos Básicos

Grupos de permisos

Una de las propiedad que tienen los archivos en el sistema es que pertenecen a un usuario y a un grupo ( esto lo revisaremos a detalle en otro artículo) y la forma más sencilla de descubrir la anatomía básica de un archivo es con el comando «ls -l» (Tambén algún día revisaremos ls a detalle).

gabriel@gultij:~/Documents/Gultij/Coreutils/files$ ls -l
total 16
D   U    G    O     Owner   Group   (Esta línea fue agregada para ilustrar)
d  rwx  r-x  r-x 2 gabriel gabriel 4096 Aug  8 11:49 directorio
-  rw-  r--  r-- 1 gabriel gabriel 245 Jul 27 17:48 ejemplo-101.txt
-  rw-  r--  r-- 1 gabriel gabriel 110 Jul 27 18:23 ejemplo-102.txt
-  rw-  r--  r-- 1 gabriel gabriel 664 Jul 27 18:45 ejemplo-103.txt
-  rw-  r--  r-- 1 gabriel gabriel 227 Jul 27 18:54 ejemplo-104.txt
-  rw-  r--  r-- 1 gabriel gabriel   31 Aug  8 13:06 script

Intencionalmente separé el output del comando, para que mostrará 4 columnas, en realidad no existe esa separación, todo aparece junto, pero será más fácil para mi explicarlo así.

D:  Aquí se muestra la letra «d» si se trata de un directorio.

U:  (User) Aquí aparecen los permisos del propietario del archivo.

G: (Group) Aquí aparecen los permisos del grupo del archivo.

O: (Others) Aquí aparecen los permisos de acceso para el resto de los usuarios del sistema.

También el comando nos muestra el nombre del propietario y el grupo del archivo.

Tipos de permisos

Siguiendo el output del comando anterior, podemos ver que en las columnas O,G y A hay tres espacios en los que se pueden leer las letras r, w y x según corresponda, estos son los tipos de permisos.

r – read:  Afecta la capacidad del usuario para ver el contenido del archivo.

w – write: Afecta la capacidad del usuario para guardar o modificar el contenido del archivo o en caso de un directorio para crear nuevos archivos.

x – execute: Afecta la capacidad del usuario para ejecutar un archivo (un script por ejemplo) y en el caso de los directorios, se requiere el permiso de ejecución para poder ver el contenido del directorio.

 

This file is made available under the Creative Commons CC0 1.0 Universal Public Domain Dedication.This file is made available under the Creative Commons CC0 1.0 Universal Public Domain Dedication.

Entonces, lo que nos indica el output del comando es lo siguiente:

  • El usuario gabriel tiene permisos de lectura y escritura (rw) en todos los archivos.
  • El grupo gabriel tiene permiso de lectura (r) en todos los archivos.
  • El resto (others) tienen permiso de lectura (r) en todos los archivos.

NOTA: Algunas distribuciones por default crean un usuario para cada grupo para mantener privado el contenido de cada usuario, otras simplemente utilizan el grupo users.

¿Entonces cómo cambiar los permisos?

Para esto vamos a usar el comando chmod, a diferencia de los otros comando que hemos visto, no vamos a revisar cada opción, recuerda que el tema es sobre permisos y no sobre chmod.

Este es el ejemplo más común, en el directorio files, hay un archivo llamado «script», vamos a revisar su contenido.

gabriel@gultij:~/Documents/Gultij/Coreutils/files$ cat script  
#!/bin/bash 
echo "No soy un Hola Mundo más, estoy hackeando al mundo, soy super hacker por que veo Mr. Robot.";

!Vaya! ¡ Es un script super letal !… ok no, pero vamos a ejecutarlo :)

gabriel@gultij:~/Documents/Gultij/Coreutils/files$ ./script 
bash: ./script: Permission denied

Wait… what? Permission denied? Me hackearon! a mi nadie me niega el permiso a ver, revisemos nuevamente sus permisos.

gabriel@gultij:~/Documents/Gultij/Coreutils/files$ ls -l script  
-rw-r--r-- 1 gabriel gabriel 113 Aug  8 13:11 script

Aja! ahí está el detalle,  tengo permiso de lectura y escritura (rw) pero no de ejecución, ¿qué pasa si le agrego el permiso «x»?

gabriel@gultij:~/Documents/Gultij/Coreutils/files$ chmod u+x script  
gabriel@gultij:~/Documents/Gultij/Coreutils/files$ ls -l script      
-rwxr--r-- 1 gabriel gabriel 113 Aug  8 13:11 script 
gabriel@gultij:~/Documents/Gultij/Coreutils/files$ ./script  
No soy un Hola Mundo más, estoy hackeando al mundo, soy super hacker por que veo Mr. Robot.

A ver, a ver, a ver… por partes.

Explicando chmod

chmod   u+x    script

Esto significa  al propietario ( u )  agrégale ( + )  permiso de ejecutar  ( x )  el archivo script.

Es por eso que en el segundo comando:  «ls -l script», podemos ver que los permisos del propietario dicen (rwx).

Y finalmente en el tercer comando, ejecutamos el script sin problemas.

Pero es un script demasiado poderoso para que caiga en las manos equivocadas, vamos a impedir que alguien más lo vea.

gabriel@gultij:~/Documents/Gultij/Coreutils/files$ chmod go-r script   
gabriel@gultij:~/Documents/Gultij/Coreutils/files$ ls -l script  
-rwx------ 1 gabriel gabriel 113 Aug  8 13:11 script

chmod go-r script

Esto significa: al grupo ( g ) y a otros ( o ) remueves ( – ) el permiso de leer ( r ) el archivo script.

Y podemos ver que antes tenían permiso de lectura y ahora ya no.

Un ejemplo más, digamos que están trabajando con el archivo «ejemplo-104.txt» y quieren que todos en el sistema puedan leer y escribir el archivo, la mejor forma de hacer sería así:

gabriel@gultij:~/Documents/Gultij/Coreutils/files$ls -l ejemplo-104.txt  
-rw-r--r-- 1 gabriel gabriel 227 Jul 27 18:54 ejemplo-104.txt 

gabriel@gultij:~/Documents/Gultij/Coreutils/files$ chmod ugo+rw ejemplo-104.txt

gabriel@gultij:~/Documents/Gultij/Coreutils/files$ ls -l ejemplo-104.txt         
-rw-rw-rw- 1 gabriel gabriel 227 Jul 27 18:54 ejemplo-104.txt

chmod ugo+rw

Esto significa: al usuario ( u ), grupo ( g ) y otro ( o ) agrégale ( + ) permisos de lectura ( r ) y escritura ( w ) en el archivo ejemplo-104.txt

¿Siguen conmigo?

Creo que ya se van entendiendo la cosa, cuando se trate de aplicarle un permiso a todos, simplemente se puede escribir a en lugar de ugo, de forma que el comando «chmod a-w ejemplo-104.txt» removerá el permiso de escritura a todos, incluso al propietario.

De igual modo pueden asignar diferentes permisos a cada grupo, por ejemplo

gabriel@gultij:~/Documents/Gultij/Coreutils/files$ls chmod u=rwx,g=rw,o=r ejemplo-103.txt 
gabriel@gultij:~/Documents/Gultij/Coreutils/files$ ls -l ejemplo-103.txt  
-rwxrw-r-- 1 gabriel gabriel 664 Jul 27 18:45 ejemplo-103.txt

En este último ejemplo ejecutamos lo siguiente.

Al usuario ( u ) asignarle ( = ) los siguientes permisos: lectura ( r ), escritura ( w )  y ejecución ( x );  Al grupo ( g ) asignar ( = ) los siguientes permisos: lectura ( r ) y escritura ( w ); A los demás ( o ) asignar  los siguientes permisos: lectura ( r ).

Cuando se utiliza la opción de asignación ( = ) va a dejar únicamente los permisos que fueron declarados; De forma que si un archivo tenía permiso de ejecución y definimos «chmod a=rw archivo», va a asignar a todos, permisos rw y eliminar el de ejecución.

Referencias en formato octal

Otra forma de expresar los permisos de archivos, es utilizando un formato octal, quizás mucho más popular, funciona como una opción de asignación y utiliza una representación numérica para cada permiso:

r = 4;   w = 2;   x = 1

se definen 3 dígitos, cada dígito representa uno de los grupos  Usuario, Grupo y Otros (Siempre en ese orden)

De forma que podemos escribir algo así:

gabriel@gultij:~/Documents/Gultij/Coreutils/files$ls chmod 741 ejemplo-101.txt    
gabriel@gultij:~/Documents/Gultij/Coreutils/files$ ls -l ejemplo-101.txt  
-rwxr----x 1 gabriel gabriel 245 Jul 27 17:48 ejemplo-101.txt

«chmod 741 ejemplo-01.txt» Significa:  Asignarle al usuario permisos 7, Asignar al grupo permisos 4 y asignarle a otros permisos 1.

What? ¿cómo es que eso tiene más sentido?

Calma!, todo tendrá sentido.

Octal Binario Permisos
0 000
1 001 –x
2 010 -w-
3 011 -wx
4 100 r–
5 101 r-x
6 110 rx-
7 111 rwx

Entonces… decir «chmod 741 archivo»  es equivalente a decir  «chmod u=rwx,g=r,o=x archivo» , sólo que es mucho más cómodo, es por eso que es un método mucho más popular.

Multiusuario

Oye Gabriel, está muy padre todo esto para un sistema empresarial con cientos de usuarios y diferentes grupos, pero nada de esto es para mi, nadie más usa mi computadora, no hay más usuarios aparte de mi.

De los creadores de "No nos afecta el dólar porque estamos en México"

De los creadores de «No nos afecta el dólar porque estamos en México»

Bien, parece un argumento válido, pero en realidad, aunque no compartas tu sistema con ningún otro usuario, hay un decena de usuarios «de sistema»

gabriel@gultij:~/Documents/Gultij/Coreutils/files$ls cut -d: -f1 /etc/passwd 
root 
daemon 
bin 
sys 
sync 
games 
man 
lp 
mail 
news 
uucp 
proxy 
www-data 
backup 
list 
irc 
gnats 
nobody 
systemd-timesync 
systemd-network 
systemd-resolve 
systemd-bus-proxy 
Debian-exim 
messagebus 
statd 
avahi-autoipd 
gabriel 
avahi 
colord 
dnsmasq 
festival 
speech-dispatcher 
pulse 
rtkit 
saned 
usbmux 
hplip 
sshd 
mysql 
uuidd 
nm-openvpn 
_apt 
gloria 
postgres 
lightdm 
sddm 
Debian-snmp

Estos son todos los usuarios que existen en mi laptop y salvo por el usuario de mi esposa y el mío, todos los demás usuarios los utiliza el demonio muahahahaha (ok,no… referencia aquí) …  Muchos servicios (o demonios) se ejecutan utilizando un usuario propio, de forma en caso de ser vulnerado de alguna forma, tiene acceso limitado sólo a ciertos archivos en los que tiene permisos.

 

El sistema de permisos de archivos, está ahí para dar una capa de seguridad a nuestros sistema, pero algunas personas sólo quieren ver el mundo arder:

63923425

 

CONCURSO

Bien, ya que la semana pasada no me creyeron que había premio, les voy a dar otra oportunidad de ganarse una playera oficial del Gultij Edición Primavera-Verano 2016 xD.

Las bases será muy sencillas, el que postee en los comentarios del grupo de facebook, el mejor meme de «chmod 777» seleccionado por David Jarillo, Ricardo Rosales, Octavio Alvarez, Hiram Kampokalas y yo, se llevará la playera del Gultij.

Gultoj Primavera-Verano 2016

Gultij Primavera-Verano 2016

CONCLUSIÓN

Pues una vez más aquí termina el artículo de hoy, por favor dejenme saber qué estamos haciendo bien, qué estamos haciendo mal, si te interesa ayudarnos en las actividades, siempre buscamos gente que nos apoye.

En los próximos días vamos a anunciar la siguiente reunión que será el Sábado 27 de Agosto, en el Intercomunidades, los esperamos a todos.

Hasta la próxima semana.

 

Coreutils tac: Output de archivos completos (parte 2)

tac:  Es un comando de GNU Core Utilities (coreutils) que permite copiar el contenido de uno varios archivos en orden inverso y mostrarlo en el «Standard Output»

Coreutils – Output de archivos completos, seguimos con tac

Coreutils – Output de archivos completos, seguimos con tac

 

Ya es lunes de nuevo y lo prometido es deuda :D, otra publicación más sobre GNU Core Utilities, en el artículo anterior hablamos sobre cat, puedes volver a visitarlo aquí:  Coreutils cat: Output de archivos completos (parte 1), si no lo leiste corre a leerlo, te espero…. ¿ya?…  ¡genial!.
Bien, esta ocasión hablaremos sobre el mellizo malvado de cat… tac !!! bueno quizás no sean tan mellizos ni tan malvados :P.

Friends S06E17: Joey y Carl, no son tan identicos

Friends S06E17: Joey y Carl, no son tan idénticos

 

Ya fuera de bromas y referencias a friends :P

 

¿Qué es tac?

tac, al igual que cat copia el contenido de un archivo y lo despliega en el “Standard Output”, sin embargo lo hace de forma inversa.

Coreutils cat – Cheatsheet

Coreutils cat – Cheatsheet

 

Wait… What?… Si, tac por default comienza a mostrar primero la última línea y al final la primera línea.  Para los ejemplo utilizaremos el siguiente archivo:  ejemplo-104

Bien.. primero revisemos qué contiene  el archivo, ¿cómo? vamos a  usar el comando cat!!! :D.

gabriel@gultij:~/Gultij/Coreutils/files$ cat ejemplo-104.txt  
Esto es un archivo normal... 
 
común y corriente... 
 
no pasa nada nada por aquí, ni nada por allá 
 
hasta que ... 
 
wingardium leviosa 
 
wait.. what? 
 
vamos a ver que pasa despues de ese momento extraño 
 
creo que ya es suficiente

Ahora veamos el mismo archivo utilizando tac

gabriel@gultij:~/Gultij/Coreutils/files$  tac ejemplo-104.txt  
creo que ya es suficiente 
 
vamos a ver que pasa despues de ese momento extraño 
 
wait.. what? 
 
wingardium leviosa 
 
hasta que ... 
 
no pasa nada nada por aquí, ni nada por allá 
 
común y corriente... 
 
Esto es un archivo normal...

:o Está al revés !!!! Eso es… poco útil :(.  Claro, podría parecer que tac es un comando inútil, pero hay ciertos escenarios en los que quisieras leer un archivo comenzando por la última línea, por ejemplo un log de errores y quieres comenzar por el error más reciente. ;)

¿No tiene opciones el comando?

Si, claro que tiene opciones, y como es usual pueden consultarlas con la opción «–help».

gabriel@gultij:~/Gultij/Coreutils/files$ tac --help
Usage: tac [OPTION]... [FILE]...
Write each FILE to standard output, last line first.

With no FILE, or when FILE is -, read standard input.

Mandatory arguments to long options are mandatory for short options too.
-b, --before             attach the separator before instead of after
-r, --regex              interpret the separator as a regular expression
-s, --separator=STRING   use STRING as the separator instead of newline
--help     display this help and exit
--version  output version information and exit

GNU coreutils online help: <http://www.gnu.org/software/coreutils/>
Full documentation at: <http://www.gnu.org/software/coreutils/tac>
or available locally via: info '(coreutils) tac invocation'

Honestamente me es un poco complicado encontrar ejemplo útiles para las opciones del comando tac, así que utilizaré ejemplo inútiles y dejaré que ustedes le encuentren utilidad xD.

Opción -s  ó –separator

gabriel@gultij:~/Gultij/Coreutils/files$ tac -s "wingardium leviosa" ejemplo-104.txt.
 
 
wait.. what? 
 
vamos a ver que pasa despues de ese momento extraño 
 
creo que ya es suficiente 
Esto es un archivo normal... 
 
común y corriente... 
 
no pasa nada nada por aquí, ni nada por allá
 
hasta que ... 
 
wingardium leviosa

OMG !!!  no sé para qué sirve eso en el mundo real, pero después de definir una cadena «wingardium leviosa» se convirtió en el separador, esto quiere decir que en lugar de invertir todas las líneas, el archivo comienza a invertirse desde el momento en que encuentra el separador y podemos ver que el separador es procesado hasta el final.

Opción -b  ó –before

gabriel@gultij:~/Gultij/Coreutils/files$ tac -b -s "wingardium leviosa" ejemplo-104.txt                          
wingardium leviosa 
 
wait.. what? 
 
vamos a ver que pasa despues de ese momento extraño 
 
creo que ya es suficiente 
Esto es un archivo normal... 
 
común y corriente... 
 
no pasa nada nada por aquí, ni nada por allá 
 
hasta que ...

Si usamos la opción «-b» el separador es procesado antes y en lugar de mostrarlo al final, lo muestra al principio.

Opción -r  ó –regex

gabriel@gultij:~/Gultij/Coreutils/files$ tac -b -r -s "^win" ejemplo-104.txt  
wingardium leviosa 
 
wait.. what? 
 
vamos a ver que pasa despues de ese momento extraño 
 
creo que ya es suficiente 
Esto es un archivo normal... 
 
común y corriente... 
 
no pasa nada nada por aquí, ni nada por allá
 
hasta que ...

Finalmente la opción «-r» nos permite utilizar una expresión regular como separador en lugar de una cadena regular.

Concurso

Debo admitir que estos son los ejemplo más ridículos que pude haber imaginado, pero estoy seguro que ustedes podrán encontrar cosas mucho más ingeniosas, de hecho, a la persona que nos diga en la sección de comentarios el ejemplo más ingenioso de tac utilizando TODAS SUS OPCIONES le vamos a obsequiar una playera del Gultij.

Ya mandamos pedir las playeras con el siguiente «diseño»

Diseño para playera del Gultij

«Diseño» para playera del Gultij

Nombraremos al ganador durante la próxima publicación de la serie, todos pueden participar.

Eso es todo por hoy, espero que les sea de mucha utilidad estas publicaciones, no dejen de comentar si les gusto y como siempre, háganos saber en qué podemos mejorar.

 

Hasta la próxima :D.

convenio-bit-comunidades-wp

Convenio de colaborción entre comunidades-Bitcenter [Anuncio]

convenio-bit-comunidades-wp

Todas las comunidades reunidas en Bitcenter.

 

Hola mundo!

Hace tiempo que les vengo comentando sobre un acuerdo en el que estábamos trabajando las comunidades tecnológicas de las ciudad de Tijuana con Bitcenter, pues bien, me complace anunciarles que el pasado Jueves 28 de Julio, en el marco del evento Bit & Meet realizado en las instalaciones de Bitcenter, llevamos a cabo la firma del convenio.

¿ En qué nos beneficia este convenio?

Principalmente es abrir un canal de colaboración con el centro de innovación y tecnológica, creo que es muy importante, más allá de sólo coexistir en el mismo espacio, comenzar a trabajar en conjunto y si bien este no es el objetivo del convenio creo que nos puede llevar en la dirección correcta.

Sin embargo en concreto para todos nosotros el mayor beneficio que vamos a tener será dejar nuestro status de nómadas y con certeza poder concretar nuestras reuniones en Bitcenter, muchos no lo saben, pero para muchas de las comunidades, la búsqueda de un espacio para reunir representaba todo un desafío y gracias al apoyo de Bitcenter, ya no será un problema.

 

Gabriel, estás mal informado, las comunidades llevan años reuniendose en Bitcenter…

 

Si.. y no… Muchas comunidades como el Gultij nos hemos reunidos en Bitcenter por años, utilizando espacios donados por locatarios que nos han demostrado su apoyo y nos ceden sus horas de salas de juntas o incluso habrá quien haya patrocinado el pago de una sala, sin embargo, esto ya no será necesario, ya que por primera vez hemos logrado un canal de comunicación directo con la administración de Bitcenter y la firma este convenio.

 

Hey! hey! Faltan comunidades

Si bien es cierto que algunas comunidades no figuran dentro del convenio como GDG y Ruby, este fue un proceso en el que estuvimos involucrados por meses (desde Abril), buscamos a las comunidades activas para formar parte, pero esto no implica que estas comunidades dejen de formar parte del intercomunidades o incluso que más adelante puedan adherirse al convenio.

El anuncio era breve y despues agregare fotos, hubo un montón de fotos pero aún no las consigo, prometo el update del post cuando las consiga.

Agradecimientos

No quiero alargar demasiado este anuncio, pero no puedo concluir sin agradecer a las personas que hicieron posible este convenio, Salvatore Italiano (Sal) fue realmente el parteaguas para poder establecer la comunicación con Bitcenter. Rubén Hernández, director de Bitcenter, que realmente mostró un interés por entender nuestras necesidades e inquietudes y en conjunto con la Sra. Edith Verdejo, asesora en relaciones, nos ayudaron a concretar este convenio.

Coreutils-02-wp

Coreutils cat: Output de archivos completos (parte 1)

Coreutils - Output de archivos completos, comenzaremos con cat

Coreutils – Output de archivos completos, comenzaremos con cat

Esta es la primer publicación de la serie de coreutils, vamos a comenzar con los comandos que se utilizan para manipular el output de archivos completos, estos comandos: cat, tac y nl. Hoy sólo vamos a revisar a fondo cat, ya que es una de las herramientas más utilizadas en el día a día, espero que podamos detallarla a fondo.

Empecemos por lo más sencillo:

¿Qué es cat?

Es una herramienta que copia el contenido de un archivo y lo despliega en el «Standard Output»

Coreutils cat - Cheatsheet

Coreutils cat – Cheatsheet

Espera… ¿»Standard Output» ?

OK, si es importante definir lo que son los «Standardized streams» (input, output y error) pero eso será tema de otra publicación, de momento sólo diremos que se refiere a «imprimir en pantalla» pero esto puede redirigirse muy fácilmente, por ahora debemos quedarnos con esta definición imprecisa.

NOTA: Si quieres realizar los ejemplos con el mismo archivo que yo utilicé puedes descargarlo aquí:   ejemplo-101

¿Para qué me sirve cat?

El escenario más común de cat es el de mostrar en pantalla el contenido de un archivo completo.

gabriel@gultij:~/Gultij/Coreutils/files$ cat ejemplo-101.txt
Hola Mundo 
 
Usaremos este archivo para mostrar algunos comandos. 
 
algunos 
saltos 
de 
linea 
 
	incluimos tabs 
  y    algunos   espacios	otro 	tab	mas 
 
Excelente, creo que esto es suficiente 



¡Vaya! eso fue… menos sorprendente de lo que esperabas xD pero es realmente útil: si quieres revisar el contenido de un archivo sin necesidad de utilizar un editor de texto puedes mostrarlo en pantalla. Cat estará disponible en todos los sistemas Linux sin necesidad de instalar nada adicional, al contrario de vim, nano o cualquier otro editor externo.

Si te das cuenta, en el contenido de archivo es muy difícil percibir si existen espacios o tabulaciones. Para eso nos será de mucha ayuda la opción -T. Veamos como se usa.

Usar cat -T para detectar tabulaciones en el archivo.

gabriel@gultij:~/Gultij/Coreutils/files$ cat -T ejemplo-101.txt     
Hola Mundo 
 
Usaremos este archivo para mostrar algunos comandos. 
 
algunos 
saltos 
de 
linea 
 
^Iincluimos tabs 
  y    algunos   espacios^Iotro ^Itab^Imas 
 
Excelente, creo que esto es suficiente



Podemos ver que en el documento aparece el símbolo ^I. Esto significa que el documento contiene el comando de control TAB.

¿Alguna vez les ha pasado que tienen espacios al final de una línea y no pueden darse cuenta? cat también puede ayudarnos con eso.

Usar cat -E para detectar saltos de línea en el archivo.

gabriel@gultij:~/Gultij/Coreutils/files$ cat -E ejemplo-101.txt 
Hola Mundo$
$
Usaremos este archivo para mostrar algunos comandos.$
$
algunos         $
saltos$
de                          $
linea$
$
        incluimos tabs                       $
  y    algunos   espacios       otro    tab     mas$
$
Excelente, creo que esto es suficiente$
$
$
$

¡Woah, no pude ver eso antes! Si se dan cuenta aparece el símbolo $ al final de cada renglón mostrando dónde aparece el salto de línea; hay algunas líneas que tienen varios espacios antes del salto de línea. Después, en otra publicación, vamos a revisar cómo podemos eliminarlos fácilemente, pero por ahora con cat podemos detectarlo.

Todavía cat tiene más trucos bajo la manga, veamos el siguiente ejemplo y ya lo explicaremos.

Usar cat -v para detectar caracteres de control en el archivo.

gabriel@gultij:~/Gultij/Coreutils/files$ cat -v ejemplo-101.txt
Hola Mundo

Usaremos este archivo para mostrar algunos comandos.

algunos
saltos
de
linea

incluimos tabs
y    algunos   espacios       otro    tab     mas

Excelente, creo que esto es suficiente
^L^L
^L
^L^M^K^[^H^G

¿ Ves los símbolos del final ? Yep, siempre han estado ahí, sólo que son «non-printable» characters, son caracteres de control que no se muestran en el documento.

Algunos comandos de control

000 0000  000 0   00  NUL  ^@  \0  Null character
000 0001  001 1   01  SOH  ^A      Start of Header
000 0010  002 2   02  STX  ^B      Start of Text
000 0011  003 3   03  ETX  ^C      End of Text
000 0100  004 4   04  EOT  ^D      End of Transmission
000 0101  005 5   05  ENQ  ^E      Enquiry
000 0110  006 6   06  ACK  ^F      Acknowledgment
000 0111  007 7   07  BEL  ^G  \a  Bell
000 1000  010 8   08  BS   ^H  \b  Backspace[d][e]
000 1001  011 9   09  HT   ^I  \t  Horizontal Tab[f]
000 1010  012 10  0A  LF   ^J  \n  Line feed
000 1011  013 11  0B  VT   ^K  \v  Vertical Tab
000 1100  014 12  0C  FF   ^L  \f  Form feed
000 1101  015 13  0D  CR   ^M  \r  Carriage return

Puedes realizar combinaciones de estos comando cosas como:

cat -vE

cat -vT

cat -vET

 cat –help para la lista completa de opciones

gabriel@gultij:~/Gultij/Coreutils/files$ cat --help
Usage: cat [OPTION]... [FILE]...
Concatenate FILE(s) to standard output.

With no FILE, or when FILE is -, read standard input.

-A, --show-all           equivalent to -vET
-b, --number-nonblank    number nonempty output lines, overrides -n
-e                       equivalent to -vE
-E, --show-ends          display $ at end of each line
-n, --number             number all output lines
-s, --squeeze-blank      suppress repeated empty output lines
-t                       equivalent to -vT
-T, --show-tabs          display TAB characters as ^I
-u                       (ignored)
-v, --show-nonprinting   use ^ and M- notation, except for LFD and TAB
--help     display this help and exit
--version  output version information and exit

Examples:
cat f - g  Output f's contents, then standard input, then g's contents.
cat        Copy standard input to standard output.

GNU coreutils online help: <http://www.gnu.org/software/coreutils/>
Full documentation at: <http://www.gnu.org/software/coreutils/cat>
or available locally via: info '(coreutils) cat invocation'

¡Hey, no explicaste todas las opciones! :(

Está bien, explicaré las que faltan brevemente por que esto ya se alargo más de lo que esperaba.

cat -n para enumerar todas las líneas del documento.

gabriel@gultij:~/Gultij/Coreutils/files$ cat -n ejemplo-101.txt
1 Hola Mundo
2
3 Usaremos este archivo para mostrar algunos comandos.
4
5 algunos
6 saltos
7 de
8 linea
9
10 incluimos tabs
11 y algunos espacios otro tab mas
12
13 Excelente, creo que esto es suficiente
14

15

16

cat -b para enumerar sólo para las líneas que tienen contenido (omite las líneas vacias en la numeración)

gabriel@gultij:~/Gultij/Coreutils/files$ cat -b ejemplo-101.txt
1 Hola Mundo

2 Usaremos este archivo para mostrar algunos comandos.

3 algunos
4 saltos
5 de
6 linea

7 incluimos tabs
8 y algunos espacios otro tab mas

9 Excelente, creo que esto es suficiente
10

11

12

Y bien, con esto terminaremos por hoy. La mejor forma de aprender es practicando. Desarrolla tus propios ejemplos y comparte en los comentarios tu preguntas.

La próxima semana espero poder cumplir con las fechas para otro artículo. Honestamente espero que no sea tan largo como este, pero de verdad espero que lo que hacemos aquí les sea de mucha utilidad a todos. ¡Gurús! Si tengo algún error recuerden que sólo soy un humano nivel 16, cualquier corrección o espacio para mejorar será siempre bien recibido.

OpenWRT por Jorge Vargas

OpenWRT – Sábado 16 de Junio [Reseña]

OpenWRT por Jorge Vargas

Hola mundo!

Ya pasó nuestra reunión mensual del mes de Julio y es el momento de la reseña :D. Así como lo dimos a conocer en el anuncio de la reunión de Julio , el día Sábado, 16 de Julio en las instalaciones de Bitcenter (Sala de juntas 1 y 2) a las 5:00 p.m. dimos comienzo con el programa, nuevamente éramos pocos, pero realmente fue una reunión que en lo personal disfrute mucho.

Sigue leyendo

Coreutils-01-wp

Introducción a GNU Core Utilities

Coreutils-01

Hola mundo!

Durante nuestra última reunión, el Sábado 16 de Julio (próximamente subiré la reseña, estuvo genial :D ),  salio la sugerencia de comenzar a  presentar más temas introductorios, y creo que es una excelente idea. Es por eso que en las reuniones cambiaremos un poco el formato para incluir más temas introductorios, pero además, comenzaremos con esta sección sobre GNU Core Utilities, ofreciendo ejemplos y descripciones sobre cómo usar los comandos que ofrece esta paquetería.

Sigue leyendo

reuniones-julio-2016

Reunión de Julio/2016

reuniones-julio-2016

¡Buen día!

Te invitamos a la siguiente reunión del Gultij, Grupo de Usuarios de GNU/Linux de Tijuana.

Cuándo: Sábado 16 de Julio 2016 de 5:00 p. m. a 7:00 p. m.

Dónde: BIT Center, Tijuana.
– Sala 1 y 2
– Google Maps: https://goo.gl/maps/l5IJg

Programa:
– Presentación del Gultij y asistentes (opcional).
– Presentación: OpenWRT por Jorge Luis Vargas
– Discusión.

Estacionamiento:
El BIT Center tiene estacionamiento.

La entrada es libre, así que invita a quien gustes aunque no esté en la lista.

¡Los esperamos!

Evento de facebook

https://www.facebook.com/events/1788254678127669/