Usando la Consola II

Renombrar mayúsculas a minúsculas

En Windows no hay diferenciación para los nombres de archivo, por eso prueba.txt y PRUEBA.TXT son el mismo archivo. En Linux esto no sucede porque el sistema de archivos es ‘case-sensitive’.

Y cuando llevamos archivos de Windows a Linux (a través de Samba, por ejemplo) la codificación hace que todos los archivos lleguen en mayúsculas.

Personalmente me resulta bastante incómodo y feo a la vista, por eso siempre los renombro a minúsculas. Y para ello utilizo este pequeño script:

#!/bin/bash
## renombrar mayúsculas a minúsculas
for FILE in *; do
    mv "$FILE" "`echo "$FILE" | tr [A-Z] [a-z]`"
done

Descomprimir muchos archivos zip

Otra cosa que utilizo mucho es la descompresión en masa. Cuando tengo varios archivos .zip (por ejemplo al descargar partes de un archivo de rapidshare), uso este script para poder descomprimirlos automáticamente todos juntos:

#!/bin/bash
## descomprimir en masa
for FILE in `ls *zip`; do
    unzip -o $FILE
done

Noten que también uso el script anterior por las dudas para transformar todo a minúsculas.

Este mismo script se puede usar con tar, bunzip y gunzip con solo unas pequeñas modificaciones luego del do.

Conocer la distribución y versión de un GNU/Linux

Esto lo ví en PreguntasLinux.org (gracias p_eter por el aporte) y serviría para varias plataformas.

Tanto para actualizar el sistema, como para hacer programas para Linux, es muy útil poder determinar de que distribución de gnu/linux se trata.

La mayoría de los linux proveen el comando uname para determinar que versión se está corriendo. También mantienen un archivo con información al respecto en el directorio /etc

  • Novell SUSE /etc/SUSE-release
  • Red Hat /etc/redhat-release, /etc/redhat_version
  • Fedora /etc/fedora-release
  • Slackware /etc/slackware-release, /etc/slackware-version
  • Debian /etc/debian_release, /etc/debian_version
  • Mandrake /etc/mandrake-release
  • Yellow dog /etc/yellowdog-release
  • Sun JDS /etc/sun-release
  • Solaris/Sparc /etc/release
  • Gentoo /etc/gentoo-release
  • UnitedLinux /etc/UnitedLinux-release
  • Ubuntu /etc/lsb-release
#!/bin/sh
# Detects which OS and if it is Linux then it will detect which Linux Distribution.

OS=`uname -s`
REV=`uname -r`
MACH=`uname -m`

GetVersionFromFile()
{
  VERSION=`cat $1 | tr "\n" ' ' | sed s/.*VERSION.*=\ // `
}

if [ "${OS}" = "SunOS" ] ; then
  OS=Solaris
  ARCH=`uname -p`    
  OSSTR="${OS} ${REV}(${ARCH} `uname -v`)"
elif [ "${OS}" = "AIX" ] ; then
  OSSTR="${OS} `oslevel` (`oslevel -r`)"
elif [ "${OS}" = "Linux" ] ; then
  KERNEL=`uname -r`
  if [ -f /etc/redhat-release ] ; then
    DIST='RedHat'
    PSUEDONAME=`cat /etc/redhat-release | sed s/.*\(// | sed s/\)//`
    REV=`cat /etc/redhat-release | sed s/.*release\ // | sed s/\ .*//`
  elif [ -f /etc/SUSE-release ] ; then
    DIST=`cat /etc/SUSE-release | tr "\n" ' '| sed s/VERSION.*//`
    REV=`cat /etc/SUSE-release | tr "\n" ' ' | sed s/.*=\ //`
  elif [ -f /etc/mandrake-release ] ; then
    DIST='Mandrake'
    PSUEDONAME=`cat /etc/mandrake-release | sed s/.*\(// | sed s/\)//`
    REV=`cat /etc/mandrake-release | sed s/.*release\ // | sed s/\ .*//`
  elif [ -f /etc/debian_version ] ; then
    DIST="Debian `cat /etc/debian_version`"
    REV=""
  fi

  if [ -f /etc/UnitedLinux-release ] ; then
    DIST="${DIST}[`cat /etc/UnitedLinux-release | tr "\n" ' ' | sed s/VERSION.*//`]"
  fi
  OSSTR="${OS} ${DIST} ${REV}(${PSUEDONAME} ${KERNEL} ${MACH})"
fi
echo ${OSSTR}

Conocer la IP pública

A veces debemos saber nuestra IP pública. En mi caso me gusta visualizarla cuando utilizo conky. Para ello utilizo este script que chequea mi IP cuando inicio mi sistema y guarda esa IP en un archivo public.ip. Luego desde conky simplemente hago un cat de ese archivo.

#!/bin/bash
## obtener la ip pública y almacenarla en un archivo de texto "public.ip"
wget http://checkip.dyndns.org/ -q -O - | grep -Eo '\<[[:digit:]]{1,3}(\.[[:digit:]]{1,3}){3}\>' > ~/public.ip
##end

Crear una carpeta con la fecha

Otra cosa que es útil al administrar fotos, por ejemplo, es armar carpetas con fechas para tenerlas en orden.

Siempre uso este script para crear una carpeta con el formato: AñoMesDia-NombreDescriptivo

#!/bin/bash
## Crear carpeta del estilo 20091231-nombreDescriptivo
if [ ! -z $1 ]; then
    mkdir `date +%Y%m%d`-$1
else
    echo "Debe especificar un nombre descriptivo."
    echo "Uso: date2dir.sh <nombre>"
fi
#end

Espero les sean útiles. Por lo pronto voy a seguir posteando más scripts para facilitar las tareas diarias.

Saludos

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Archivos

julio 2009
D L M X J V S
« Jun   Sep »
 1234
567891011
12131415161718
19202122232425
262728293031  
A %d blogueros les gusta esto: