El 17 de septiembre del 2016 el Grupo de usuarios de GNU/Linux de Tijuana (aka Gultij) llevó a cabo su reunión mensual, en esta ocasión contamos con la participación de Marcos Carrera Peralta con el tema Raspeberry Pi.
El 17 de septiembre del 2016 el Grupo de usuarios de GNU/Linux de Tijuana (aka Gultij) llevó a cabo su reunión mensual, en esta ocasión contamos con la participación de Marcos Carrera Peralta con el tema Raspeberry Pi.
¡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/
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.
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.
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».
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.
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.
Entonces, lo que nos indica el output del comando es lo siguiente:
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.
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.
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
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.
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.
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.
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:
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.
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.
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»
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.
Ya fuera de bromas y referencias a friends :P
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.
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. ;)
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.
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.
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.
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.
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»
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.
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.
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.
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.
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»
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.
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.
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.
¡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/
Hola mundo!
Ya llego, ya está aquí, la encuesta para elegir el tema de nuestra siguiente reunión el 16 de Julio.