jueves, 13 de octubre de 2011

archivos en minúsculas

compilando Calmet/Calpuff en Linux, me he dado cuenta que la compilación falla porque algunos nombres de archivo vienen en mayúscula. Para solucionar esto basta con hacer dentro del directorio de CODE de Calpuff:

for f in `find`; do mv -v $f `echo $f | tr '[A-Z]' '[a-z]'`; done

...y repetir este paso para las demás utilizades (calmet, calpost, etc)

Tarea pendiente: Capacidad recursiva, se agraceden contribuciones

viernes, 7 de octubre de 2011

mi prompt de Bash

les presento mi prompt personalizado de Bash, no tengo tiempo para explicar todo lo que aquí aparece, pero si quieres probarlo, basta pegarlo al final de tu .bashrc y abrir un terminal para ver los cambios. no recuerdo de donde lo saqué, pero con todas las modificaciones que he hecho, ya no se parece al original que encontré:

bash_prompt_command() {
local pwdmaxlen=25
local trunc_symbol=".."
local dir=${PWD##*/}
pwdmaxlen=$(( ( pwdmaxlen < ${#dir} ) ? ${#dir} : pwdmaxlen ))
NEW_PWD=${PWD/#$HOME/\~}
local pwdoffset=$(( ${#NEW_PWD} - pwdmaxlen ))
if [ ${pwdoffset} -gt "0" ]
then
    NEW_PWD=${NEW_PWD:$pwdoffset:$pwdmaxlen}
    NEW_PWD=${trunc_symbol}/${NEW_PWD#*/}
fi
}
bash_prompt() {
local NONE="\[\033[0m\]"
local K="\[\033[0;30m\]"    # black
local R="\[\033[0;31m\]"    # red
local G="\[\033[0;32m\]"    # green
local Y="\[\033[0;33m\]"    # yellow
local B="\[\033[0;34m\]"    # blue
local M="\[\033[0;35m\]"    # magenta
local C="\[\033[0;36m\]"    # cyan
local W="\[\033[0;37m\]"    # white
local EMK="\[\033[1;30m\]"
local EMR="\[\033[1;31m\]"
local EMG="\[\033[1;32m\]"
local EMY="\[\033[1;33m\]"
local EMB="\[\033[1;34m\]"
local EMM="\[\033[1;35m\]"
local EMC="\[\033[1;36m\]"
local EMW="\[\033[1;37m\]"
local BGK="\[\033[40m\]"
local BGR="\[\033[41m\]"
local BGG="\[\033[42m\]"
local BGY="\[\033[43m\]"
local BGB="\[\033[44m\]"
local BGM="\[\033[45m\]"
local BGC="\[\033[46m\]"
local BGW="\[\033[47m\]"
local UC=$W
[ $UID -eq "0" ] && UC=$R
PS1="${EMK}\n[${EMR}\D{%A} \D{%d/%m/%Y} ${EMR}\A${EMK}] \n${EMK}[${UC}\u${EMK}@${UC}\h ${EMB}\${NEW_PWD}${EMK}]${UC}\\$ ${NONE}"
}
PROMPT_COMMAND=bash_prompt_command
bash_prompt
unset bash_prompt

microsoft Office 2007 con Wine

paso 0: Agregar el repositorio de Wine con:

sudo add-apt-repository ppa:ubuntu-wine/ppa
sudo apt-get update

paso 1: Instalar wine con:

sudo apt-get install wine

paso 2: Ejecutar winetricks, para instalar lo 
necesario para el correcto funcionamiento de Microsoft Office 2007, para
 ésto se deben ejecutar winetricks paso a paso, respetando el siguente 
orden:

winetricks dotnet11
winetricks gdiplus
winetricks vb3run
winetricks vb4run
winetricks vb5run
winetricks vb6run
winetricks msxml3
winetricks msxml4
winetricks msxml6
winetricks riched20
winetricks riched30
winetricks vcrun6

MUY IMPORTANTE es no ejecutar winetricks de la forma:

winetricks dotnet11 gdiplus vb3run...

debido a que en este paso es donde fallaban las demas guías, impidiendo la instalación de Microsoft Office 2007

paso 3: Ir hacia la carpeta donde está el instalador y ejecutar

wine setup.exe

y comenzará la instalación de Microsoft Office 2007 sin ningún problema.

problemas: Todos los programas de la suite funcionan sin ningún problema, sin embargo, Microsoft Access no logra funcionar bien.

ACTUALIZACION: Se presentan problemas al tratar de utilizar el Editor de Ecuaciones, para solucionar ésto basta con hacer:

winetricks wsh56

utilizar el winecfg añadír la librería usp10 como "native, builtin" y asunto solucionado.

ACTUALIZACION II: Access está funcionando, los pasos adicionales para lograr que funcione son los siguientes:

paso 1: Ejecutar en un terminal winetricks e instalar el las librerías de Visual C++ haciendo:

winetricks vcrun2005
winetricks vcrun2005sp1

paso 2: Eliminar de dependencia de Access del archivo acedao.dll, esto se logra haciendo:

gedit ~/.wine/drive_c/Archivos de programa/Microsoft Office/Office12/msaccess.exe.manifest

y en este archivo se debe eliminar todo lo que dice:
­­­­       ­  ­
guardan el archivo y Microsoft Access estará funcionando.

añadir rpmfusion a Fedora 15

para instalar paquetes extra en Fedora 15 (paquetes que, por motivos de licencias no pueden ser integrados en los repositorio oficiales), es necesario agregar los repositorios rpmfusion, esto se puede hacer en una sola línea haciendo en la consola:

su -c 'yum localinstall --nogpgcheck http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-stable.noarch.rpm'

suavizado de fuentes en Fedora 15

el suavizado de fuentes en Fedora 15 no tan óptimo como el de Ubuntu 11.04, para solucionar ésto, primero debemos agregar los repsitorios rpmfusion y luego hacer en la consola:

su -c 'yum install freetype-freeworld'
 
y para "mejorar" aún mas la experiencia, podemos instalar las fuentes de Micro$oft haciendo en consola:

su -c 'yum localinstall http://fedora.missingbox.co.nz/core-fonts.rpm --nogpgcheck'

instalar Google Chrome en Fedora 15

para instalar Google Chrome en Fedora 15, basta hacer en consola un (para arquitectura i386):

su -c 'cat > /etc/yum.repos.d/google.repo < /etc/yum.repos.d/google.repo <

cambiar de idioma en Fedora 15, XFCE

en Fedora 15, versión XFCE no aparece por ningún lugar la opción para cambiar el idioma de la interfaz (del inglés al Español por ejemplo), para poder hacerlo basta con aplicar en la consola:

su -c 'yum -y install system-config-language'

y en el menú de administración tendrán la opción de cambiar de idioma.

comandos para evitar problemas

existen comandos que, utilizados de forma incorrecta suelen ser muy peligrosos, un simple cp (copiar) apuntando sobre un archivo regular que ya existe, lo sobreescribiría de inmediato y para qué nombrar al famoso rm (remover). Para solucionar estos problemas, ocasionados por más de alguna distracción, basta con agregar a tu .bashrc las siguentes líneas:

alias rm="rm -i"
alias cp="cp -i"
alias mv="mv -i"

y con ésto cada comando te perdirá confirmación antes de 
proceder, por el contrario, si deseas que los comandos anteriores no 
pidan confirmación alguna y deseas que actúen sin consultar nada apenas 
presionas el ENTER, basta con cambiar la -i (interactivo) por -f 
(forzar), de modo que tu .bashrc quedará así:

alias rm="rm -f"
alias cp="cp -f"
alias mv="mv -f"

reinstalar GRUB en Lubuntu 10.10

estos pasos se deben realizar mediante el uso de un Live CD, se asume que la particion raiz de Linux es /dev/sda2 (cambiar en la línea 1)

sudo mount /dev/sda2 /mnt
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo chroot /mnt
grub-install /dev/sda

ubuntu Maverick desde el Grub

si al iniciar Ubuntu Maverick no se muestra el menú del Grub, es posible iniciar el sistema "a mano", introduciendo las siguientes órdenes en el prompt del Grub, cambiando los parámetros que sean necesarios para adaptarlos a la máquina afectada.

para Grub1 (para quienes hayan actualizado a Ubuntu Maverick desde una versión anterior)

root (hd0,1)
linux /boot/vmlinuz-2.6.18-6-686 root=/dev/sda2 ro
initrd /boot/initrd.img-2.6.18-6-686
boot

Para Grub2 (Para quienes hayan instalado Ubuntu Maverick desde cero)

set root=(hd0,2)
linux /boot/vmlinuz-2.6.18-6-686 root=/dev/sda2
initrd /boot/initrd.img-2.6.18-6-686
boot

generar man en PDF

para generar el manual de algún comando en formato PDF se deb hacer lo siguiente:

man -t COMANDO | ps2pdf -> /home/usuario/apt-get.pdf

donde COMANDO es el comando en cuestión. requiere previamente la instalación de ps2pdf 

registrar todo

cuando ejecutamos algún comando y necesitamos registrar todo lo sucedido, aplicamos

script.sh 2>&1 | tee log.txt

donde script.sh es el programa que queremos ejecutar y log.txt 
es el archivo donde queremos guardar todo lo que script.sh lance por 
pantalla, útil sobre todo para largas compilaciones.

respaldar archivo

cuando nos toca editar un archivo, lo más común es hacer primero una copia de respaldo del archivo original, por si nos llegamos a equivocar, la forma mas clásica de hacer ésto es copiar el mismo archivo pero con otro nombre, por ejemplo:

cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.bak

es decir, con esto hemos creado un archivo llamado 
httpd.conf.bak a partir de httpd.conf, pero esa línea se puede 
simplificar utilizando los corchetes de expansión de bash:

cp /etc/httpd/conf/httpd.conf{,.bak}

bonus track: estos mismos corchetes de expansión son muy 
útiles además para poder ver diferencias entre dos archivos, utilizando 
el comando diff

$ diff /etc/httpd/conf/httpd.conf{.bak,}
123a124
> # yo agregué este comentario

en fin, puede haber muchos otros usos para estos útiles corchetes.

montar imágenes CUE

en Linux, las imágenes ISO son muy fáciles de montar, pero las imágenes CUE, requieren de algunos pasos previos (ni hablar de Windows, donde tienes que bucear en la red buscando algún software que sea capaz de hacerlo... y después aprender a utilizar ese software), bueno, en Ubuntu , basa con instalar primero el paquete bchunk haciendo un

sudo apt-get install bchunk

una vez instalado bchunk procedemos a convertir nuestra imagen CUE a ISO haciendo

bchunk imagen.bin imagen.cue imagen.iso

y después procedemos a montar la imagen iso generada haciendo

mount -o loop -t iso9660 imagen.iso carpeta

donde imagen.iso esa la imagen que acabamos de generar con 
bchunk y carpeta es el nombre de la carpeta vacía donde queremos que 
aparezcael contenido de nuestra imagen ISO

cd después de un ls

cuando estamos ante la consola, es muy común escribir un ls (listar archivos del directorio) después de hacer un cd (cambiar al directorio), para ahorrarnos ese último paso, podemos condigurar nuestro sistema para que automáticamente haga un ls después que hagamos un cd. ¿Cómo se hace?, bueno, agregando lo siguiente a nuestro .bashrc

cd() {
  if [ -n "$1" ]; then
    builtin cd "$@" &&; ls -a
  else
    builtin cd ~ &&; ls -a
  fi
}

extraer un patrón de archivo de texto

supongamos que quiero extraer de un archivo, llamado archivo.txt, todas las palabras que están entre comillas y que coinciden con cierto patrón, para nuestro ejemplo supongamos que el contenido de nuestro archivo.txt es el siguiente:

hola, "PATRON" prueba de extraer la palabra PATRON
hola, "PATRON" prueba de extraer la palabra PATRON
hola, "PATRON CON UNA DIFERENCIA" prueba de extraer la palabra PATRON
hola, "PATRON" prueba de extraer la palabra PATRON
hola, "PATRON CON ALGO EXTRA" prueba de extraer la palabra PATRON
hola, "PATRON" prueba de extraer la palabra PATRON



y queremos extraer de archivo.txt todo lo que contenga la palabra PATRON y que además se encuentre entre comillas, para ésto basta con hacer en la consola:

grep -Po '(?<=")\s*PATRON[^"]*(?=")' archivo.txt
 
y el resultado será lo siguiente:

PATRON
PATRON
PATRON CON UNA DIFERENCIA
PATRONPATRON CON ALGO EXTRA
PATRON



pueden adaptarlo a su gusto o según sus necesidades.

reducir el bitrate de los MP3

si tengo una carpeta llena de mp3 con un grosero bitrate de 320 kbps, puedo dejarlos a 128 kbps (ahorrando myucho espacio en mi dispositivo de música portátil) instalando lame haciendo un

sudo apt-get install lame
 

abriendo una consola y escribiendo

for x in [ `ls -1 *.mp3` ]; do lame --preset 128 ${x} ${x}_128; done
 

donde --preset 128 controla la calidad del MP3 (puede ser 32, 64, 128, 192, 256), esto no borrará los MP3 originales, sino que creará copias renombradas a ARCHIVO_128.mp3

muchos JPG a un GIF animado

si tengo una carpeta llena de archivos JPG de la misma resolución y deseo crear con ellos un sólo archivo GIF animado, basta con hacer

convert *.jpg GIF:- | gifsicle --delay=50 --loop --optimize=2 --colors=256 --multifile - > animacion.gif
 

esto considera que ya se tiene instalado el paguete Imagemagick
 o Graphicsmagick, donde --delay=50 es el control de la duración de cada
 cuadro del GIF animado.

ffmpeg como capturador de pantalla

si deseo grabar en un video todo lo que está sucediento en mi pantalla, basta con instalar el paquete ffmpeg haciendo un

sudo apt-get install ffmpeg
 

abrir una consola y teclear lo siguiente, cambiando el 1360x768 por la resolución de tu monitor

ffmpeg -f x11grab -r 25 -s 1360x768 -i :0.0 -sameq video.mp4
 

probado exitosamente en Ubuntu Natty

repositorios para Ubuntu con firewall

para quienes puedan tener problemas con las reglas del firewall, al agregar o actualizar repositorios en Ubuntu, basta con modificar el script que conecta con keyserver.ubuntu.com y obligarlo a utilizar el puerto 80 (desbloqueado en la mayoría de los casos). lo siguiente está probado en Ubuntu Maverick:

cd /usr/lib/python2.6/dist-packages/softwareproperties/
sudo gedit ppa.py

buscar la línea 88 y cambiar

keyserver.ubuntu.com

por

hkp://keyserver.ubuntu.com:80
 

y asunto arreglado, los repositorios podrán ser agregados, 
actualizados y se podrán instalar o desinstalar paquetes sin ningún 
problema con los puertos.