Te puede interesar:
Te puede interesar:

sudo gedit /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX_DEFAULT="splash"
sudo update-grub
sudo gedit /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX_DEFAULT="splash"
sudo update-grub
Utilizar una secuencia de comandos para realizar busquedas de webs, hacer traducciones , buscar fotos,videos, callejeros, etc... y mucho mas es lo que nos ofrece goosh .Una página web en ajax que utiliza los servicios de búsqueda de Google pero ofreciéndolos con una interface similar a una shell de Unix.Lo interesante es que se puede integrar en los motores de busqueda de Firefox(Una vez dentro de la web de goosh, escribimos el comando "addengine" y ya tendremos el nuevo motor de busqueda en firefox).


Etiquetas: Comandos Linux, Consola, Navegadores 2 COMENTARIOS

alsamixer es un programa de mezclado de audio para la arquitectura de sonido de Linux ALSA.Se utiliza para configurar el sonido y ajustar los volumenes . Tiene una interface para usuarios basada en ncourses (modo texto) y no necesita del sistema X Window y soporta gran variedad de placas con dispositivos múltiples.Nos desplazamos a traves del tabulador y las flechas de direccion
| Opción | Descripción |
|---|---|
| -h, -help | Ayuda: muestra las opciones disponibles. |
| -c | Selecciona la placa de sonido a utilizar, si en el sistema existen más de una placa. Las placas se numeran desde 0 (por defecto). |
| -D | Selecciona el mezclador para el control. |
| -g | Cambia el uso de colores. |
| -s | Minimiza la ventana del mezclador |
| -V | Selecciona el modo de vista inicial, reproducción, captura o todos. |

