@ agnasg

Un baúl de pesadillas

27-11-2012 9:18 AM

Pesadillas en Unix

Hay un comando en Unix/Linux llamado getopt. El permite manejar de una forma “cómoda”, “simple” y “eficiente” los parámetros de un programa o script. Hay un versión para C/C++ que funciona de una forma similar.

Los manuales, guias y tutoriales de Unix usualmente son esotéricos como los comandos. Parecen escritos por extraterrestres. Yo nací y crecí en Unix, así que eso es una forma de vida para mi pero en ciertas ocasiones el esoterismos llega a niveles de pesadilla. El manual de getopt parece la versión maya del manuscrito Voinich. Leemos:
[cce lang=”php” width=”620″ height=”420″]
The parameters getopt is called with can be divided into two parts: options
which modify the way getopt will parse, and the parameters which are to be
parsed. The second part will start at the first non-option parameter that
is not an option argument, or after the first occurrence of ‘–‘.
If no ‘-o’ or ‘–options’ option is found in the first part, the first
parameter of the second part is used as the short options string.[/cce]

[cce lang=”php” width=”620″ height=”420″]
Los parámetros con los que getopt es llamado están
divididos en dos partes: opciones que modifican la forma en que
getopt va a analizar el texto, y parámetros que van
a ser analizados. La segunda parte va a comenzar en el primer parámetro
que no es un argumento de una opción, o  después de la primera ocurrencia
de “–“. Si no se encuentran  ‘-o’ o ‘–options’ en la primera parte,
el primer parámetro de la segunda parte es usado como el string corto
options.[/cce]

Estoy seguro que la traducción al español agregó un nivel adicional de complejidad al entendimiento de esto.

La explicación fracasa en su cometido, y deja por fuera una explicación sobre cómo hacer para colocar opciones sin argumento, cómo hacer para hacer una opción obligatoria, qué pasa si hay más de una opción con argumentos (por ejemplo, el comando admite varias opciones que requieren argumento, por ejemplo (este es un ejemplo dentro del ejemplo) cuando pasas el nombre de un archivo, -f archivo pero también requieres pasar la carpeta, -f archivo -c carpeta)

Los ejemplos que se encuentran en google (sic) muestran cosas como:

[cce lang=”text” width=”620″]
getopt acf: $*
[/cce]
Que indica que el comando solamente acepta las opciones a, c y f (cualquier otra opción hace que el comando dispare un error), y el “:” indica que la opcion f requiere un argumento. Luego de n pruebas descubrí que se puede hacer algo así como esto:
[cce lang=”text” width=”620″]
getopt -o a: -o c: -o f: $*
[/cce]
pues en algunas situaciones colocar “a:c:f:” falla, y que para indicar que la opción es obligatoria hay que validarlo afuera, getopt no provee un mecanismo para ello. Todo esto se facilita si se entiende la diferencia entre opción, argumento y parámetro, que es la primera dificultad que tienen los que están aprendiendo a programar y utilizar comandos de Unix, saber usar y entender el español (o el inglés).

Pesadillas aqui y ahora

“La amistad mal entendida” como diría Tio Simón tiene sus variantes en todas las situaciones, es propicia para explicar hasta los comportamientos más bizarros, y es corolario nefasto de nuestras miserias más lastimosas. Pobre del rico que mide su riqueza por la cantidad de amigos que tiene, pues ni el más torpe auditor tasaría su riqueza en más que unos cuantos centavos. Por algo los ricos de verdad (esos que tienen lingotes de oro en el banco) tienen pocos amigos o ninguno, descubrieron algo que el resto de los mortales tardan una vida en descubrir. Mi padre soltó una lágrima en estos días cuando le pregunté si se acordaba de su sobrina Damelis, pero no sabe lo afortunado que es, porque así como no recuerda lo bueno, tampoco lo malo de tantos amigos y tanto cultivar y celebrar la amistad para no recibir nada a cambio. La amistad mal entendida es como mis intentos con el comando getopt, tratando de de hacer que haga algo que no puede hacer. No está en su naturaleza. No fue creado así. Cuando hacemos un amigo (o amiga) no firmamos contrato. No hay clausulas. No hay obligaciones. Cuando un amigo se va es como el globo que se escapa de nuestras manos, sale a volar entre las nubes, apenas nos dispensa un adiós. Es a veces hasta más solícito que el “amigo” que se queda, porque en alguna postal o mensaje que nos envía nos miente con un “siempre me acuerdo de ti”. Si estuviera en mis manos, yo prohibiría la amistad, perseguiría a los amigos y los encerraría en campos de concentración. Algo de sabiduría había en las palabras del otro Simón, “la grandeza está en ser útil”. El resto es silencio. La amistad mal entendida es una de mis peores pesadillas.

Pesadillas en todas partes

Hay quienes ven en Adventureland una divertida comedia con Kristen Stewart y Jesse Eisenberg. Yo veo una pesadilla cotidiana, donde todos estamos envueltos en una hipocresía generalizada de pusilanimidad, engaño, rencor y odio, individualismo del más egoista, encubierto y olvidado con un simple beso. “No te preocupes, yo te quiero”.  La vida es un golpe bajo permanente cuando menos te lo esperas…