trucos-sh-ext: (0.01) Expansión de parametros sh para separar nombre de extensión en archivos SEPARANDO NOMBRE DE EXTENSION DEL NOMBRE DE UN ARCHIVO: Suponiendo file=1.2.3.4.5 namefile=${file%.*} # Quita el menor sufijo (DETRAS) -> 1.2.3.4 # Solo nombre sin extensión hasta último punto extfile=${file##*.} # Quita el mayor prefijo (ANTES) -> 5 # Solo extensión tras el último punto TRUCO MEMOTECNICO: Como esto es un poco lioso de recordar me he inventado esto para recordarlo: En el teclado el # está mas a la izquierda que del % (y este mas a la derecha) # quita el menor trozo por la izquierda ## quita el MAYOR trozo por la izquierda % quita el menor trozo por la derecha %% quita el MAYOR trozo por la derecha EJEMPLO PARA AISLAR IDIOMA DE LA VARIABLE LANG Esto es una aplicación también util del ejemplo anterior: ${LANG%%_*} Esto elimina del contenido "es_ES.ISO-8895-1" todo desde el primer "_" (incluido) devolviendo "es" (el valor por defecto de LANG es "C") Esto puede usarse para cambiar el idioma de los mensajes en los scripts, haciendo: case ${LANG%%_*} in es) $welcome="Bienvenido a mi script Español" $end="Gracias por usar mi programa" ;; *) $welcome="Welcome to my English script" $end="Thanks for using my program" ;; esac y usando $welcome en lugar de la cadena O bien guardando las asignaciones a variables de las cadenas en archivos acabados en "_es", "_C", etc... y leyendolos con "." , ejemplo: # Estamos en el script llamado "atope" LA=${LANG%%_*} # Tomar solo las letras del pais (es, C...) [ ! -e atope_$LA ] && LA=C # Si no existe archivo de este idioma usar *_C . atope_$LA # Cargo las cadenas del archivo echo $welcome # Uso la cadena ELIMINAR TEXTO DEL FINAL DEL CONTENIDO DE UNA VARIABLE AL UTILIZARLA ${variable%%[!-]*} Esto deja solo "-" si la variable contiene "-opcion" o "" si no empieza en "-" Esta sustitucion no emplea las expresiones regulares sino las "shell patterns" Para mas ayuda: "man ash", "man bash", buscar "parameter expansion" y "shell patterns" ??? DIR ;MAS APROPIADO /usr/share/locale/es/LC_MESSAGES #gnome y kde (archivos *.mo)