martes, 24 de abril de 2012

Uso de Tuberias


Tuberias

Con el uso de la tuberia, la cual es representada con el caracter especial “|” (pipe), podemos conectar la salida estandar de un comando a la entrada estandar de otro comando, es decir, las tuberias nos permiten conectar comandos.

El uso de las tuberias nos permite realizar operaciones complejas con multiples comandos.

Veamos algunos Ejemplos:

johnny@debianJG:~/Documents/pruebas/carpeta1/carpeta2/carpeta3$ ls -l
total 92
-rw-r--r-- 1 johnny johnny 0 Mar 14 00:09 a.txt
-rw-r--r-- 1 johnny johnny 50 Mar 13 23:25 archdir
-rw-r--r-- 1 johnny johnny 0 Mar 11 14:57 archivo3
-rw-r--r-- 1 johnny johnny 23 Mar 19 22:00 b.txt
-rw-r--r-- 1 johnny johnny 1132 Mar 13 23:32 bdir
-rw-r--r-- 1 johnny johnny 52 Mar 19 22:03 c.txt
-rw-r--r-- 1 johnny johnny 143 Mar 13 23:22 calendario
-rwxr--r-- 1 johnny johnny 71 Mar 22 00:00 cola.sh
-rw-r--r-- 1 johnny johnny 54 Mar 11 17:04 copia.prueba2.txt
-rw-r--r-- 1 johnny johnny 24 Mar 13 23:34 copia_ip.sh
-rw-r--r-- 1 johnny johnny 45 Mar 12 21:23 cut.txt
-rw-r--r-- 1 johnny johnny 1176 Mar 13 23:29 dir
-rw-r--r-- 1 johnny johnny 335 Mar 19 21:57 hola
-rw-r--r-- 1 johnny johnny 319 Mar 12 21:19 hola.txt
-rw-r--r-- 1 johnny johnny 23 Mar 12 18:26 hola1
-rw-r--r-- 1 johnny johnny 335 Mar 11 17:18 hola2.txt
-rw-r--r-- 1 johnny johnny 373 Mar 11 17:20 hola3.txt
-rwxr-xr-x 1 johnny johnny 24 Mar 12 16:52 ip.sh
-rw-r--r-- 1 johnny johnny 141 Mar 13 23:33 mdir
-rw-r--r-- 1 johnny johnny 69 Mar 13 23:56 mensaje
-rw-r--r-- 1 johnny johnny 1621 Mar 12 20:22 neruda.txt
-rw-r--r-- 1 johnny johnny 190 Mar 14 00:08 nuevoarchivo
-rw-r--r-- 1 johnny johnny 193 Mar 11 17:08 prueba.txt
-rw-r--r-- 1 johnny johnny 44 Mar 11 16:58 prueba2.txt
-rw-r--r-- 1 johnny johnny 23 Mar 11 14:59 suma.sh

johnny@debianJG:~/Documents/pruebas/carpeta1/carpeta2/carpeta3$ ls -l | grep hola
-rw-r--r-- 1 johnny johnny 335 Mar 19 21:57 hola
-rw-r--r-- 1 johnny johnny 319 Mar 12 21:19 hola.txt
-rw-r--r-- 1 johnny johnny 23 Mar 12 18:26 hola1
-rw-r--r-- 1 johnny johnny 335 Mar 11 17:18 hola2.txt
-rw-r--r-- 1 johnny johnny 373 Mar 11 17:20 hola3.txt

Con esto logramos que la salida del comando “ls” sea la entrada del comando “grep” el cual filtrara dicha entrada con la palabra “hola”.

Tambien podemos conectar varias ejecuciones de comandos, con el uso de tuberias multiples.

Basandonos en el ejemplo anterior pordemos realizar lo siguiente:

johnny@debianJG:~/Documents/pruebas/carpeta1/carpeta2/carpeta3$ ls -l | grep hola
-rw-r--r-- 1 johnny johnny 335 Mar 19 21:57 hola
-rw-r--r-- 1 johnny johnny 319 Mar 12 21:19 hola.txt
-rw-r--r-- 1 johnny johnny 23 Mar 12 18:26 hola1
-rw-r--r-- 1 johnny johnny 335 Mar 11 17:18 hola2.txt
-rw-r--r-- 1 johnny johnny 373 Mar 11 17:20 hola3.txt
johnny@debianJG:~/Documents/pruebas/carpeta1/carpeta2/carpeta3$ ls -l | grep hola | wc -l
5