| Opción | Descripción |
|---|---|
| -h, -help | Ayuda: muestra las opciones disponibles. |
| -c | Selecciona la placa de sonido a utilizar, si en el sistema existen más de una placa. Las placas se numeran desde 0 (por defecto). |
| -D | Selecciona el mezclador para el control. |
| -g | Cambia el uso de colores. |
| -s | Minimiza la ventana del mezclador |
| -V | Selecciona el modo de vista inicial, reproducción, captura o todos. |
Etiquetas: Comandos Linux, Consola 1 COMENTARIOS
Normalmente cuando queria convertir un video flash de Youtube (o todos sus clones) a .avi o .mpeg,tenia dos opciones:
- Utilizar algun web online que te pedia la URL ,lo convertia (eso si no daba error) y te daba la opcion de descargar el video ya en otro formato.
- O descargar el video y utilizar algun programa (WinFF ,etc...).
La tercera opcion es simplemente desde consola ,siempre que tengamos instalados ffmpeg y mencoder
# aptitude install ffmpeg mencoder
Ver integramente el video por internet (de principio a fin), para luego abrir consola e ir al directorio tmp:
cd /tmp
flash se queda en cache hasta que apagamos nuestra maquina, aqui esta todo los que hemos visto en las webs,solo hay que listarlo:
ls -l
Normalmente los videos de youtube tienen un nombre del tipo FlashEvjZU.flv (en mi caso)
Copiamos el video al Escritorio para trabajar mejor:
cp -v FlashEvjZU.flv /home/vuestro_usuario/Escritorio/nuevo_nombre_del_video.flv
Y convertimos a .avi:
ffmpeg -i FlashEvjZU.flv nuevo_nombre_del_video.avi
O convertimos a .mpeg:
ffmpeg -i FlashEvjZU.flv nuevo_nombre_del_video.mpeg
Si algun video no tiene soporte en ffmpeg probamos con mencoder:
mencoder FlashEvjZU.flv -ovc lavc -oac mp3lame -o nuevo_nombre_del_video.avi
Etiquetas: Consola 2 COMENTARIOS
ArchLinux User-community Repository (AUR) o Repositorio del Usuario-comunidad de ArchLinux (RUA) es una comunidad impulsada para el repositorio de paquetes de los usuarios de Arch.
En el AUR se suben, se verifican y testean los paquetes por usuarios que pertenezcan a ella.
Votación:
Una de las actividades más fáciles para todos los usuarios de Arch es registrarse para luego navegar por la AUR y votar por sus paquetes favoritos utilizando la interfaz online. Todos los paquetes son elegibles para la adopción en el repositorio [commuity]. Cuanto mayor sea el numero de votos que tenga un paquete en AUR, mayor son sus posibilidades que ingrese en el repositorio de la comunidad.
Yaourt es una interfaz de línea de comandos que completa a pacman, posee muchas más funcionalidades (como el soporte a AUR) para instalar software sobre Archlinux.
Funciones:
* Búsqueda en el repositorio de pacman como en AUR.
* Salida coloreada de los resultados de búsqueda con indicación de software ya instalado.
* Instalación de paquetes desde los repositorios y desde AUR con un único mando.
* Modo interactivo de búsqueda (búsqueda y selección, tecleando el número de paquete).
* Opción: instalación de software desde los fuentes (abs) con srcpac.
* Eliminación de los paquetes inútiles:
* Actualización global de todos los paquetes de AUR.
* Totalmente compatible con pacman/pacman-drive/pacman-cage.
* Reutilización de las opciones de pacman (véase el pacman - help).
* Detección de los paquetes que han quedado huérfanos después de una actualización .
* Editor de fichero de configuración (véase pacdiffviewer-h).
* Búsqueda mejorada para encontrar de dónde proviene un archivo.
Todos las opciones de pacman son reconocidas, utiliza los mismos parámetros.
Búsqueda e instalación:
[archlinuxfr]
Server = http://repo.archlinux.fr/i686
pacman -Sy yaourt
root / # pacman -Sy
error: el archivo de configuración /etc/pacman.d/core no se ha podido leer.
error: el archivo de configuración /etc/pacman.d/extra no se ha podido leer.
error: el archivo de configuración /etc/pacman.d/community no se ha podido leer.
:: Sincronizando las bases de datos de paquetes...
error: fallo al sincronizar core:
error: fallo al sincronizar extra:
error: fallo al sincronizar community:
kdemod 33,4K 124,7K/s 00:00:00 [#####################] 100%
archlinuxfr 14,9K 130,0K/s 00:00:00 [#####################] 100%
la base de datos local está actualizada
root / #
[core]
Include = /etc/pacman.d/mirrorlist
[extra]
Include = /etc/pacman.d/mirrorlist
[community]
Include = /etc/pacman.d/mirrorlist
root / # pacman -Sy
:: Sincronizando las bases de datos de paquetes...
core 23,6K 48,5K/s 00:00:00 [#####################] 100%
extra 311,4K 62,5K/s 00:00:05 [#####################] 100%
community 345,4K 65,6K/s 00:00:05 [#####################] 100%
kdemod está actualizado
archlinuxfr está actualizado
la base de datos local está actualizada
Gracias Braian por el dato.ArchLinux User-community Repository (AUR) o Repositorio del Usuario-comunidad de ArchLinux (RUA) es una comunidad impulsada para el repositorio de paquetes de los usuarios de Arch.
En el AUR se suben, se verifican y testean los paquetes por usuarios que pertenezcan a ella.
Votación:
Una de las actividades más fáciles para todos los usuarios de Arch es registrarse para luego navegar por la AUR y votar por sus paquetes favoritos utilizando la interfaz online. Todos los paquetes son elegibles para la adopción en el repositorio [commuity]. Cuanto mayor sea el numero de votos que tenga un paquete en AUR, mayor son sus posibilidades que ingrese en el repositorio de la comunidad.
Yaourt es una interfaz de línea de comandos que completa a pacman, posee muchas más funcionalidades (como el soporte a AUR) para instalar software sobre Archlinux.
Funciones:
* Búsqueda en el repositorio de pacman como en AUR.
* Salida coloreada de los resultados de búsqueda con indicación de software ya instalado.
* Instalación de paquetes desde los repositorios y desde AUR con un único mando.
* Modo interactivo de búsqueda (búsqueda y selección, tecleando el número de paquete).
* Opción: instalación de software desde los fuentes (abs) con srcpac.
* Eliminación de los paquetes inútiles:
* Actualización global de todos los paquetes de AUR.
* Totalmente compatible con pacman/pacman-drive/pacman-cage.
* Reutilización de las opciones de pacman (véase el pacman - help).
* Detección de los paquetes que han quedado huérfanos después de una actualización .
* Editor de fichero de configuración (véase pacdiffviewer-h).
* Búsqueda mejorada para encontrar de dónde proviene un archivo.
Todos las opciones de pacman son reconocidas, utiliza los mismos parámetros.
Búsqueda e instalación:
[archlinuxfr]
Server = http://repo.archlinux.fr/i686
pacman -Sy yaourt
root / # pacman -Sy
error: el archivo de configuración /etc/pacman.d/core no se ha podido leer.
error: el archivo de configuración /etc/pacman.d/extra no se ha podido leer.
error: el archivo de configuración /etc/pacman.d/community no se ha podido leer.
:: Sincronizando las bases de datos de paquetes...
error: fallo al sincronizar core:
error: fallo al sincronizar extra:
error: fallo al sincronizar community:
kdemod 33,4K 124,7K/s 00:00:00 [#####################] 100%
archlinuxfr 14,9K 130,0K/s 00:00:00 [#####################] 100%
la base de datos local está actualizada
root / #
[core]
Include = /etc/pacman.d/mirrorlist
[extra]
Include = /etc/pacman.d/mirrorlist
[community]
Include = /etc/pacman.d/mirrorlist
root / # pacman -Sy
:: Sincronizando las bases de datos de paquetes...
core 23,6K 48,5K/s 00:00:00 [#####################] 100%
extra 311,4K 62,5K/s 00:00:05 [#####################] 100%
community 345,4K 65,6K/s 00:00:05 [#####################] 100%
kdemod está actualizado
archlinuxfr está actualizado
la base de datos local está actualizada
Gracias Braian por el dato.Etiquetas: Consola, Distribuciones 0 COMENTARIOS
ERICLINUX
Navegando por mi blogroll me encuentro con Braian que realiza un articulo muy interesante titulado "Expresiones Regulares en la shell. Ejemplos de uso con grep, awk y sed.".
Estaba intentando hacer un CGI muy sencillo usando bash (como lo que quería hacer era algo muy específico de bash, no he querido usar ni Perl, ni PHP). La única dificultad que he encontrado ha sido obtener las distintas variables que el método GET pasa al CGI a través de la variable $QUERY_STRING, que normalmente tiene este aspecto:
QUERY_STRING='parametro1=valor1¶metro2=valor2¶metro3=valor3'
Estaba yo ya comenzando a darle vueltas a una Expresión Regular para interpretar dicha salida cuando he decidido buscar en Google para ver si alguien tenía una solución más completa que la que yo ya tenía a medias. He llegado al artículo CGI Scripting Tips for Bash or SH que propone lo siguiente para extraer del QUERY_STRING la variable que nos interese:
PARAMETROX=`echo "$QUERY_STRING" | grep -oE "(^|[?&])parametrox=[^&]+" | sed "s/%20/ /g" | cut -f 2 -d "="`
Y es que con bash y sus compañeros sed, awk, cat, grep, etc. aún se puede hacer casi de todo, incluso un weblog o un servidor web. Como las Expresiones Regulares son tan excepcionalmente útiles como complicadas a la hora de usarlas, me he decidido a comentar algunos ejemplos, comenzando por el que me ha llevado a este artículo.
Y antes de seguir conviene comentar que la opción -o del grep del comando anterior indica que la salida del comando ha de contener únicamente la parte de texto que coincide con el patrón, no toda la línea. La opción -E indica que se va a usar una Expresión Regular Extendida (egrep es lo mismo que grep -E).
Pasemos a analizar la expresión regular… (^|[?&])parametrox=[^&]+ significa que buscamos algo que:
| ^|[?&] | está a principio de línea ^ o | que comienza por un caracter ? o un & |
| parametrox= | seguido por la secuencia de caracteres parametrox= |
| [^&]+ | y que acaba con uno o más caracteres + que no sean & |
La página http://www.regular-expressions.info es un excelente sitio para aprender sobre expresiones regulares. Allí he encontrado algunos ejemplos que me han gustado Éstos son tres de ellos especialmente útiles:
\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b
| \b[A-Z0-9._%-]+ | Buscamos un comienzo de palabra \b que contenga uno o más caracteres + dentro del conjunto A a Z, 0 a 9,., _, % y -, que son los caracteres admitidos para un nombre de usuario |
| @ | seguido del símbolo @ |
| [A-Z0-9.-]+ | seguido por uno o más + caracteres A a Z, 0 a 9,. y -, que son los caracteres admitidos para un dominio |
| \. | seguido por un punto escapado con \, ya que el punto solo significa cualquier caracter |
| [A-Z]{2,4}\b | seguido por entre 2 y 4 caracteres {2,4} entre el conjunto A-Z y además éste tiene que ser el final de una palabra \b |
Por tanto, si usáramos esa expresión regular con egrep sobre un texto como este:
En un lugar de la Mancha, de cuyo nombre no quiero acordarme, pero a cuyo ayuntamiento podíamos enviar e-mails a la dirección ayuntamiento@lugardelamancha.es, no ha mucho tiempo que vivía un hidalgo de los de lanza en astillero, adarga antigua, rocín flaco y galgo corredor cuyo e-mail era don.quijote@del.toboso.edu.
obtendríamos:
$ egrep -oi '\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}' donqui.txt
ayuntamiento@lugardelamancha.es
don.quijote@del.toboso.edu
Si consideramos que dos palabras cercanas son aquellas que están separadas entre 1 y 8 palabras, esta expresión regular es perfecta:
\bpalabra1\W+(w+\W+){1,8}palabra2\b
| \bpalabra1 | Buscamos un comienzo de palabra con la sucesión de caracteres palabra1 |
| \W+ | seguido por uno o varios caracteres no alfanuméricos \W |
| (\w+\W+){1,8} | seguido de entre 1 y 8 grupos {1,8} de uno o más caracteres alfanuméricos \w y uno o más caracteres no alfanuméricos \W |
| palabra2\b | acabado un la sucesión de caracteres palabra2 |
Y podemos probar la expresión sobre el texto anterior:
$ egrep -o '\bhidalgo\W+(\w+\W+){1,8}lanza\b' donqui.txt
hidalgo de los de lanza
Por supuesto, puede ser que no sepamos si palabra1 va antes que palabra2, así que podemos especificar que una cosa o | la otra:
\b(palabra1\W+(\w+\W+){1,8}palabra2|palabra2\W+(\w+\W+){1,8}palabra1)\b
\b[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\b
Creo que este ejemplo ya no necesita explicación, aunque tiene un defecto: la expresión encajaría también con 999.999.999.999. Para corregirlo, podríamos sustituir cada bloque [0-9]{1,3} por (25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?) que significa que cada número puede ser del 250 al 255 25[0-5] o del 200 al 249 2[0-4][0-9] o del 0 al 199, contemplando la posibilidad de que por ejemplo un 7 se escriba 7, 07 o 007 [01]?[0-9][0-9]?. El símbolo ? indica uno o ninguno.
Podemos obtener fácilmente una lista de IPs que han visitado nuestro servidor web con el siguiente comando:
$ egrep -o '\b[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\b' access.log | sort -u
En el uso diario de la shell, las expresiones regulares son nuestra navaja suiza. Ya hemos visto algunos ejemplos con grep, pero sigamos con algunos más de cosecha propia que usan grep, awk y sed.
Resulta que queremos saber los usuarios del fichero /etc/shadow que pueden logearse al sistema (que no tienen un caracter ! o * en el campo del password). La expresión regular a usar sería:
# egrep '^[^:]+:[^*!]+:' /etc/shadow
fulano:$1$PFC1F2pj$0KEflTjNmDQg9.rtFT/DK0:12793:0:99999:7:::
mengano:$1$aAUa4js/$c2LEh.HeT0JvCG3B.34O.:12793:0:99999:7:::
| ^[^:]+ | Buscamos uno o más caracteres + que no sean : [^:] a principio de línea ^ |
| : | seguido de un caracter : |
| [^*!]+ | seguido por una secuencia de uno o más caracteres que no sean ! o * |
| : | seguido de otro caracter : |
Podemos hacerlo un poco mejor, porque sólo nos interesa ver el nombre del usuario. Para ello podríamos hacer un cut -f 1 -d : sobre la salida anterior, pero usando el awk somos capaces de hacer lo anterior en un sólo comando:
# awk -F":" '$2~/[^!*]+/ { print $1 }' /etc/shadow
fulano
mengano
En el comando anterior le decimos a awk que, usando como separador de campos el caracter : (-F”:”) queremos que nos saque el primer campo { print $1 } siempre que el segundo campo cumpla la regla de que contenga uno o más caracteres que no sean ! o * $2~/[^!*]+/.
Si tenemos líneas como la siguiente (LogFormat combined) en el access.log de nuestro apache:
192.168.1.3 - - [12/Apr/2007:22:15:14 +0200] "GET /blog/ HTTP/1.1" 200 46503 "http://www.google.es/search?hl=es&q=vicente+navarro" "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.3) Gecko/20070310 Iceweasel/2.0.0.3 (Debian-2.0.0.3-1)"
192.168.1.3 - - [12/Apr/2007:22:24:07 +0200] "GET /blog/ HTTP/1.1" 200 46503 "http://www.google.es/search?q=super+coco&hl=es&start=10&sa=N" "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.3) Gecko/20070310 Iceweasel/2.0.0.3 (Debian-2.0.0.3-1)"
podemos obtener un listado de los referers que han traído a los visitantes a la página con el siguiente comando:
$ egrep -o '^[0-9.]+ - - \[.+\] \"[^"]+\" [0-9-]+ [0-9-]+ \"[^"]+\"' access.log | egrep -o '\"[^"-]+\"$' | egrep -o '[^"]+' | sort -u
...
http://www.google.es/search?hl=es&q=vicente+navarro
http://www.google.es/search?q=super+coco&hl=es&start=10&sa=N
...
Hay dos grep’s, porque estamos identificando y extrayendo todo el texto hasta llegar al referer para dejarlo al final y después extraerlo con el segundo grep. Pero aunque sirva para ilustrar la entrada, resulta que nos hemos complicado muchísimo la vida, porque el trozo del referer es el único que comienza con http://. Teniendo en cuenta esto, el comando, con una Expresión Regular mucho más simple, queda:
$ egrep -o 'http://[^"]+' access.log | sort -u
Y usando sólo awk:
awk '$0~/http/ { print $11 }' access.log | awk -F'"' '{ print $2 }' | sort -u
Pero ahora queremos saber a partir de los referers que hemos obtenido anteriormente, con qué parámetros de búsqueda y en qué posición aparece nuestra página en Google. Para ello, podríamos usar la Expresión Regular del principio para obtener los parámetros q= y start= de la URL de Google, pero hagámoslo con awk:
$ egrep -o 'http://[^"]+' big | sort -u | awk -F "[?&=]" '$1~/google.+search/ { TERMINOBUSQUEDA=""; POSICION="0"; for (i=2; i<=NF; i++) { if ($(i-1)~"(^|^as_)q$") { TERMINOBUSQUEDA=$i; } if ($(i-1)~"^start$") { POSICION=$i; } } print TERMINOBUSQUEDA " " POSICION; }' super+coco 10 vicente+navarro 0
Es decir, si la línea es una búsqueda de Google, el awk ha de hacer:
TERMINOBUSQUEDA="";
POSICION="0";
for (i=2; i<=NF; i++) { if ($(i-1)~"(^|^as_)q$") { TERMINOBUSQUEDA=$i;} if ($(i-1)~"^start$") { POSICION=$i; } } print TERMINOBUSQUEDA " " POSICION;
Las Expresiones Regulares de Perl (PCRE) son más potentes que las Expresiones Regulares POSIX. En algunas distribuciones, el grep -P nos permite usarlas, pero en Debian no es posible usar la opción -P de grep. En cambio, tenemos el pcregrep que sí que nos lo permite. Y una de las cosas más interesantes que se puede hacer con estas reglas es Lookahead y Lookbehind. Supongamos que queremos sacar de las URL de Google el valor del parámetro q= con un sólo comando, a diferencia de la expresión del principio que requería un cut adicional:
$ echo "http://www.google.es/search?q=super+coco&hl=es&start=10&sa=N" | pcregrep -o '(?<=[&?]q=)[^&?]+' super+coco
Usando PCRE, algo como (?<=delante)detras significa que para coincidir, la cadena tiene que ser delantedetras, pero delante no aparecerá en la cadena coincidente. ¡Muy útil! La pena es que este tipo de expresiones no se puede usar con cadenas de longitud variable:
$ pcregrep -o '(?<=\w+)prueba' fichero.txt pcregrep: Error in command-line regex at offset 7: lookbehind assertion is not fixed length
sed es otra utilidad muy versátil. Su función más típica es la de sustitución, aunque también puede hacer cosas sencillas pero útiles como mostrar sólo un conjunto de líneas de un fichero o eliminarlas, insertar texto al final de una línea determinada o reemplazar el texto de esa línea..
La sintaxis típica de sed para reemplazos es:
sed -r 's/reemplazada/reemplazo/g'
El -r es paraque el sed use Expresiones Regulares Extendidas o POSIX y el g significa que la sustitución se hará todas las veces que se encuentre la Expresión Regular en la línea, no sólo la primera vez. Si nos viene mal usar el carácter / para no tener que escapar, por ejemplo, muchas barras de path, podríamos usar cualquier otro carácter: s_reemplazada_reemplazo_g.
Por ejemplo, si quisiéramos cambiar la shell por defecto a todos los usuarios que aparecen en /etc/passwd, podríamos hacer:
$ sed -r 's/[^:]+$/:\/bin\/bash/g' /etc/passwd
...
mail:x:8:8:mail:/var/mail::/bin/bash
news:x:9:9:news:/var/spool/news::/bin/bash
uucp:x:10:10:uucp:/var/spool/uucp::/bin/bash
...
Y si queremos añadir una cabecera de “usuario_” a todos los nombres de usuario del sistema, podemos usar el carácter & para usar la parte coincidente en la cadena de reemplazo:
$ sed -r 's/^[^:]+/usuario_&/g' /etc/passwd
...
usuario_mail:x:8:8:mail:/var/mail:/bin/sh
usuario_news:x:9:9:news:/var/spool/news:/bin/sh
usuario_uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh
...
Y como lo que pongamos entre paréntesis () en la cadena reemplazada, el sed nos lo guarda para usar en la cadena de reemplazo en \1, \2,… \9, supongamos que queremos mover todo a un nuevo sistema de ficheros y queremos cambiar tanto el home del usuario como su shell:
$ sed -r 's/([^:]+):([^:]+)$/:\/newfs\1:\/newfs\2/g' /etc/passwd
...
mail:x:8:8:mail::/newfs/var/mail:/newfs/bin/sh
news:x:9:9:news::/newfs/var/spool/news:/newfs/bin/sh
uucp:x:10:10:uucp::/newfs/var/spool/uucp:/newfs/bin/sh
...
Estaba intentando hacer un CGI muy sencillo usando bash (como lo que quería hacer era algo muy específico de bash, no he querido usar ni Perl, ni PHP). La única dificultad que he encontrado ha sido obtener las distintas variables que el método GET pasa al CGI a través de la variable $QUERY_STRING, que normalmente tiene este aspecto:
QUERY_STRING='parametro1=valor1¶metro2=valor2¶metro3=valor3'
Estaba yo ya comenzando a darle vueltas a una Expresión Regular para interpretar dicha salida cuando he decidido buscar en Google para ver si alguien tenía una solución más completa que la que yo ya tenía a medias. He llegado al artículo CGI Scripting Tips for Bash or SH que propone lo siguiente para extraer del QUERY_STRING la variable que nos interese:
PARAMETROX=`echo "$QUERY_STRING" | grep -oE "(^|[?&])parametrox=[^&]+" | sed "s/%20/ /g" | cut -f 2 -d "="`
Y es que con bash y sus compañeros sed, awk, cat, grep, etc. aún se puede hacer casi de todo, incluso un weblog o un servidor web. Como las Expresiones Regulares son tan excepcionalmente útiles como complicadas a la hora de usarlas, me he decidido a comentar algunos ejemplos, comenzando por el que me ha llevado a este artículo.
Y antes de seguir conviene comentar que la opción -o del grep del comando anterior indica que la salida del comando ha de contener únicamente la parte de texto que coincide con el patrón, no toda la línea. La opción -E indica que se va a usar una Expresión Regular Extendida (egrep es lo mismo que grep -E).
Pasemos a analizar la expresión regular… (^|[?&])parametrox=[^&]+ significa que buscamos algo que:
| ^|[?&] | está a principio de línea ^ o | que comienza por un caracter ? o un & |
| parametrox= | seguido por la secuencia de caracteres parametrox= |
| [^&]+ | y que acaba con uno o más caracteres + que no sean & |
La página http://www.regular-expressions.info es un excelente sitio para aprender sobre expresiones regulares. Allí he encontrado algunos ejemplos que me han gustado Éstos son tres de ellos especialmente útiles:
\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b
| \b[A-Z0-9._%-]+ | Buscamos un comienzo de palabra \b que contenga uno o más caracteres + dentro del conjunto A a Z, 0 a 9,., _, % y -, que son los caracteres admitidos para un nombre de usuario |
| @ | seguido del símbolo @ |
| [A-Z0-9.-]+ | seguido por uno o más + caracteres A a Z, 0 a 9,. y -, que son los caracteres admitidos para un dominio |
| \. | seguido por un punto escapado con \, ya que el punto solo significa cualquier caracter |
| [A-Z]{2,4}\b | seguido por entre 2 y 4 caracteres {2,4} entre el conjunto A-Z y además éste tiene que ser el final de una palabra \b |
Por tanto, si usáramos esa expresión regular con egrep sobre un texto como este:
En un lugar de la Mancha, de cuyo nombre no quiero acordarme, pero a cuyo ayuntamiento podíamos enviar e-mails a la dirección ayuntamiento@lugardelamancha.es, no ha mucho tiempo que vivía un hidalgo de los de lanza en astillero, adarga antigua, rocín flaco y galgo corredor cuyo e-mail era don.quijote@del.toboso.edu.
obtendríamos:
$ egrep -oi '\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}' donqui.txt
ayuntamiento@lugardelamancha.es
don.quijote@del.toboso.edu
Si consideramos que dos palabras cercanas son aquellas que están separadas entre 1 y 8 palabras, esta expresión regular es perfecta:
\bpalabra1\W+(w+\W+){1,8}palabra2\b
| \bpalabra1 | Buscamos un comienzo de palabra con la sucesión de caracteres palabra1 |
| \W+ | seguido por uno o varios caracteres no alfanuméricos \W |
| (\w+\W+){1,8} | seguido de entre 1 y 8 grupos {1,8} de uno o más caracteres alfanuméricos \w y uno o más caracteres no alfanuméricos \W |
| palabra2\b | acabado un la sucesión de caracteres palabra2 |
Y podemos probar la expresión sobre el texto anterior:
$ egrep -o '\bhidalgo\W+(\w+\W+){1,8}lanza\b' donqui.txt
hidalgo de los de lanza
Por supuesto, puede ser que no sepamos si palabra1 va antes que palabra2, así que podemos especificar que una cosa o | la otra:
\b(palabra1\W+(\w+\W+){1,8}palabra2|palabra2\W+(\w+\W+){1,8}palabra1)\b
\b[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\b
Creo que este ejemplo ya no necesita explicación, aunque tiene un defecto: la expresión encajaría también con 999.999.999.999. Para corregirlo, podríamos sustituir cada bloque [0-9]{1,3} por (25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?) que significa que cada número puede ser del 250 al 255 25[0-5] o del 200 al 249 2[0-4][0-9] o del 0 al 199, contemplando la posibilidad de que por ejemplo un 7 se escriba 7, 07 o 007 [01]?[0-9][0-9]?. El símbolo ? indica uno o ninguno.
Podemos obtener fácilmente una lista de IPs que han visitado nuestro servidor web con el siguiente comando:
$ egrep -o '\b[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\b' access.log | sort -u
En el uso diario de la shell, las expresiones regulares son nuestra navaja suiza. Ya hemos visto algunos ejemplos con grep, pero sigamos con algunos más de cosecha propia que usan grep, awk y sed.
Resulta que queremos saber los usuarios del fichero /etc/shadow que pueden logearse al sistema (que no tienen un caracter ! o * en el campo del password). La expresión regular a usar sería:
# egrep '^[^:]+:[^*!]+:' /etc/shadow
fulano:$1$PFC1F2pj$0KEflTjNmDQg9.rtFT/DK0:12793:0:99999:7:::
mengano:$1$aAUa4js/$c2LEh.HeT0JvCG3B.34O.:12793:0:99999:7:::
| ^[^:]+ | Buscamos uno o más caracteres + que no sean : [^:] a principio de línea ^ |
| : | seguido de un caracter : |
| [^*!]+ | seguido por una secuencia de uno o más caracteres que no sean ! o * |
| : | seguido de otro caracter : |
Podemos hacerlo un poco mejor, porque sólo nos interesa ver el nombre del usuario. Para ello podríamos hacer un cut -f 1 -d : sobre la salida anterior, pero usando el awk somos capaces de hacer lo anterior en un sólo comando:
# awk -F":" '$2~/[^!*]+/ { print $1 }' /etc/shadow
fulano
mengano
En el comando anterior le decimos a awk que, usando como separador de campos el caracter : (-F”:”) queremos que nos saque el primer campo { print $1 } siempre que el segundo campo cumpla la regla de que contenga uno o más caracteres que no sean ! o * $2~/[^!*]+/.
Si tenemos líneas como la siguiente (LogFormat combined) en el access.log de nuestro apache:
192.168.1.3 - - [12/Apr/2007:22:15:14 +0200] "GET /blog/ HTTP/1.1" 200 46503 "http://www.google.es/search?hl=es&q=vicente+navarro" "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.3) Gecko/20070310 Iceweasel/2.0.0.3 (Debian-2.0.0.3-1)"
192.168.1.3 - - [12/Apr/2007:22:24:07 +0200] "GET /blog/ HTTP/1.1" 200 46503 "http://www.google.es/search?q=super+coco&hl=es&start=10&sa=N" "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.3) Gecko/20070310 Iceweasel/2.0.0.3 (Debian-2.0.0.3-1)"
podemos obtener un listado de los referers que han traído a los visitantes a la página con el siguiente comando:
$ egrep -o '^[0-9.]+ - - \[.+\] \"[^"]+\" [0-9-]+ [0-9-]+ \"[^"]+\"' access.log | egrep -o '\"[^"-]+\"$' | egrep -o '[^"]+' | sort -u
...
http://www.google.es/search?hl=es&q=vicente+navarro
http://www.google.es/search?q=super+coco&hl=es&start=10&sa=N
...
Hay dos grep’s, porque estamos identificando y extrayendo todo el texto hasta llegar al referer para dejarlo al final y después extraerlo con el segundo grep. Pero aunque sirva para ilustrar la entrada, resulta que nos hemos complicado muchísimo la vida, porque el trozo del referer es el único que comienza con http://. Teniendo en cuenta esto, el comando, con una Expresión Regular mucho más simple, queda:
$ egrep -o 'http://[^"]+' access.log | sort -u
Y usando sólo awk:
awk '$0~/http/ { print $11 }' access.log | awk -F'"' '{ print $2 }' | sort -u
Pero ahora queremos saber a partir de los referers que hemos obtenido anteriormente, con qué parámetros de búsqueda y en qué posición aparece nuestra página en Google. Para ello, podríamos usar la Expresión Regular del principio para obtener los parámetros q= y start= de la URL de Google, pero hagámoslo con awk:
$ egrep -o 'http://[^"]+' big | sort -u | awk -F "[?&=]" '$1~/google.+search/ { TERMINOBUSQUEDA=""; POSICION="0"; for (i=2; i<=NF; i++) { if ($(i-1)~"(^|^as_)q$") { TERMINOBUSQUEDA=$i; } if ($(i-1)~"^start$") { POSICION=$i; } } print TERMINOBUSQUEDA " " POSICION; }' super+coco 10 vicente+navarro 0
Es decir, si la línea es una búsqueda de Google, el awk ha de hacer:
TERMINOBUSQUEDA="";
POSICION="0";
for (i=2; i<=NF; i++) { if ($(i-1)~"(^|^as_)q$") { TERMINOBUSQUEDA=$i;} if ($(i-1)~"^start$") { POSICION=$i; } } print TERMINOBUSQUEDA " " POSICION;
Las Expresiones Regulares de Perl (PCRE) son más potentes que las Expresiones Regulares POSIX. En algunas distribuciones, el grep -P nos permite usarlas, pero en Debian no es posible usar la opción -P de grep. En cambio, tenemos el pcregrep que sí que nos lo permite. Y una de las cosas más interesantes que se puede hacer con estas reglas es Lookahead y Lookbehind. Supongamos que queremos sacar de las URL de Google el valor del parámetro q= con un sólo comando, a diferencia de la expresión del principio que requería un cut adicional:
$ echo "http://www.google.es/search?q=super+coco&hl=es&start=10&sa=N" | pcregrep -o '(?<=[&?]q=)[^&?]+' super+coco
Usando PCRE, algo como (?<=delante)detras significa que para coincidir, la cadena tiene que ser delantedetras, pero delante no aparecerá en la cadena coincidente. ¡Muy útil! La pena es que este tipo de expresiones no se puede usar con cadenas de longitud variable:
$ pcregrep -o '(?<=\w+)prueba' fichero.txt pcregrep: Error in command-line regex at offset 7: lookbehind assertion is not fixed length
sed es otra utilidad muy versátil. Su función más típica es la de sustitución, aunque también puede hacer cosas sencillas pero útiles como mostrar sólo un conjunto de líneas de un fichero o eliminarlas, insertar texto al final de una línea determinada o reemplazar el texto de esa línea..
La sintaxis típica de sed para reemplazos es:
sed -r 's/reemplazada/reemplazo/g'
El -r es paraque el sed use Expresiones Regulares Extendidas o POSIX y el g significa que la sustitución se hará todas las veces que se encuentre la Expresión Regular en la línea, no sólo la primera vez. Si nos viene mal usar el carácter / para no tener que escapar, por ejemplo, muchas barras de path, podríamos usar cualquier otro carácter: s_reemplazada_reemplazo_g.
Por ejemplo, si quisiéramos cambiar la shell por defecto a todos los usuarios que aparecen en /etc/passwd, podríamos hacer:
$ sed -r 's/[^:]+$/:\/bin\/bash/g' /etc/passwd
...
mail:x:8:8:mail:/var/mail::/bin/bash
news:x:9:9:news:/var/spool/news::/bin/bash
uucp:x:10:10:uucp:/var/spool/uucp::/bin/bash
...
Y si queremos añadir una cabecera de “usuario_” a todos los nombres de usuario del sistema, podemos usar el carácter & para usar la parte coincidente en la cadena de reemplazo:
$ sed -r 's/^[^:]+/usuario_&/g' /etc/passwd
...
usuario_mail:x:8:8:mail:/var/mail:/bin/sh
usuario_news:x:9:9:news:/var/spool/news:/bin/sh
usuario_uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh
...
Y como lo que pongamos entre paréntesis () en la cadena reemplazada, el sed nos lo guarda para usar en la cadena de reemplazo en \1, \2,… \9, supongamos que queremos mover todo a un nuevo sistema de ficheros y queremos cambiar tanto el home del usuario como su shell:
$ sed -r 's/([^:]+):([^:]+)$/:\/newfs\1:\/newfs\2/g' /etc/passwd
...
mail:x:8:8:mail::/newfs/var/mail:/newfs/bin/sh
news:x:9:9:news::/newfs/var/spool/news:/newfs/bin/sh
uucp:x:10:10:uucp::/newfs/var/spool/uucp:/newfs/bin/sh
...
Etiquetas: Comandos Linux, Consola 0 COMENTARIOS
El metodo es asignarle al terminal una tecla mediante atajo de teclado:
Sistema > Preferencias > Combinaciones de teclas
Buscamos el apartado Desktop > Ejecutar en un terminal
Le asignamos una tecla,por ejemplo la de windows (super L ),y cerramos.
Podemos asignar teclas a lo usemos mas habitualmente.Tambien hay muchos atajos ya preestablecidos.
Via Howtogeek

Etiquetas: Consola, Ubuntu 3 COMENTARIOS


Etiquetas: Comandos Linux, Consola, Ubuntu 0 COMENTARIOS

Un tip facil y rapido: Para navegar en Nautilus (el navegador de archivos de Gnome) en modo Root, solo tenemos que escribir en la consola:
~$ sudo nautilusSe nos abre una nueva ventana del navegador y desde la misma podremos manipular los archivos en modo Superusuario.

~$ sudo nautilusSe nos abre una nueva ventana del navegador y desde la misma podremos manipular los archivos en modo Superusuario.
Etiquetas: Consola, Gnome, Navegadores 3 COMENTARIOS
International Business Machines (IBM) informo su intención de ofrecer ordenadores operando bajo la distribución basada en Linux de Red Hat conjuntamente con la austríaca VDEL y con la empresa polaca de servicios y distribución LX Polska.
Rusia, donde muchas grandes empresas y organismos públicos están confeccionando por primera vez grandes sistemas informáticos, está convirtiéndose en un campo de batalla clave en la lucha entre Microsoft y aquellos que ofrecen alternativas de código abierto. La apuesta de IBM por combinar hardware y software basado en código abierto responde a una demanda creciente por patte de los directivos de tecnología de las empresas y administraciones.
IBM agregó que entre los altos cargos de organizaciones rusas que han solicitado computadoras con sistemas de código abierto están el Ministerio de Defensa, la aerolínea Aeroflot y el banco privado Alfa Bank.
Los ordenadores incorporan un pack de herramientas que compiten directamente con las aplicaciones de Microsoft, como IBM Lotus Symphony, basado en el formato Open Document.
El gigante informático dijo que los ordenadores serán fabricados por sus socios locales VDEL y LX Polska bajo la marca comercial de Open Referent. Desde hace unos años, IBM no fabrica ordenadores ya que vendió esa actividad a la china Lenovo.
International Business Machines (IBM) informo su intención de ofrecer ordenadores operando bajo la distribución basada en Linux de Red Hat conjuntamente con la austríaca VDEL y con la empresa polaca de servicios y distribución LX Polska.
Rusia, donde muchas grandes empresas y organismos públicos están confeccionando por primera vez grandes sistemas informáticos, está convirtiéndose en un campo de batalla clave en la lucha entre Microsoft y aquellos que ofrecen alternativas de código abierto. La apuesta de IBM por combinar hardware y software basado en código abierto responde a una demanda creciente por patte de los directivos de tecnología de las empresas y administraciones.
IBM agregó que entre los altos cargos de organizaciones rusas que han solicitado computadoras con sistemas de código abierto están el Ministerio de Defensa, la aerolínea Aeroflot y el banco privado Alfa Bank.
Los ordenadores incorporan un pack de herramientas que compiten directamente con las aplicaciones de Microsoft, como IBM Lotus Symphony, basado en el formato Open Document.
El gigante informático dijo que los ordenadores serán fabricados por sus socios locales VDEL y LX Polska bajo la marca comercial de Open Referent. Desde hace unos años, IBM no fabrica ordenadores ya que vendió esa actividad a la china Lenovo.
Etiquetas: Consola, Linux, Noticias 0 COMENTARIOS
ERICLINUX
Para aquellos que se inician en el mundo de Gnu/Linux sabrán que muchas veces se presentan complicaciones para montar dispositivos como pendrive.
Para montarlo debemos realizar los siguientes pasos.
2. Creamos una carpeta en /media sobre nuestro dipositivo, en mi caso pendrive.
ERICLINUX
2. Creamos una carpeta en /media sobre nuestro dipositivo, en mi caso pendrive.Etiquetas: Consola, Hardware 0 COMENTARIOS
A sólo un mes de anunciado el primer hack para la consola Wii ésta está preparada para ejecutar Linux. La situación podría convertirse en una pesadilla de piratería para Nintendo.
El agujero que hace posible el hack fue detectado a fines de enero y desde ese mismo momento expertos pronosticaron que dentro de poco tiempo sería posible ejecutar Linux en a consola de Nintendo. Sin embargo, nadie previó que tomaría tan poco tiempo.
El grupo de hackers que ha logrado ejecutar su propia distribución Linux en la consola de Nintendo precisa que el sistema operativo es ejecutado sin conectores, pero que funciona en la práctica. Como prueba de sus afirmaciones han publicado una versión de Linux en Internet para quienes deseen probarla.
Los intrusos celebran lo que califican de hito sin precedentes, en tanto que los piratas muestran gran entusiasmo. En efecto, la “solución" permite en principio ejecutar copias pirateadas de juegos en la consola.
Asimismo, ya no es necesario modificar la consola con los denominados modchips. En conclusión, Nintendo podría verse enfrentada próximamente a una verdadera pesadilla de piratería generalizada.
FUENTE
Etiquetas: Consola, Linux, Noticias 1 COMENTARIOS
Etiquetas: Consola, Debian, Diseño Gráfico, Eventos, Gnome, Linux, Mensajería, Multimedia, Musica, Noticias, Programación, Redes, Slackware, Software, Tux, Ubuntu 0 COMENTARIOS
ERICLINUX
En ciertas ocasiones se suelen utilizar comandos que son difíciles de recordar o que son demasiado extensos, pero en LINUX existe la posibilidad de dar un nombre alternativo a un comando.
Sintaxis:alias nom_alias=’comando’
Por ejemplo:# alias dir='ls'
Cada vez que tipiemos dir en la consola será como un ls.
Vía | Linux Comandos.
Un Saludo, Eric.
Enlaces de interés:
alias nom_alias=’comando’Por ejemplo:
# alias dir='ls'Cada vez que tipiemos dir en la consola será como un ls.
Etiquetas: Consola 7 COMENTARIOS

ERICLINUX
Anteriormente les mostré como descomprimir archivos .tar .gz .zip .rar etc.
Gracias al comentario de Perseus conosco la herramienta unp.
unp es un pequeño script escrito en Perl que permite descomprimir los tipos de archivo comprimido más populares (tar.gz, tar.bz2, rmp, deb, zip, rar…).
Se encuentra disponible en los repositorios de Ubuntu.
Para su instalación tipeamos:
# apt-get install unp
unp nombre_del_archivo.extensión
$ unp Linux_Comandos.rar

# apt-get install unp
unp nombre_del_archivo.extensión
$ unp Linux_Comandos.rar
Etiquetas: Consola 0 COMENTARIOS
tmsnc es un programa de chat basado en texto para GNU/Linux, que utiliza las redes de MSN Messenger. La interfaz está programada usando la librería ncurses, de modo que es fácil portarlo a otros sistemas operativos basados en Unix como GNU/Linux, BSD, Solaris y Mac OS X. Este software es de especial utilidad en entornos donde no se puede disponer de una interface gráfica o en equipos de reducidos recursos. Su licencia es de software libre (IR Public domain license) y su programador inicial es Jonas Broms.
Se encuentra disponible en los repositorios de Ubuntu.
Para instalarlo tipeamos:
tmsnc es un programa de chat basado en texto para GNU/Linux, que utiliza las redes de MSN Messenger. La interfaz está programada usando la librería ncurses, de modo que es fácil portarlo a otros sistemas operativos basados en Unix como GNU/Linux, BSD, Solaris y Mac OS X. Este software es de especial utilidad en entornos donde no se puede disponer de una interface gráfica o en equipos de reducidos recursos. Su licencia es de software libre (IR Public domain license) y su programador inicial es Jonas Broms.
Etiquetas: Consola, Mensajería, Software 0 COMENTARIOS
Éstos son caracteres especiales que se utilizan en la Shell de Linux.
| Caracteres | Función |
| * ? [ ] | El asterisco, el signo de pregunta y los corchetes, se utilizan para búsqueda de archivos con patterns |
| & | Este se utiliza para correr un comando en background (segundo plano), lo que brinda la facilidad de liberar la terminal para otros usos |
| ; | Se utiliza para poner en una misma linea varios comandos |
| \ | La barra invertida se utiliza para deshabilitar las funciones de otros caracteres especiales como * ? [ ] & ; > < | |
| '...' | Permite que el texto encerrado en ella, se deshabiliten todos los caracteres especiales y el carácter de espacio |
| "..." | Lo mismo que las comillas simples excepto que no deshabilita los caracteres $ y ` |
| > | Este carácter redirige la salida de un comando a un archivo, sobreescribiendo el contenido de este |
| < | Este redirige la entrada de un comando desde un archivo |
| >> | Los dos signos mayores redirigen la salida de un comando, igual que el signo menor solo, excepto que no sobreescriben el archivo. |
| | | Este envía la salida de un comando a la entrada de otro comando |
| `...` | Produce que el comando que esta escrito entre los acentos graves, sea el argumento de una linea de comando |
| $ | El signo de peso, retorna los valores de los parámetros pasado al script, y también identifica las variables definidas por el usuario |
| Caracteres | Función |
| * ? [ ] | El asterisco, el signo de pregunta y los corchetes, se utilizan para búsqueda de archivos con patterns |
| & | Este se utiliza para correr un comando en background (segundo plano), lo que brinda la facilidad de liberar la terminal para otros usos |
| ; | Se utiliza para poner en una misma linea varios comandos |
| \ | La barra invertida se utiliza para deshabilitar las funciones de otros caracteres especiales como * ? [ ] & ; > < | |
| '...' | Permite que el texto encerrado en ella, se deshabiliten todos los caracteres especiales y el carácter de espacio |
| "..." | Lo mismo que las comillas simples excepto que no deshabilita los caracteres $ y ` |
| > | Este carácter redirige la salida de un comando a un archivo, sobreescribiendo el contenido de este |
| < | Este redirige la entrada de un comando desde un archivo |
| >> | Los dos signos mayores redirigen la salida de un comando, igual que el signo menor solo, excepto que no sobreescriben el archivo. |
| | | Este envía la salida de un comando a la entrada de otro comando |
| `...` | Produce que el comando que esta escrito entre los acentos graves, sea el argumento de una linea de comando |
| $ | El signo de peso, retorna los valores de los parámetros pasado al script, y también identifica las variables definidas por el usuario |
Etiquetas: Consola 2 COMENTARIOS
Domain Name System (DNS) es una base de datos distribuida y jerárquica que almacena información asociada a nombres de dominio en redes como Internet. Aunque como base de datos el DNS es capaz de asociar distintos tipos de información a cada nombre, los usos más comunes son la asignación de nombres de dominio a direcciones IP y la localización de los servidores de correo electrónico de cada dominio.
Para cambiar las DNS, debemos abrir un terminal y editar el archivo resolv.conf:
Domain Name System (DNS) es una base de datos distribuida y jerárquica que almacena información asociada a nombres de dominio en redes como Internet. Aunque como base de datos el DNS es capaz de asociar distintos tipos de información a cada nombre, los usos más comunes son la asignación de nombres de dominio a direcciones IP y la localización de los servidores de correo electrónico de cada dominio.Etiquetas: Consola 6 COMENTARIOS
Para aquellos que tienen distribuciones un tanto "Automáticas", sabrán que se ejecutan muchos procesos que son innecesarios.
En el caso de Ubuntu, podemos detener algunos yendo a Sistema»Administración»Servicios.
Destildamos los servicios que deseamos detener.
Existe otra alternativa más compleja y eficaz, se llama, Rcconf.
Se encuentra en los repositorios de Ubuntu, para instalarlo tipeamos:# apt-get install rcconf
Y luego lo ejecutamos con:# rcconf
Ahora solo destildamos los servicios que no queramos iniciar.
Para ver cuantos procesos corre tu sistema actualmente podemos instalar Gkrellm. En ese post hay más información al respecto.
Atentamente Eric.
Destildamos los servicios que deseamos detener.# apt-get install rcconfY luego lo ejecutamos con:
# rcconf
Ahora solo destildamos los servicios que no queramos iniciar.Etiquetas: Consola, Debian, Ubuntu 0 COMENTARIOS
ERICLINUX powered by Blogger
Theme por HernanMDQ y Zona Cerebral