tr, el comando para modificar caracteres

El otro día tuve que pasar a minúscula el nombre de una serie (unos 30) de ficheros que me habían pasado. Cambiar el nombre, uno a uno, me hubiera llevado como 10 minutos así que busqué algún script que automatizara el trabajo.

El script que encontré es el siguiente :

for i in `ls -1`; do mv $i `echo $i |tr “[:upper:]” “[:lower:]“`; done

Fácil y rápido, te pasa a minúscula todos los caracteres que estuvieran a mayúscula para los ficheros dentro del directorio desde donde ejecutes la sentencia.

Este pequeño fragmento de código me dió a conocer un comando que no conocía tr, que según su página man, sirve para “traducir, –estrujar– y/o eliminar caracteres”.

Ciertamente este comando no es muy potente ya que sólo permite especificar ún carácter o un grupo de los ya predefinidos, la lista puede verse ejecutando tr --help. Esto impide definir expresiones regulares, pero claro, el objetivo de este comando no es ese.

Algunos ejemplos más son los siguientes:

# Cambia espacios en blanco por guión bajo
tr [:blank:] _

# Cambia todo aquel carácter que no sea un carácter de control o de puntuación
tr -c "[:cntrl:][:punct:]" "*"

The productive programmer, Neil Ford

No recuerdo como descubrí la existencia de este libro, seguramente a través de amazon. Sea como fuere, fué una suerte el haberlo encontrado pues me ha dado conocer grandes consejos para mejorar mi productividad laboral. La verdad es que últimamente estoy un poco obsesionado con este tema y es posible que escriba algunas entradas más relacionadas.

Anyone who develops software for a living needs a proven way to produce it better, faster, and cheaper. The Productive Programmer offers critical timesaving and productivity tools that you can adopt right away, no matter what platform you use. Master developer Neal Ford not only offers advice on the mechanics of productivity-how to work smarter, spurn interruptions, get the most out your computer, and avoid repetition-he also details valuable practices that will help you elude common traps, improve your code, and become more valuable to your team. You’ll learn to: Write the test before you write the code Manage the lifecycle of your objects fastidiously Build only what you need now, not what you might need later Apply ancient philosophies to software development Question authority, rather than blindly adhere to standards Make hard things easier and impossible things possible through meta-programming Be sure all code within a method is at the same level of abstraction Pick the right editor and assemble the best tools for the job

This isn’t theory, but the fruits of Ford’s real-world experience as an Application Architect at the global IT consultancy ThoughtWorks. Whether you’re a beginner or a pro with years of experience, you’ll improve your work and your career with the simple and straightforward principles in The Productive Programmer.

Todo trabajador suele, a lo largo del tiempo, definir y adoptar un conjunto de prácticas que facilitan y agilizan el desarrollo de su actividad. En el ámbito del desarrollo software este aspecto es determinante para destacar como empresa e incluso como profesional. Resulta también llamativo que las empresas no formen a sus trabajadores para ser más productivos, ofrecen cursos de lenguajes de programación, bases de datos, BPMs, CRMs, servidores, pero no cursos de productividad que a corto-medio plazo tendrán mayor rendimiento que cualquier certificación.

Este libro habla de atacar la carencia de productividad desde distintos flancos. Para ser más productivo no es imprescindible saber más, aunque eso siempre ayuda, basta con adoptar una serie de pautas que hagan tu día a día más agradable y al final de la jornada estés satisfecho contigo mismo.

A continuación voy a listar algunos consejos que se proponen en este libro para mejorar nuestro rendimiento en el trabajo:

  • Automatizar tareas: tener un conjunto de scripts para cada proyecto que te permitan automatizar todas la tareas posibles.
  • Mejorar la comunicación con nuestros compañeros y clientes : es decir, intentar hablar un lenguaje común que no de lugar a confusiones y evite malentendidos.
  • Intentar máximimizar el flow : establecer horas en las que no se debe ser molestado excepto causa mayor (ie atentando terrorista en tu edificio), desactivar mensajes emergentes, correo, im, …