Introducción a GNU/Linux y la Programación Author: Hugo Ruscitti <hugo@gcoop.coop>, Osiris Gomez <osiris@gcoop.coop> Date: 2011-05-12 Copyright: CreativeCommons Slides: <http://gcoop.coop/pdf/introduccion-gnu-linux-programacion-2.pdf> Introducción a GNU/Linux y la Programación 1
Filosofía Unix Escriba programas que hagan sólo una cosa pero que la hagan bien. Escriba programas que trabajen juntos. Escriba programas que manipulen flujos de texto, pues esta es una interfaz universal. Todo es un archivo En sistemas *nix todo es un archivo, es decir todos los dispositivos, las particiones de disco, CDs, impresoras, tarjeta de sonido, video, etc. Introducción a GNU/Linux y la Programación 2
Permisos r = read 4 w = write 2 x = execute 1 # usuario y grupo todo, el resto nada. 770 rwxrwx-- # solo dueño y grupo leer y ejecutar. 550 r-xr-x-- # solo dueño tiene escritura, todos pueden leer. 644 rw--r--r Introducción a GNU/Linux y la Programación 3
Qué és una consola? Suele usarse indistintamente el termino shell, terminal, emulador de terminal, intérprete de comandos. Se puede decir que es una interface de texto que permite ingresar instrucciones a un programa informático. Por qué usar una consola? Uno de los principales beneficios es la automatización de las tareas. Es la interconexión de comandos la mayor ventaja, ya que esto permite escribir rápidamente soluciones que no tienen una aplicación específica que las resuelva. Está siempre disponible en todas las distribuciones de GNU/Linux, BSD, Unix, etc. es una alternativa. está siempre disponible. es igual en todas las distribuciones. no necesita grandes recursos, ahorra batería y ancho de banda. permite trabajar en remoto. Introducción a GNU/Linux y la Programación 4
comandos básicos man echo ls pwd cd cp rm mv mkdir cat leer el manual, es el mas importante! eco, imprime texto en pantalla listar archivos y directorios mostrar directorio actual cambiar directorio copiar borrar mover crear directorio muestra contenido de un archivo Introducción a GNU/Linux y la Programación 5
más comandos more sort wc grep sed awk find chmod chown alias ps pagina la salida de un archivo ordena cuenta cantidad líneas y palabaras filtra un texto editor de texto en línea procesa texto busca archivos cambia permisos cambia el propietario de un archivo define un alias para un comando muestra procesos en ejecucion Introducción a GNU/Linux y la Programación 6
stdinput En lugar de tipear podemos enviar un archivo como la entrada estandard de un comando: mail osiux@osiux.com.ar < archivo.txt stdoutput Podemos almacenar en un archivo el resultado de la ejecución de un comando: # sobreescribe ls *.png >lista.txt # agrega ls *.txt >>lista.txt pipe Convertir la salida standard de un comando en la entrada standard de otro comando permite conectar procesos: ls sort Introducción a GNU/Linux y la Programación 7
Introducción a GNU/Linux y la Programación 8
Tareas cotidianas grabar un CD/DVD descargar archivos leer y responder correos copiar archivos publicar fotos redactar y dar formato a un documento Introducción a GNU/Linux y la Programación 9
Expresiones regulares [a-z] rango de la *a* a la *z* [A-Z] rango de la *A* a la *Z* [0-9] rango de 0 a 9 [^..] negación ^ principio de línea $ fin de línea. cualquier caracter? cero o una aparición * ninguna o muchas repeticiones + una o mas repeticiones Introducción a GNU/Linux y la Programación 10
Personalizando tu sesión con alias set alias buscar='apt-cache search' set alias instalar='apt-get install' set alias web='w3m -dump' set alias descargar='wget' set alias editar='vim' set alias filtrar='egrep -i --color=auto' Instalando programas apt-get aptitude pacman yum Introducción a GNU/Linux y la Programación 11
Automatizando tareas Tareas fácilmente enumerables. Reproducibles en papel. Se trabaja con listas. # cuál es mi ip? ip r grep -o src.[0-9.]+ awk '{print $2}' # cuál es mi mac? ifconfig eth0 grep HWaddr awk '{print $5}' # sé la mac, pero cúal es la ip? tcpdump -ennqti eth0 \( arp or 600pxp \) grep "48:5b:39:6e:f4:d4" # encender la compu remotamente wakeonlan 48:5b:39:6e:f4:d4 # quíen está consumiendo todo el ancho de banda? iftop -i eth0 # ips entregadas por dhcp? egrep -o "[0-9]+>[0-9]+>[0-9]+>[0-9]+" dhcpd.leases uniq wc -l # obtener una línea específica de un archivo head -30 /var/log/messages tail -1 # reemplazar texto en varios archivos find -name '*.php' while read i;do cat $i \ Introducción a GNU/Linux y la Programación 12
sed s/gnu/gpl/g >$i.tmp;cat $i.tmp>$i;done # buscar en el contenido de una web w3m -dump http://barrapunto.com grep -i -C2 android w3m -dump http://debian.org/news grep -i squeeze grep frozen >/tmp/debian # notificar estado batería if [ "$BAT_STATUS" = "Discharging" ];then \ if [ $BAT_PERCENT -le 25 ];then \ notify-send -u critical "$MSG" "$BAT_PERCENT";fi else;notify-send "$MSG";fi publicar fotos c=0;ls grep jpg while read f; \ do mv -v $f $'mundo-nuevo-2010-'$c$'.jpg'; \ c=$[$c+1];done for i in *.jpg do convert -filter cubic -resize 640 $i 640-$i done Introducción a GNU/Linux y la Programación 13
Dudas y comentarios mailto:gnu-linux@listas.gcoop.coop Cualquier duda pueden consultar por correo a la lista del curso. http://gcoop.coop/capacitaciones Pueden descargar ésta y otras charlas, incluído el código fuente. Introducción a GNU/Linux y la Programación 14