El comando “wc -l” nos permite contar la cantidad de lineas recibida del filtrado relizado por el comando “grep”.

Uso de Comillas en la shell


  • “ “ Comillas dobles, interpretan los caracteres $, \ y ' ' que estan en la cadena o string.

  • ' ' Comillas simples, interpretan el string dentro de las comilla como si fuese literales, es decir, si hay comando dentro de las comillas simples, los mismos no son interpratados. Nota: Estas comillas equivalen a las comillas inclinadas hacia la derecha en sistemas operativos como Solaris.

  • ` ` Comillas inclinadas hacia la izquierda, ejecutan el string entre la comillas como si fuera un comando.


Nota: El caracter especial "backslash \", sirve para escapar cualquier caracter especial, es decir, al precedir cualquier caracter especial que sea interpretado como parte de un comando, este se mostrara en su forma literal.


Ejemplo:


Comillas dobles “ “

johnny@debianJG:~/Documents/pruebas/abecedario$ echo "Probando el uso de comillas doble, se debe imprimir: debe interpretar los caracteres $, \ y \`\`"
Probando el uso de comillas doble, se debe imprimir: debe interpretar los caracteres $, \ y ``

johnny@debianJG:~/Documents/pruebas/abecedario$ echo "1) $ Muestro valor de la variable OLDPWD: $OLDPWD."
1) $ Muestro valor de la variables OLDPWD: /home/johnny/Documents/pruebas.

johnny@debianJG:~/Documents/pruebas/abecedario$ echo "2) \ Interpretando el backslash puedo mostrar las comillas \`\`."
2) \ Interpretando el backslash puedo mostrar las comillas ``.

johnny@debianJG:~/Documents/pruebas/abecedario$ echo "3) Ejecutando comando con las comillas invertidas muestro el valor de comando PWD: `pwd`"
 3) Ejecutando comando con las comillas invertidas muestro el valor de comando PWD:  /home/johnny/Documents/pruebas/abecedario


Comillas simples ' '

johnny@debianJG:~/Documents/pruebas/abecedario$ echo 'Imprime los caracteres especiales en su forma literal, es decir, sin interpretarlos: $ODLPWD, `pwd`, \`\`'
Imprime los caracteres especiales en su forma literal, es decir, sin interpretarlos: $ODLPWD, `pwd`, \`\`


Comillas inclinadas hacia la izquierda ` `

johnny@debianJG:~/Documents/pruebas/abecedario$ echo `pwd`
/home/johnny/Documents/pruebas/abecedario

lunes, 23 de abril de 2012

Comodines (Metacaracteres) en la Shell

A continuación se detallan ciertos comodines útiles al momento de listar archivos o directorios:


* Sustituye todos los caracteres a partir del comodin
? Sustituye un solo caracter en la posicion del comodin
[ ] Sustituye un solo caracter de la lista especificada
[! ] Niega la condicion colocada dentro de los [ ]
{ } Sustituye string o cadenas dentro de las llaves.


Ejemplos:

Asterisco *

- Lista los archivo o directorios que comiencen con “a”
johnny@debianJG:~/Documents/pruebas/abecedario$ ls a*
a

- Lista los archivo o directorios que contengan al menos una “a”
johnny@debianJG:~/Documents/pruebas/abecedario$ ls *a*
a caballo casa elefante finca hermana hermano mansion silla tortuga yegua


Interrogacion ?

- Lista los archivos o directorio donde el segundo caracter sea cualquier letra.
johnny@debianJG:~/Documents/pruebas/abecedario$ ls h?r*
hermana hermano


Corchetes [ ]

- Lista los archivos o directorio que tengan una sola letra y este entre la “a” y “d”. Si no tenemos la variable de ambiente LC_COLLATE activada con valor “C” el resultado no discriminara entre Mayuscula y Minuscula.
johnny@debianJG:~/Documents/pruebas/abecedario$ ls [a-d]
a A b B c C d

- Lista archivos o directorios donde las primeras letras esten entre “a” y “d” sin discriminar entre Mayuscula y minuscula.
johnny@debianJG:~/Documents/pruebas/abecedario$ ls [a-d]*
a A b B c C caballo casa d


Si queremos que al listar, en el resultado nos diferencie entre Mayuscula y Minuscal debemos realzar lo siguiente. Ver manual del grep, en parte del manual nos dice los siguiente:

...
Within a bracket expression, a range expression consists of two characters separated by a hyphen. It matches any single character that sorts between the two characters, inclusive, using the locale's collating sequence and character set. For example, in the default C locale, [a-d] is equivalent to [abcd]. Many locales sort characters in dictionary order, and in these locales [a-d] is typically not equivalent to [abcd]; it might be equivalent to [aBbCcDd], for example. To obtain the traditional interpretation of bracket expressions, you can use the C locale by setting the LC_ALL environment variable to the value C.
...
LC_ALL, LC_COLLATE, LANG
These variables specify the locale for the LC_COLLATE category, which determines the collating sequence used to interpret range expressions like [a-z].

"Ver man del comando locale para mayor información"

Primero comprobamos que la variable LC_COLLATE no este definida:

johnny@debianJG:~/Documents/pruebas/abecedario$set | grep LC_COLLATE
johnny@debianJG:~/Documents/pruebas/abecedario$env | grep LC_COLLATE


"Set sirve para ver todas las variables locales y exportadas, Env sirve para ver solo las variables exportadas. Como no se muestra la variable LC_COLLATE, procedemos a definirla y exportala de la siguiente forma:"


johnny@debianJG:~/Documents/pruebas/abecedario$ LC_COLLATE=C
johnny@debianJG:~/Documents/pruebas/abecedario$set | grep LC_COLLATE
LC_COLLATE=C
johnny@debianJG:~/Documents/pruebas/abecedario$ ls [a-d]
a b c d
johnny@debianJG:~/Documents/pruebas/abecedario$env | grep LC_COLLATE
johnny@debianJG:~/Documents/pruebas/abecedario$export LC_COLLATE
johnny@debianJG:~/Documents/pruebas/abecedario$env | grep LC_COLLATE
LC_COLLATE=C
johnny@debianJG:~/Documents/pruebas/abecedario$ ls [a-d]
a b c d
johnny@debianJG:~/Documents/pruebas/abecedario$ ls [A-Z]
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z


Negando Corchete [! ]

- Lista los archivos o directorios de una letra que no se una vocal
johnny@debianJG:~/Documents/pruebas/abecedario$ ls [!a,e,i,u,o,A,E,I,O,U]
B C D F G H J K L M N P Q R S T V W X Y Z b c d f g h j k l m n p q r s t v w x y z


Llaves { }

- Lista los archivo o directorios que contenga el string o cadena “lo”, “an”
johnny@debianJG:~/Documents/pruebas/abecedario$ ls *{lo,an}*
caballo elefante hermana hermano hilo mansion

Esto es similar a realizar el listado de la siguiente forma:

johnny@debianJG:~/Documents/pruebas/abecedario$ ls *lo* *an*
caballo elefante hermana hermano hilo mansion

viernes, 30 de marzo de 2012

La Shell


Shell: es un programa informatico que permite al usuario interactuar con el sistema operativo a traves de una interfaz de linea de comandos, es decir, es un interpret de comandos.

Existen diversos tipos de shell, y entre los mas comunes se destacan: sh, csh, tcsh, ksh y bash.

sh (shell):  creado por Steven Bourne, Su símbolo del sistema es $. Es el shell estándar y el que se monta en casi todos los sistemas UNIX/Linux.

csh (C-shell): desarrollado por Bill Joy, ofrece importantes características para los programadores que trabajan en lenguaje C. Hoy en dia no goza de un amplio uso en Unix/Linux. Su símbolo del sistema es %.

tcsh (TENEX C-Shell): Desarrollado principalmente por Ken Greer a finales de los años 70 y Paul Placeway continuo su desarrollo en los años 80. Este tipo de shell desplaza a C-Shell como interprete de comandos estandar de la FreeBSD ya que incluye nuevas caracteristicas programables como: autocompletado de nombres y edición en línea de comandos entre otras tantas cualidades.

ksh (Korn Shell): Desarrollado por David Korn. Fue escrito para el proyecto de contenido libre GNU y su código se encuentra disponible bajo los términos de la Licencia Pública General. Amplía el shell del sistema añadiendo historial de órdenes, edición en línea de órdenes y características ampliadas de programación.

bash (Bourne Again Shell):  Stephen Bourne, investigador de los Laboratorios Bell, escribió la versión original de Bourne. Brian Fox escribió bash en 1987. En 1990, Chet Ramey se convirtió en su principal desarrollador. Fue creado para usarlo en el proyecto GNU. Bash se incorpora en la mayoría de distribuciones de Linux. Es compatible con el shell sh. Además, incorpora algunas características útiles de ksh y csh, y otras propias como la edición de línea de comandos, control de los trabajos y procesos, funciones y alias, cálculos aritméticos con números enteros, etc. Su símbolo del sistema es nombre_usuario@nombre_equipo.

jueves, 23 de febrero de 2012

Instalar flash player en mozilla en linux

Para instalar el flash-player en tu explorador mozilla firefox en linux, solo desde realizar lo siguiente:
En mi caso lo realice en Debian squeeze.
1) Descargar el flash-player para tu linux desde la pagina de adobe: http://get.adobe.com/flashplayer/

2) En mi caso descargue el flash-player empaquetado y comprimido llamado "
install_flash_player_11_linux.i386.tar.gz":
  
   * Descomprimimos el paquete: gunzip install_flash_player_11_linux.i386.tar.gz
   * Desempaquetamos el paquete: tar -xvf install_flash_player_11_linux.i386.tar

3) Obtenemos:
-rw-r--r-- 1 johnny johnny 17047244 Nov  1 03:58 libflashplayer.so
drwxr-xr-x 5 johnny johnny     4096 Nov  1 03:58 usr

4) Para que el flash funcione en el explorador deseado solo debemos enfocarnos en el archivo "libflashplayer.so" y copiarlo en la ruta:
/usr/lib/mozilla/plugins con esto es suficiente para que el flash-player funcione en nuestro explorador.

5) Es importante en muchos casos copiar el archivo usr/bin/flash-player-properties en /usr/local/bin. Reiniciar el explorador.


* ACTUALIZANDO FIREFOX 10.0 a 11.0 NO FUNCIONA FLASHPLAYER *


NOTA IMPORTANTE: Supongamos que tenemos la version 10.0 de mozilla firefox y la actualizamos a la version 11.0 es muy probable que el flash player deje de funcionar, para ello procedemos a realizar lo siguiente:

1) Verificamos en nuestro explorador los plugins que tenemos instalados colocado en la URL: about:plugins

2) Buscamos si hay 2 plugins instalados con el nombre de Shockwave Flash y nos fijamos si tenemos dos titulos con dicho nombre apuntando a distintas librerias, en mi caso tenia lo siguiente apuntando Shockwave Flash:

- File: libflashplayer.so
- File: libgnashplugin.so

Ambas librerias apuntaban a la aplicacion "application/x-shockwave-flash" y por lo tanto creaba cierto conflicto el cual no permitia funcionar correctamente el flash-player. Como tenia funcionando correctamente el flash con la libreria "libflashplayer.so" procedi a eliminar el archivo plugin libgnashplugin.so y sus enlaces simbolico generados, para esto realice lo siguientes:

3) Ubicar archivo libgnashplugin.so y realizale un respaldo para prevenir.

find / -name libgnashplugin.so
/usr/lib/gnash/libgnashplugin.so

Realizar backup del archivo antes de eliminarlo:
cp  /usr/lib/gnash/libgnashplugin.so /home/usuario/Backup
root@pc:/usr/lib/gnash# ls -ltrh
total 8.5M
-rw-r--r-- 1 root root 169K Mar 16 23:29 libgnashsound-0.8.8.so
-rw-r--r-- 1 root root 1.2M Mar 16 23:29 libgnashrender-0.8.8.so
-rw-r--r-- 1 root root 573K Mar 16 23:29 libgnashmedia-0.8.8.so
-rw-r--r-- 1 root root 4.8M Mar 16 23:29 libgnashcore-0.8.8.so
-rw-r--r-- 1 root root 282K Mar 16 23:29 libgnashamf-0.8.8.so
-rw-r--r-- 1 root root 303K Mar 16 23:29 libgnashplugin.so
-rw-r--r-- 1 root root 596K Mar 16 23:29 libgnashnet-0.8.8.so
-rw-r--r-- 1 root root 637K Mar 16 23:29 libgnashbase-0.8.8.so
root@pc:/usr/lib/gnash# rm libgnashplugin.so

4) Eliminamos los enlaces simbolicos que se generaron automaticamente con la actualizacion del firefox:  /etc/alternatives/
flash-mozilla.so y /usr/lib/mozilla/plugins/flash-mozilla.so


Ingresamos en ambos directorios /etc/alternatives y /usr/lib/mozilla/plugins y desmontamos ambos enlaces simbolicos con el comando:
unlik flash-mozilla.so.

5) Reiniciamos el explorador y verificamos en los plugins instalados concerniente Shockwave Flash quede solamente el de la libreria libflashplayer.so.