Archivo de la etiqueta: Apuntes sobre Linux

El correo electrónico en la consola: Postfix, Fetchmail y Mutt.

Correo electrónico modo texto desde la consola: 

Por desgracia, aunque configurar un sistema de correo electrónico entre los diferentes usuarios de una máquina con GNULinux desde la línea de órdenes no tiene demasiada ciencia, no ocurre lo mismo a la hora de conectarse con el mundo exterior, dado que es imposible no andar modificando diferentes ficheros de configuración, cosa que al usuario poco experimentado le suele dar urticaria. Por ello mi consejo es que si te apetece poco tocar ficheros o si no te sientes demasiado cómodo o seguro esperes a que se comience a hablar del sistema gráfico. Si te gusta trastear sigue leyendo las siguientes líneas donde hablaremos un poco de la línea de órdenes y del correo desde ella.

Creo recomendable reconocer que las prácticas que he hecho con el correo electrónico desde el sistema texto no han sido demasiado enriquecedoras y que gran parte del material que expongo en este tema ha sido extraído y remodificado de muchas páginas en Internet. 

Empezaremos, pues, por definir el funcionamiento del correo electrónico, más concretamente cómo lo hace en GNULinux. 

Un servicio de correo electrónico en GNULinux va a constar de tres elementos o programas diferenciados. No olvidemos que la filosofía genérica de trabajo de este sistema operativo es que, normalmente, se prefiere que cada programa haga solamente una tarea, pero que la haga bien, para, más tarde, unirse las diferentes partes en el trabajo y lograr un consistente ahorro de recursos, y como todo se paga, esto suele sobrevenir en una ligera mayor complejidad que cuando lo hacemos desde suites o programas más grandes, lo cual en el correo electrónico se exagera un poco, dado que los programas al uso a los que nos acostumbran los modos gráficos como GNOME KDE O Windows nos enmascaran y facilitan el trabajo.

 

1: MUA (del inglés: Mail User Agent): es un programa que permite leer y escribir correos. Suelen tener muchas funcionalidades que superan la estricta lectura y composición de mensajes es la parte visible, con la que interactúa el usuario. El más usado en el modo texto de linux es el MUTT, aunque hay otros menos usados como pyne o como Alpine. En ellos podemos gestionar los buzones, componer correos, adjuntar otros ficheros, responder, reenviar, etc. Más adelante veremos un poco por encima cómo se usa MUTT.

 2: MTA (del inglés: Mail Transport Agent): son programas encargados de recoger y enviar los mensajes generados, comunicando para ello con otros MTA remotos según sean las diferentes necesidades. Estos programas suelen estar funcionando como demonios del sistema actuando cada vez que algo ocurre en los puertos donde se les configura para que escuchen, donde esperan las llamadas recibidas de los programas MUA o de los MTA remotos. Algunos de estos programas que se usan en GNULinux pueden ser: sendmail (posiblemente el más extendido y seguramente el más complejo e inseguro de todos ellos), Postfix (dicen que uno de los más sencillos y que ubuntu trae por omisión), Qmail (utilizado para grandes sistemas de correo ya que, al parecer,  gestiona muy bien un gran número de cuentas), etc.

Por sus características intrínsecas, no conviene ni pueden tenerse más de uno de estos MTA activos a la vez en el sistema, dado que como están orientados a hacer lo mismo y, además, debido a que tienen que correr como un demonio del sistema, se entorpecerían unos a otros como mínimo, caso que el sistema nos permitiese arrancarlos juntos. Por ello, cuando se decida cuál MTA se va a utilizar, ha de desinstalarse o deshabilitarse a cualquier otro que se encuentre ya en el sistema.

3.- Recogida del correo. Esta tarea la harán programas tipo Fetchmail, que es un demonio del sistema que nos va a permitir recoger el correo de la zona donde lo esté depositando el MTA que tengamos trabajando y lo colocará en los buzones de  donde lo retirará el programa MUA correspondiente. 

Programas MUA: 

Son la parte primordial del correo electrónico en las consolas, Vamos a ver muy por encima Postfix, por venir en distribuciones como Ubuntu, que es una de las más utilizadas hoy en día, y dejaremos de momento de lado Sendmail por su complejidad.

 

Postfix:

 La configuración local es, aparentemente, sencilla. Lo más probable es que el sistema funcione sin necesidad de tocar nada, dado que gran parte de los datos los va a tomar ubuntu del sistema cuando instala Postfix. 

Si no estuvierais seguros de cómo está vuestro Postfix, siempre podríais reconfigurarlo y el instalador del paquete llevaría a cabo las preguntas correspondientes en orden a una configuración básica.

 Verificad que en vuestro fichero /etc./Postfix/main.cf existen unas líneas similares a las que siguen, teniendo en cuenta que parte de los datos tendrán que tener que ver con vuestra máquina en particular y no con la mía. 

myhostname = quetzatl

mydomain = quetzatl

myorigin = $myhostname

mail_spool_directory = /var/spool/mail

 

Además, hay que revisar el fichero de los alias. Normalmente este fichero estará en /etc/aliases. Sin embargo, podría ocurrir que 
encontraseis que /etc/aliases fuera  un enlace simbólico a /etc./Postfix/aliases en vuestro sistema. Este archivo contendrá los 
alias, es decir, equivalencias entre una direcciónlocal (probablemente ficticia) y una dirección real. Así, si el servidor recibe un mensaje dirigido a «postmaster@milinux.quetzatl», y como en /etc/aliases

va a haber una línea como ésta:

 postmaster    root

 será root quien realmente reciba el mensaje. Es por ello que deberemos modificar esto y hacer que en ese fichero aparezca una o más líneas  que redirijan el correo de root a uno o más usuarios normales:

 

root    usuario

 En «man aliases» se puede obtener más información, para aprender cómo establecer más de un destino para cada alias, enviar el mensaje a un archivo, etc.

 Para que aliases sea reconocido por Postfix, en el fichero de configuración /etc/Postfix/main.cf debe haber una línea como esta:

alias_maps = hash:/etc/Postfix/aliases

Además, siempre que el fichero aliases tenga que ser modificado por cualquier razón, es necesario que se invoque la orden:

newaliases

Esta orden ha de ser ejecutada como root y sirve para generar el fichero /etc/aliases.db, base de datos de los aliases, para mejorar el acceso durante la ejecución de Postfix.

Con esta configuración básica tal cual se ha hecho, ya deberíais ser capaces de enviar mensajes entre los diferentes usuariosregistrados en vuestra máquina.

 Sin embargo esto, si no se trata de un servidor pensado para una Intranet, no nos va a servir, nuestra prioridad sería poder enviar correo al exterior.

Vayamos pues ahora con esta cuestión: Es improbable, pero puede suceder que el servidor de correo de nuestro Proveedor de Internet no necesite nombre de usuarioy contraseña. Si fuera así, es mejor que Postfix le pase los mensajes a él para que los distribuya. Para hacerlo, tendréis que escribir lo siguiente en /etc/Postfix/main.cf:

 relayhost = smtp.servidor.com

 Ciertamente, será imprescindible que cambiéis el nombre del servidor al correcto. De todos modos, es altamente improbable que esto funcione dado que para evitar problemas con los spamers, generalmente los servidores smtp requieren de autentificación segura, lo que nos complica un poco más el invento.

 Para verificar que el servidor de correo de vuestro proveedor permitirá el uso de correo no autentificado, podréis hacer la siguiente prueba: 

Con la línea anteriormente especificada, enviaremos un correo de prueba a una cuenta diferente a la nuestra, y si no se recibe un mensaje de vuelta diciendo que Postfix no ha podido entregar el mensaje, es que el servidor de vuestro proveedor lo acepta. En caso contrario quitaremos la línea y listo.

 Bueno, ahora llega el gran lío, como todos vamos a tener problemas por requerir smtp autentificado, vamos a ver cómo solucionar esto, o al menos intentarlo. Ya dije más arriba que esto no es sencillo ni obligatorio excepto que estemos utilizando ordenadores muy bajos de recursos y/o nos veamos obligados a trabajar con el correo bajo consola. 

Si este no es vuestro caso esperad a que hablemos en el modo gráfico de otros clientes de correo. No obstante, dado que generalmente el correo en consola actualmente lo usamos más para el control y comunicación entre usuarios y administrador, tal cual lo tenemos hasta ahora, nos serviría.

 Bien, puesto que la autentificación hemos de controlarla con un programa específico para ello, (supongo que a lo largo de estos apuntes lo he dicho en infinidad de ocasiones y que os habréis dado cuenta del asunto, cada cosa la hace un programa pequeñito y eficaz y luego se unen para desarrollar en conjunto grandes trabajos), instalaremos el paquete sasl desde root o con la orden sudo, (dependiendo de vuestro modo de utilización del sistema), con la siguiente orden:

 

Apt-get install sasl2-bin

 Ahora editando el fichero /etc/Postfix/main.fc añadiremos o verificaremos que existe algo como esto:

 

smtpd_sasl_auth_enable = yes

smtpd_sasl_application_name = smtpd

smtpd_sasl_local_domain = mail

smtpd_sasl_security_options = noanonymous

smtpd_recipient_restrictions =

permit_sasl_authenticated,

permit_mynetworks,

check_relay_domains

 

Ahora conviene que un mensaje enviado a un usuario, por ejemplo quetzatl se convierta en enviado a quetzatl@servidor.com 
<mailto:quetzatl@servidor.com> (donde se substituye servidor.com por el que tengamos cada uno de nosotros. En/etc/Postfix/main.cf, por tanto, tendremos que poner algo similar a lo siguiente:

 

myorigin = servidor.com

 

o bien

 

masquerade_domains = servidor.com

 

La diferencia entre utilizar myorigin o masquerade_domains es que, con myorigin, enviado un mensaje a root@servidor.com, el correo será repartido localmente por asumir Postfix que el dominio interno es servidor.com. Si utilizamos masquerade_domains, ya no se supondrá por parte de Postfix que el dominio de la máquina será servidor.com, de tal modo que un correo que fuese enviado a root@servidor.com se enviaría efectivamente a la cuenta del usuario root en Internet y no localmente.

 Con esto Ya tenemos una configuración bastante básica de Postfix, ahora lanzamos como root o con sudo la siguiente orden:

 sendmail -q al conectarnos a Internet para poder enviar los correos que están almacenados en la cola del MUA. De todos modos, dado que Postfix estará trabajando como un demonio del sistema la conexión y el envío será permanente bajo la demanda del MUA

  

Recogiendo correo con Fetchmail:

  

Fetchmail, como apuntamos en la introducción  de este tema,  es un programa daemon (o demonio) del sistema, cuya misión principal es la recogida de correo, para posteriormente pasárselo a un MTA, que será quien lo va a distribuir a las cuentas que haya dadas de alta en el sistema.

 Para configurar a Fetchmail crearemos un fichero llamado .fetchmailrc en nuestro directorio personal de cada usuario o en el directorio /root si somos root, de forma que sea root quienrecoja el correo y se lo pase a los usuarios. (Ojo con el punto que hay antes del nombre del archivo, es necesario ponerlo ya que eso indica que el fichero es oculto).

A continuación vamos a ver cómo podría ser uno de estos ficheros:

  

defaults

fetchall

flush

pass8bits

poll pop.servidor.es

proto pop3

user usuario

pass «password»

to usuario_local

  

Ahora una brevísima explicación sobre lo que significan las líneas de arriba:

 defaults: establecerá los valores como valores por omisión para Fetchmail con todos los usuarios del sistema.

 fetchall: hará que Fetchmail recoja todos los mensajes pendientes en el servidor de correo.

 

flush: obligará a Fetchmail a eliminar todos los mensajes del servidor de correo tras haberlos descargado. Por seguridad, quizás mientras probéis esto, sea recomendable que salvaguardéis vuestros mensajes, por lo que podríais sustituir esta línea poniendo en su lugar keep, con lo que descargareis el correo, pero no lo eliminareis del servidor. De todos modos, seguramente en el uso cotidiano nunca se pondría en keep dado que ello nos obligaría a ir directamente a nuestro buzón a eliminar los mensajes, y ello no tiene demasiado sentido.

 pass8bits: Indicará que el mensaje podrá contener caracteres de 8 bits tales como acentos, eñes, diéresis y demás símbolos que se encuentran 

por encima del 127 en la tabla ansi.

 

poll: servidor de correo entrante de donde se leerá el correo

 

proto pop3: hará que el servidor de correo entrante utilice POP3 para la recogida del correo.

 

user y pass: indican la cuenta del correo y password del usuario en el buzón de correo.

 

to usuario_local: ajustará a qué cuenta de correo se enviarán los correos. Estas cuentas han de ser usuarios locales definidos en el sistema.

 

Si disponemos de más de una cuenta de correo que queramos utilizar, el grupo de opciones poll, proto, user, y pass, deberá incluir tantosbloques como cuentas tengamos

 

Supongo que habréis advertido algo que parecería una absoluta temeridad por inseguro, esto es, que estamos poniendo una clave y un usuario en un simple archivo de texto. Es por ello que este fichero de configuración deberá tener unos permisos de lectura/escritura 0600, los cuales garantizarán que nadie más podrá acceder a él. Esto se hace desde root con una vieja orden ya conocida por nosotros: 

chmod 0600 .fetchmailrc

Para poder recoger el correo, estando conectados, ejecutaremos la orden «Fetchmail». Esto se podrá hacer desde root o desde cualquier usuario, pero hay que tener en cuenta que siempre se leerá el fichero .fetchmailrc del directorio personal de quien lo haya ejecutado.

 

Finalmente, para que Fetchmail funcione como un demonio del sistema y nos recoja el correo de modo automático cada cierto tiempo, deberéis añadir la siguiente línea al fichero .fetchmailrc:

 

set daemon N

 

donde N es el número de segundos de intervalo que ajusta a Fetchmail diciéndole cada cuanto tiempo debe buscar los nuevos mensajes.

 

Cuando Fetchmail haya recogido los mensajes, serán colocados por el MTA en /var/spool/mail/usuario, de manera que puedan ser vistos por los programas de correo que haya instalados.

  

MUTT

 Mutt es posiblemente el cliente de correo más famoso y más utilizado bajo Linux en modo texto. Es sencillo de utilizar, muy accesible con los lectores de pantalla y tremendamente ligero, por lo que es ideal cuando existen problemas con el entorno gráfico o cuando se quiere velocidad y no se tienen recursos.

 Para instalarlo en nuestra ubuntu (recordad abstraeros a vuestra distro si tenéis otra), nada más sencillo que la consabida orden:

 Apt-get install mutt

 Tras la instalación del programa deberemos proceder a su configuración, aunque los valores del que trae por omisión nos permitirán su uso de modo inmediato.

 

Antes de comenzar a utilizarlo será imprescindible la creación de un 
directorio Mail (donde se irá colocando el correo de entrada y de 
salida. Para hacer esto escribiremos:

 

mkdir /home/usuario/Mail (donde usuario será el nombre del usuario para el que queremos crear el directorio.

 Por tanto, la configuración de mutt se va a realizar en un fichero de configuración en el directorio personal de cada uno de los usuarios que lo ejecutarán, cuyo nombre es siempre .muttrc (ojo de nuevo al punto que precede al nombre que indicará que se trata de un fichero oculto y que, por tanto, habrá que ponerlo).

 Mediante la edición de este fichero, es como cada usuario va a personalizar mutt para su uso particular. Para ver un ejemplo de este 

tipo de fichero, podréis acudir al directorio /usr/share/doc/mutt/examples/sample.muttrc. podréis entonces copiarlo a vuestro directorio personal para luego modificarlo. Esto se podría hacer del siguiente modo:

 Cp /usr/doc/mutt/examples/sample.muttrc /home/usuario/.muttrc (donde usuario es el nombre del directorio del usuario para quien es el fichero.

 Veamos ahora cómo podría ser un fichero de configuración para mutt:

 

set folder=~/Mail               # Dónde se guarda el correo

#set spoolfile=’~/Mail/inbox’   # De dónde se lee el correo. De Usarse 
procmail

                                                              # habría 
que descomentarlo y redirigirlo al inbox

set mbox=+read                  # Dónde guardar los mensajes leídos.

set record=+sent_mail           # Donde guardar mensajes de salida.

set move=yes                    # Mover mensajes sin preguntar.

set copy=yes                    # Copia mensajes salientes.

source ~/.mail_aliases          # Incluir mail aliases.

set abort_nosubject=ask-yes     # Preguntar «Abortar msg» si vacío.

unset autoedit                  # No ir directo al editor.

set auto_tag                    # Aplicar comandos a msgs marcados.

set nobeep                      # No pitar en errores.

set charset=»iso-8859-1″             # ajusta tabla de códigos.

set locale=»es_ES»                                 # Idioma Español.

set allow_8bit                  # permitir uso de ansi superiors a 127.

set editor=»/usr/bin/nano +8″   # Usar nano empezando en línea 8. Podría 
cambiarse el

   #editor por otro preferido. Normalmente vim.

set edit_headers                # Permitir cambiar cabeceras.

set hdrs

set fast_reply                  # No preguntar cabeceras (usar From)

unset force_name                # No grabar en carpetas con nombre.

set forward_format=»Re: %s»     # Formato de las respuestas.

set forward_quote               # Incluir texto quoteado en forwards

set realname=»quetzatl»         # Nombre para el campo DE el cual se 
verá a la

   #a la recepción del mensaje por otras personas.

set hostname=»iname.com»        # Para el From: @

set include                     # Incluir texto quoteado.

set indent_string=»> »          # Cadena de quoteado.

unset metoo                     # No autocontestarme.

unset mime_forward_decode

set postpone=ask-yes            # Preguntar si quiero postponer msgs.

set print=ask-no                # Preguntar si deseo imprimir el msg.

set delete=yes                  # Borrar mensajes sin preguntar.

set print_command=/bin/false    # No imprimir.

set noprompt_after

set quit=ask-yes                # Preguntar si quiero salir.

set recall=no

unset save_name

set shell=»/bin/sh»             # Shell que queremos usar.

set sig_dashes                  # Anteponer — a firma.

set signature=»~/.signature»    # Fichero de firma

set sort=threads                # Método de ordenación principal.

set sort_aux=last-date          # Método de ordenación auxiliar.

#set sort_browser=reverse-date  # Método de ordenación de ficheros.

set tmpdir=/home/yo/Mail/tmp    # Directorio temporal (tb puede ser /tmp).

set nowait_key

#folder-hook . «push <esc>V»    # Colapso de los threads automático.

mailboxes `echo $HOME/Mail/*`

hdr_order date from reply-to subject to cc

auto_view application/x-gunzip

lists valux-list lista-eya      # Listas de correo que tenemos.

#set pager_index_lines=10       # Configuración del pager.

set pager_stop                  # No avanzar al siguiente mensaje…

bind pager <up> previous-line

bind pager <down> next-line

bind pager p previous-undeleted

bind pager n next-undeleted

color hdrdefault red default    # Colores de MUTT similares a slrn

color quoted cyan default

color signature red default

color indicator brightyellow red

color error brightred default

color status yellow blue

color tree white default

color tilde magenta default

color message brightcyan default

color markers brightcyan default

color attachment white default

color search yellow blue

color header brightred default ^(From|Subject):

color body magenta default «(ftp|http)://[^ ]+»

color body magenta default [-a-z_0-9.]+@[-a-z_0-9.]+

color underline brightgreen default

unset use_from

unmy_hdr From:

my_hdr From: quetzatl quetzatl@servidor.com 
<mailto:quetzatl@servidor.com> #define la línea de salida FROM (DE)

set quote_regexp=»^ *[a-zA-Z]*[>:#}]»

set reply_regexp=»^(re|aw):[ \t]*»

set date_format=»%a, %d de %b de %Y, a las %I:%M:%S%p %Z»

set attribution=»El %d, %n dijo:»

 

Deberéis de tener en cuenta que este solamente es un ejemplo de cómo puede ser la cuestión, pero no significa que vayáis a encontraros con un fichero exactamente igual.

  

Algunas teclas rápidas de manejo de mutt:

 m = mensaje nuevo

r =  Responder mensaje actual.

L = Reenviar.

d = Borrar mensaje actual.

u = Recuperar mensaje borrado.

C = Copiar mensaje a carpeta.

s =  Guardar mensaje en disco y marcarlo como borrado. disco y marcarlo 
como c           N = Marcar mensaje como no leído.

a =  Adjuntar ficheros estando en la ventana de envío.

ENTER =  Leer un mensaje.

v =  Ver los adjuntos del mensaje que se podrán grabar con s.

q =  Salir de MUTT o del visualizador de mensajes.

y =  Confirmar envío del mensaje.

t = Marcar mensajes.

; =  Le dice a mutt que la próxima acción se realice sobre

todos los mensajes marcados. $           Eliminar inmediatamente los 
mensajes marcados.

/ = Buscar mensajes.

 

La mayoría de teclas de Mutt son reconfigurables, por lo que no es necesario aprender las teclas de uso de Mutt si estamos acostumbrados a otros clientes, pero no lo recomiendo en absoluto, dado que, como a menudo he dicho en estos apuntes, si remapeamos teclas, lo único que conseguiremos es no saber manejar el sistema el día en que nos veamos obligados a utilizar una máquina que no sea la nuestra y que tenga el mapeado de teclado original. No obstante, si se quiere hacer, basta con editar el fichero de configuración de mutty utilizar la orden bind

 

Si se han recogido los mensajes con Fetchmail como se explicó más arriba, al Entrar en mutt, podremos encontrarnos tantos mensajes como haya habido en nuestro buzón externo de correo.

 

De todos modos, si no quisiérais conectaros a vuestro buzón de correo mientras estais haciendo pruebas con él por miedo a perder mensajes, siempre podríais enviaros mensajes desde el root a los diferentes usuarios para verificar que todo va bien y para poder practicar a vuestras anchas.

 

Esto se hace de forma muy sencilla utilizando la orden mail:

 

mail -s «titulo» usuario

 

Cuando tengamos más de un mensaje en la bandeja de entrada nos desplazaremos por ellos pulsando las teclas de cursor y, estando sobre el correo elegido, presionando intro activaremos el mensaje 

Dentro del visualizador podréis moveros y leer el mensaje con las flechas del cursor. 

Si pulsais la tecla r activareis el editor por omisión que esté referenciado en el fichero de configuración de mutt  y  podréis responder el mensaje ( en mi caso nano, porque me gusta más y es muy ligero, pero por omisión será, muy probablemente, vim), tras lo cual deberéis abandonar el editor del modo habitual  guardando el documento con el nombre por omisión. Tras hacer esto aparecerá una nueva pantalla donde se podrán utilizar diferentes opciones referidas al mensaje: y = enviarlo, q = descartarlo, a = añadir adjuntos y e = reeditarlo.

 

Si pulsamos la tecla y para enviar el mensaje, se cierra la pantalla en la que estábamos y volvereis a caer sobre la pantalla de mensajes 
directamente colocados sobre el que habíais respondido, y estará marcado como respondido. Si ya no lo queremos podremos pulsar la letra d. El mensaje quedará con una marca de borrado y éste se llevará a cabo cuando cerremos el programa. No obstante, mientras tanto no lo cerremos, podremos eliminar la marca de borrado pulsando la letra u sobre el mismo mensaje para quitarle  la marca de eliminación. 

Por otro lado, es importante reseñar que mutt tras haber leído un mensaje y luego de haber salido del programa, lo enviará a la bandeja de elementos leídos.

Si quereis conservar un mensaje lo podréis mover a cualquier bandeja con las teclas C para copiar o s para mover

 

Con c podréis abrir los ficheros del directorio Mail como si fueran buzones de mensajes  e ir navegando por ellos, así como por cualquier otro mensaje que hubiérais guardado con antelación allí.

 Para adjuntar otros ficheros o documentos al mensaje lo hareis pulsando la tecla a. Si sois vosotros quienes recibís los mensajes con adjuntos, los podréis grabar pulsando la letra v y la letra s, para abrirlos con el programa deseado, o dejar que lo abra mutt directamente con el programa que esté asociado al tipo de archivo adjunto que estemos recibiendo.

 Si habeis leído un mensaje pero no lo habeis respondido ni habeis hecho ninguna otra acción de correo con él, para regresar a la ventana de correos y poder seguir leyendo otros, simplemente  debereis pulsar la tecla q y ello se llevará a cabo.

 Por último nos falta una capacidad bien interesante que por obvia en otros programas de correo que usamos en entornos gráficos podríamos descuidar, esto es, los mail aliases. Estos no son ni más ni menos que algo muy similar a las libretas de direcciones.

La utilidad de estos mail aliases es la capacidad para abreviarnos la escritura de las direcciones de correo. En muchas ocasiones, dichas direcciones no son fácilmente memorizables por ser largas o por tener una concepción compleja tal como abreviaturas, iniciales, etc.

Para solucionar este problema podréis crear dichos alias de correo. Para ello desde mutt os pondreis sobre un email de dicha persona (en la lista de mensajes) y pulsareis la tecla a. Ireis, entonces, respondiendo a las preguntas que el sistema realice y, finalmente, responderéis afirmativamente a la pregunta de guardado de los cambios en el fichero 
.mail_aliases Con ello a la hora de escribir un correo, en el campo de direcciones simplemente se pondrá el nombre del alias en lugar de la compleja dirección de correo a la que corresponde.

 

Asimismo, el fichero de aliases podrá ser editadodirectamente por el usuario mediante cualquiera de los editores que haya en el sistema, y se podrán añadir aliases a mano con una sintaxis similar a la siguiente:

 

alias NombreDeAlias nombre de la persona correo-electrónico@correo.com 
<mailto:correo-electr%F3nico@correo.com>

 

Y con esto daremos por terminada la presente entrega de estos apuntes, si bien es importante que tengais en cuenta que existen más programas para las mismas cosas de los que hemos visto aquí. Todo sea leerse manuales o páginas man si por cualquier causa éstos no nos gustan o convienen.

Internet desde las consolas; navegadores Web.

En este y en los próximos capítulos de los apuntes de linux, vamos a tratar de introducirnos ligeramente en el manejo de las diferentes aplicaciones para
conectarse al mundo de la red: exploradores Web, clientes de chat IRC, Correo electrónico, mensajería, etc. Pues bien, para comenzar con ello, lo haremos
con los exploradores de Internet que más se utilizan en el modo texto de Linux.

Manejo Básico del navegador links:

Los exploradores para la Web más utilizados en el entorno sólo texto son, por así decirlo, los de la familia lynx, del cual derivan links, links2 links
hacked, y alguno más del estilo que anda dando vueltas por ahí. (Ojo los usuarios de síntesis de voz ya que no es lo mismo lynx que links aunque los sintetizadores
lo digan del mismo modo).

A pesar de que todos derivan del primigenio lynx, y de que la mayor parte de sus teclas rápidas son las mismas, yo prefiero utilizar o links o links2. Tienen
un mejor soporte para algunos nuevos componentes que se estilan mucho ahora por las webs y, además, son bastante más modernos. Asimismo, los links también
soportan un sistema de menú muy intuitivo y pueden configurarse para que las respuestas de la interface sean también en español, soportan javascript y
son capaces de funcionar en modo gráfico si han sido compilados para ello. Por todo esto, voy a volcarme más en hablar de links, si bien podéis extrapolar
la mayor parte de la información hacia links2 o links hacked, y, excepto el sistema de menús, también se podrá extrapolar a lynx, aunque éste último soporta
alguna otra tecla de función que links no tiene por no necesitarla. Siento que todo esto parezca un rompecabezas entre tanto links y lynx, pero resulta
inevitable.

Para instalar el navegador nada más sencillo que hacer la típica orden:

Apt-get install links para links, o links2 o lynx para, por ejemplo, esas dos versiones.

Este navegador no nos va a ofrecer un uso tan sencillo como al que estamos acostumbrados sobre la plataforma Windows dado que el lector de pantallas es
bastante deficiente en este sentido no siendo capaz de interpretar los elementos de la Web y, también, porque tiene el efecto repetición similar al que
ya venimos estando acostumbrados con el manejo de menús. No obstante, con un poco de práctica y supliéndolo con algo más de atención, podremos llegar a
realizar una navegación apropiada por las páginas Web. Eso sí; es el navegador más rápido que he visto nunca, es de suponer que esto es el resultado de
ser un navegador sólo texto por lo que ignora la mayor parte de la basura suplementaria de la Web, pero la realidad es que las páginas se descargan a una
velocidad impresionante. Yo he hecho las pruebas con
www.elpais.es
cuya primera página se abre muy lentamente por causa de los elementos flash de publicidad que tiene, mientras que con links se abre casi instantáneamente.

Para ejecutar el programa simplemente escribiremos la orden links y arrancará el navegador sin ninguna página cargada. Si tras la palabra links escribimos
una dirección Web se cargará el navegador con dicha página desplegada:

Links
www.guadalinex.org
ejecutará el explorador mostrando la Web de guadalinex y, si no lo detenemos con control x, el lector de pantallas procederá a leerla. Notad que no es necesario,
al igual que en todos los navegadores que existen para Windows, marcar el protocolo http:// dado que el propio links se encarga de gestionarlo automáticamente.

Castellanizando el programa:

Si bien la mayor parte del links puede manipularse con teclas rápidas, tenemos todas sus funciones disponibles en un menú de opciones que se despliega en
la parte superior de la pantalla, del cual cuelgan los submenús que contienen todos los elementos a semejanza de los sistemas de menús que ya conocemos
en tantas aplicaciones de los diferentes sistemas operativos. Esta barra de menú se muestra pulsando la tecla escape, y se navega con flechas izquierda
y derecha para moverse por las opciones principales y con flechas abajo y arriba para desplegar y navegar los diferentes submenús.

Lo primero que hemos de hacer para gestionar el sistema en español es pulsar, por lo tanto, la tecla escape, e ir con flecha derecha hasta la opción setup.
Pulsando allí flecha abajo desplegaremos el submenú correspondiente cuya primera opción será Language, la cual dispone de un segundo submenú que abriremos
dando flecha a la derecha. Ahí es donde están todos los idiomas que soporta el programa.

El cambio del idioma no es sencillo dada la penosa lectura que hace yasr de los menús, ya sabéis: la consabida repetición del elemento saliente. Para facilitar
el cambio del idioma y, dado que el español está muy abajo en la lista, será mejor que pulsemos la tecla fin para que nos lleve a la parte final del menú
y luego desde allí iremos pulsando flecha arriba hasta que el programa llegue a spanish, que debe ser el cuarto o el quinto elemento hacia arriba. Pulsaremos
intro y comprobaremos si realmente lo hemos puesto en español. Si no fuera así no hay problemas ya que, dado que no hemos guardado la configuración, simplemente
bastaría con salir de links y volver a entrar nuevamente repitiendo los pasos anteriores. Por cierto, para salir simplemente pulsaremos control+c. Tenemos
una opción para salir en los menús, pero no la vamos a ver de momento.

Cuando ya tengamos el sistema en español, volveremos al menú de antes con flecha derecha, que ahora se llamará configuración, y lo desplegaremos con flecha
abajo. Seguidamente pulsaremos la tecla fin que nos llevará al último elemento del menú que en este caso es la opción guardar, la que precisamente necesitamos.
Pulsaremos aquí intro y a partir de este momento siempre que entremos en el navegador, su sistema de menú estará en español.

Por cierto, dispone también de idiomas catalán y gallego. Al menos en mi links no he encontrado el Vasco, desconozco si se puede instalar como plugin. Además,
deberemos configurar al links por cada uno de los usuarios que tengamos en el sistema o exportar el fichero links.cfg a cada uno de los directorios personales
de dichos usuarios.

Algunas teclas de navegación:

El movimiento por las diferentes páginas Web es más o menos intuitivo, si bien, como dije más arriba, no es tan fácil como en Windows por el problema ya
apuntado. No obstante, tenemos teclas rápidas para la mayor parte de las acciones básicas que se pueden hacer con una página Web. Asimismo hay que tener
en cuenta que, a pesar de que links cada vez soporta mejor los diferentes componentes estándares de la Web, no lo hace así con otros que son propietarios
y que no respetan esos estándares abiertos; es por ello, que en páginas mal diseñadas o que se basan en ese tipo de tecnologías, este navegador va a tener
problemas graves de los que probablemente no va a poder salir. Por otra parte os comento que me he encontrado con un problema que no he podido solventar
y sobre el que no encuentro documentación en Internet, por lo que supongo que no tiene solución; se trata de que sea imposible hacer selecciones de texto
para copiar desde el navegador.

Con la tecla g activaremos un diálogo donde podremos teclear la dirección que queremos abrir, la cual lanzaremos con la tecla intro. Con flecha arriba teniendo
desplegado este diálogo podremos movernos por un listado con las últimas direcciones abiertas en el explorador.

Ya Navegando por una página Web, con flechas arriba o abajo nos iremos moviendo por cada elemento que compongan la página, ya sean enlaces, botones, formularios,
texto., mientras yasr irá leyendo cada uno de esos elementos.

Pulsando flecha derecha o intro sobre un enlace lo ejecutaremos y provocaremos que se muestre por pantalla la página a la que apunta dicho enlace. Con la
flecha izquierda retornaremos a la página anterior.

Con la tecla d sobre un enlace podremos guardarlo en disco. Es sobretodo útil para descarga de ficheros desde Internet. Por omisión se guardarán los archivos
en el directorio del usuario que esté ejecutando links, pero puede modificarse esta ruta desde el fichero de configuración del navegador, como veremos
más adelante. Si queremos cancelar una descarga de archivo en curso, podremos pulsar también flecha izquierda para dar la orden de cancelado.

Con la combinación de teclas Control+r forzaremos al explorador links a recargar de nuevo la página actual.

Con la tecla Fin o con control+e forzaremos a links a saltar al final de la página actual.

Con Inicio o Control+a haremos que el sistema vaya al inicio de la página actual.

Con la barra espaciadora, o avpag o control+f haremos un salto a la siguiente pantalla de contenido de la página actual cuando ésta no quepa en una sola
pantalla.

Con las teclas b, o repag o control+b, haremos que links retroceda una pantalla en la página actual cuando ésta no quepa en una sola pantalla.

Con suprimir o con control+n se desliza la pantalla dos líneas a la vez hacia abajo.

La tecla insertar o control p desplaza dos líneas hacia atrás la pantalla en la página actual.

Con las teclas ] (cerrar corchete) y [ (abrir corchete), podremos deslizar la pantalla hacia la derecha o volver a traerla hacia la izquierda si se da el
caso que no quepa el texto visible en ella.

Pulsando el signo = (igual) se desplegará una ventana mostrando toda la información disponible sobre la página actualmente cargada.

Con la tecla \ (barra Inversa) pasaremos al links a una modalidad donde nos mostrará el código fuente de la página que tengamos cargada en el navegador
en ese momento, y podremos revisarla con las flechas para leer cómo está escrita.

Finalmente dispondremos en links de unas teclas que nos permitirán buscar cadenas de texto dentro de la Web que tengamos cargada: con / (barra) buscaremos
una cadena hacia delante, con ¿ (cerrar interrogación) buscaremos hacia atrás. Con n o N (mayúscula), buscaremos hacia delante o hacia atrás respectivamente,
otras ocurrencias del texto previamente buscado.

Listado del sistema de Menús:

Como hemos visto antes, para entrar en el sistema de menú desplegable de links, basta con pulsar la tecla escape y quedaremos posicionados sobre la primera
opción que es Fichero. Con flecha a la derecha podremos encontrar los siguientes elementos que son: ver, enlace, descargas, configuración y ayuda. Además
con la tecla F9 podremos conseguir el mismo resultado que con escape y, con F10, entraremos en el submenú Fichero. Finalmente, hemos de tener en cuenta
que, a diferencia de muchos otros programas, cuando llegamos al final de un submenú no retornamos automáticamente al inicio, es decir, no es cíclico, no
ocurre así con el menú principal.

Las opciones más importantes de las que disponemos en el menú fichero son por orden:

ir a URL, Saca el diálogo para introducir la dirección Web deseada; ir atrás, retrocede a la página anterior; recargar, vuelve a cargar de nuevo desde el
servidor la página actual; guardar como, guardar URL como, guardar documento con formato, vaciar todas las cachés, Limpia todas las páginas almacenadas
en caché; información de recursos, información de memoria y salir. Existen algunas más, pero estas posiblemente son las más representativas y se explican
por sí solas.

Las opciones principales del menú ver son, sobre todo, las de búsqueda, pero tiene algunas más que resultan interesantes:

Buscar, buscar atrás, buscar siguiente, buscar anterior, cambiar a texto ANSI (este es el comando que muestra la codificación html), tenemos también mostrar
información, información de cabecera o modificación de la respuesta a las opciones html, pero la ventana de diálogo de opciones html no es demasiado accesible,
por no decir que es bastante inaccesible.

El menú enlace tiene varias opciones para decirle a links qué queremos que se haga con dichos enlaces cuando estemos sobre ellos: seguir enlace, es decir,
entrar en él, descargar enlace, para cuando se trate de un archivo; ver imagen, cuando bajo ese enlace hay una, o descargar imagen cuando la queremos en
nuestro disco duro.

El menú descargas gestiona todas aquellas que tengamos ocurriendo ya que, en links, las descargas lo hacen en segundo plano y podremos ir pasando de una
a otra mediante este menú.

En el menú Configuración podemos personalizar el funcionamiento de nuestro navegador.

La opción idioma ya la vimos más arriba. En Juego de caracteres podremos cambiar las fuentes de entre las que existan en una lista de las instaladas. En
los siguientes dos elementos podemos modificar la respuesta de links tanto para la respuesta como terminal como para el modo en que se conecta a Internet;
aunque los diálogos son un poco pejigueros, siempre podremos optar por cambiar sus valores en el archivo de preferencias links.cfg. Otras opciones que
se pueden cambiar son el número de páginas que se almacenan en la caché, los programas asociados al correo y al telnet para que se activen cuando se pulsa
sobre un enlace que requiera alguno de estos, . Asimismo con la opción de menú asociaciones podremos crear, cambiar o modificar las asociaciones de determinados
eventos con determinados programas, como por ejemplo el editor que se ejecutará cuando le digamos a links que nos abra un enlace que apunte a un fichero.

Finalmente, en el submenú Ayuda tendremos una pantalla de acerca de y un listado de algunas teclas rápidas para links.

Un poco más de configuración; el archivo links.cfg

Cuando ejecutes links, un fichero llamado links.cfg será creado en tu directorio de trabajo, posiblemente con el mismo nombre de tu usuario colgando del
directorio /home.

El fichero es utilizado por el submenú configuración para escribir cualquier cambio que se haya hecho en la sesión actual. Por tanto, como siempre en GNULinux,
se puede editar este archivo para cambiar sus preferencias a mano cuidando la correcta escritura de cada línea. Esto es útil cuando, como en este caso,
alguno de los diálogos son mal leídos por el yasr. Asimismo, cuando edites este fichero para hacer cambios, si links está en marcha, es necesario reiniciarlo
para obligarle a que lea dicho archivo y ejecute los cambios.

A la hora de editar el fichero links.cfg debemos tener en cuenta lo siguiente: Las líneas en blanco serán ignoradas; no se permiten líneas comentadas con
un signo de número ‘#’ tal cual se suele hacer en muchos otros ficheros de configuración; si cometemos errores tales como sintaxis errónea u opciones no
existentes, la próxima vez que arranquemos links seremos advertidos de ello; finalmente, es muy recomendable salvaguardar una copia del archivo cuando
vayamos a editarlo para evitar perder la configuración actual en caso de problemas graves.

A continuación tienes un listado de todas las variables a cambiar que puedes encontrar en un fichero links.cfg.

async_dns

max_connections (número de peticiones simultáneas que links puede hacer)

max_connections_to_host (número de peticiones simultáneas que un solo usuario puede hacer)

retries (número de reintentos a hacer cuando se pide una página y ésta falla)

receive_timeout (número en segundos que links espera antes de pedir nuevamente la página)

unrestartable_receive_timeout (número en segundos a esperar cuando no hay respuesta tras haber reiniciado)

format_cache_size (número de páginas que se almacenan en caché)

memory_cache_size (es la memoria reservada para ejecutar las copias de lins)

http_proxy (utilizado para especificar el proxy si lo hay)

ftp_proxy (utilizado para especificar el proxy si lo hay)

download_dir (establece el directorio de descargas por omisión)

assume_codepage (ajusta el grupo de caracteres a utilizar por links)

terminal2 (utilizado para cambiar las opciones de terminal)

association

extension

Algunas teclas rápidas para manejo de Lynx:

Dado que, como ya apuntamos más arriba, la utilización de Lynx es muy similar a Links, y debido a que es, si cabe, todavía más ligero y podríais encontraros
con él en alguna distribución o podríais querer utilizarlo, os pongo la descripción de algunas de sus teclas rápidas.

+ (más): se desplaza a la siguiente página (AvPag).

– (guión): se desplaza a la página anterior (RePag).

– Espacio: se desplaza a la siguiente página (AvPag).

B: se desplaza a la página anterior (RePag)

Control+A: Va a la primera página del documento (inicio).

Control+E: va a la última página del documento (Fin).

Control+B se desplaza a la página anterior (RePag).

Control+F: se desplaza a la siguiente página (AvPag).

CONTROL-N: avanza dos líneas en el documento actual.

Control+P: retrocede dos líneas en el documento actual.

) (cerrar paréntesis): avanza media página en el documento actual.

( (abrir paréntesis): retrocede media página en el documento actual.

# (signo de número):va a la barra de herramientas o al Banner en el documento actual.

C: crea un nuevo fichero.

D: descarga el fichero seleccionado

E: edita el fichero seleccionado.

F: muestra un menú de opciones para el fichero actual.

M:modifica el nombre o la localización del fichero actual.

R: elimina el fichero seleccionado.

? (cerrar interrogación o h) ayuda

a: añade el enlace actual al fichero de favoritos.

C: envía un comentario al propietario del documento.

D: descarga el enlace actual.

e -: edita el fichero actual.

g (minúscula): abre una URL especificada por nosotros.

G (mayúscula): edita la URL del documento actual para utilizarla.

I: muestra un índice de documentos usados.

J: ejecuta una operación de salto.

K: muestra una lista de teclas mapeadas.

L: lista los enlaces del documento actual.

M: regresa a la pantalla principal.

O: ajustar opciones del navegador.

P: imprimir a ficheros, correos, impresoras, etc.

Q o Q (mayúscula): salir.

/ (barra): buscar una cadena dentro del documento.

S: introducir búsqueda para una búsqueda externa.

N: ir a la siguiente cadena de búsqueda.

V (minúscula): ver el fichero de favoritos.

V (mayúscula): ir a la página de enlaces visitados.

X: forzar la ejecución de un formulario.

Z: cancelar una transferencia en curso.

Retroceso: ir a la página de historial.

= (signo igual): mostrar la info de la página o documento.

\ (barra inversa): cambiar la vista del documento a código fuente.

Control+R:recarga la página o documento actual y refresca la pantalla.

Control+W: refresca la pantalla.

Control+U: borra la línea de entrada.

Control+G: cancela la entrada o la transferencia.

Existen algunas otras teclas de método abreviado, pero considero que son menos importantes para una iniciación a la navegación con este programa. De todos
modos sigo prefiriendo a links, no obstante, con estas teclas podremos utilizar lynx y percatarnos de lo similares que son.

W3m:

El programa w3m no comenzó siendo más que un paginador para documentos, pero con el tiempo fue desarrollándose y terminó por convertirse en un navegador
de Internet modo texto. A diferencia de Links y Lynx, w3m obliga a que le pasemos una dirección

Web o una ruta local a la hora de invocarlo, de lo contrario, simplemente nos imprimirá por pantalla una lista de ayuda.

Lo más probable es que en cualquiera de las distribuciones que tengamos venga ya preinstalado. Si no fuese así simplemente lo haremos con los pasos típicos,
en el caso de debian o de cualquiera basada en ella, caso de casi todos los ejemplos de estos apuntes, nada más sencillo que:

Apt-get install w3m

Este navegador nos ofrece una interesantísima posibilidad: se trata de abrir múltiples páginas Web utilizando la combinación de teclas Shift+T e ir navegando
pasando de una pestaña a otra, lo que resulta en una característica realmente interesante. Si presionamos {(abrir llave), iremos a

la siguiente pestaña, mientras que presionando }

(cerrar llave), regresaremos a la anterior.

El funcionamiento y manejo del w3m, si en el proceso de instalación o compilación se decidió así, se llevará a cabo con las mismas teclas que lynx, por
lo que con el listado que dimos anteriormente para aquel podría navegarse con este. Por ejemplo, para abrir el cuadro de configuración del programa pulsaríamos
la letra O y llevaríamos a cabo todos aquellos cambios que fuesen precisos. Sin embargo, por experiencia propia, el diálogo de opciones viene siendo bastante
incómodo de utilizar y el usuario podría querer huir de él. w3m proporciona un gran número de opciones de configuración, y si las configuramos a nuestro
gusto mejoraremos enormemente la navegación.

No obstante, si durante el proceso de compilación o instalación no hemos modificado nada por omisión, las combinaciones de teclas a utilizar serán diferentes.
A continuación os pondré algunas para que os hagáis una ligera idea de por donde va el asunto y podáis utilizar el programa sin problemas. A mi me ocurrió,
por listillo y por no leerme el manual, tipical ¡spanish, oiga! La dichosa costumbre de usar una cosa y luego leer el manual en lugar de hacerlo al contrario,
¡como es debido!…; bueno, como decía, por no leer el manual y por haber visto en una Web que el programa era compatible con links o lynx, me tiré una
media hora pulsando teclas sin que ocurriera lo esperado. así que me leí la documentación y me enteré de que por omisión las teclas no son las de aquellos
dos programas.

Barra espaciadora o Control+v = avanza la página.

B o Escape+v = retroceder página..

L o Control+f = cursor a la derecha.

H o Control+b = cursor a la izquierda.

J o Control+n = Cursor abajo.

k, Control+p Cursor arriba.

G o alt+< = va a la primera línea.

G o alt+> = va a la última línea.

Escape+g = va a la línea especificada.

U = abre una dirección especificada.

Tab = se mueve al siguiente enlace.

Control+u o Escape+Tab = se mueve al anterior enlace.

[ (abrir corchete) = se mueve al primer enlace.

] (cerrar corchete) = se mueve al último enlace.

Intro o Enter =activa el enlace.

A o Escape+intro guarda el enlace en un fichero.

I = ver imagen en línea.

Escape+I = guardar imagen en línea en archivo.

= (igual) = muestra la información sobre el documento actual.

Control+h = muestra el histórico de direcciones.

F = renderiza los marcos.

Escape+b = carga favoritos.

Escape+a = añade la página actual a favoritos.

/ o Control+s = busca hacia delante.

? (cerrar interrogación) o Control+r = busca hacia atrás.

Control+barra espaciadora = poner y quitar marcas.

Escape+p = ir a marca anterior.

Escape+n = ir a marca siguiente.

H = muestra la página de ayuda en línea.

O = pantalla para ajustar las opciones del navegador.

Q = sale del programa con confirmación.

Q = Sale del programa sin confirmación.

Estas son bastantes de las teclas que podéis utilizar con este navegador. Ahora os dejo algunas más para el modo edición en los formularios.

Control+h = elimina el carácter anterior.

Control+d = elimina el carácter siguiente.

Control+k = borra todo lo que haya tras el cursor.

Control+u = elimina todo aquello que haya antes del cursor.

Control+a = se mueve al inicio de la línea.

Control+e = se mueve al final de la línea.

C-p

Tab = auto completado.

Intro o enter = aceptar.

Quedan muchas más opciones y teclas rápidas que, como de costumbre, podrás consultar en la ayuda o en la pertinente manpage en inglés.

Todo es cuestión ahora de probar los tres programas, compararlos entre sí, y utilizar aquel que mejor se adapte a las necesidades particulares de cada uno
de nosotros. La Web es manejable con cualquiera de ellos, pero dado que de momento el lector de pantallas es demasiado poco preciso, es posible que algunos
usuarios muy acostumbrados a Windows con Internet Explorer o, últimamente, con mozilla Firefox en combinación con Jaws o Window-eyes, se sientan demasiado
incómodos en su utilización. Como siempre, la propuesta; y cada uno elige qué usar y en qué momento hacerlo.
 

Grabando y copiando CDS desde la consola.

Ciertamente, grabar o copiar un CD desde la consola Linux, no es una tarea demasiado cómoda que se diga. No es tampoco excesivamente compleja, pero las
órdenes son todas tan tremendamente flexibles que, posiblemente, existan muchas más de las que podamos comentar aquí y que, incluso, existan variaciones
de éstas que puedan funcionar mejor o ser más fáciles, pero eso os tocará descubrirlo a vosotros a base de trastear y estropear unos cuantos discos o mediante
la lectura de oscuros comos (howto) que andan desperdigados por ahí por las profundidades de la Web.

Creando la imagen de un cd de datos:

Muchas veces usamos programas gráficos para grabar CDS que no son más que frontends para los programas cdrecord, mkisofs, cdrdao, etc. Para hacer una imagen

podemos usar simplemente las órdenes cat o dd:

El primer paso será, pues, el montaje de la unidad de CD, lo cual haremos con una línea de órdenes similar a la siguiente:

mount -t iso9660 -ro unhide /dev/sr1 /media/cdrom

/dev/sr1 es el dispositivo donde este nuestro cdrom

-ro significa que lo vamos a montar en sólo lectura

unhide es Para que se puedan leer también los ficheros ocultos

Notas: /media/cdrom es donde se montan las unidades de cdrom en mi ubuntu de pruebas, en vuestra distro podría estar en otros lugares tales como /mnt/cdrom
o /cdrom. También os comento que posiblemente se pueda montar perfectamente con la orden corta de montaje ya que suele venir prevista en el fichero de
configuración.

Con el cdrom montado tenemos varios métodos de crear las imágenes iso para luego ser quemadas.

La primera que podemos utilizar es generándola con la utilidad mkisofs. Si no la tienes en el sistema, suele venir en todos, instálala del modo habitual:
apt-get install mkisofs. Así pues, Creamos la Imagen del CDROM del siguiente modo:

mkisofs -R -J -T -o /tmp/imagen.iso /media/cdrom

La aplicación mkisofs, crea un archivo de sistema híbrido iso9660/joliet/hfs/Rock Ridge. Esto nos permite combinar dos sistemas en un mismo CD, para que
pueda resultar portable entre los diversos sistemas operativos que podamos querer utilizar.

Como habréis podido intuir, la sintaxis básica del programa es:

mkisofs [opciones] -o [salida] [entrada]

donde:

[salida]: Es el directorio donde se creará la imagen: imagen.iso

[entrada]: Es el directorio donde se encuentran los archivos para crear la imagen: /media/cdrom

Con la opción -r generaremos un sistema de archivos con extensión Rock Ridge pero reseteando todos los permisos de modo tal que todos los usuarios puedan
acceder al CD por completo. La imagen será generada en el directorio de salida que hemos especificado.

Por cierto, que no os lo comenté al principio, yo estoy haciendo esto todo desde el usuario root para evitarme movidas con los permisos, aunque supongo
que previa gestión de permisos para cualquier otro usuario podría hacerse desde él, de todos modos por pereza uso demasiado más el root de lo estrictamente
necesario, como ya creo haber comentado con anterioridad en estos apuntillos. Para más información sobre modificadores de este programa ejecútalo con la
opción -help o lee su manpage. Tiene muchas opciones y es tremendamente flexible.

Otras opciones para hacer lo mismo pueden ser las dós líneas de órdenes siguientes, una con cat y otra con dd:

cat /dev/cdrom > imagen.iso

dd if=/dev/cdrom/ of=image.iso

Montar imágenes .iso:

Es posible montar imágenes iso hechas por nosotros o descargadas desde Internet para tener un modo rápido de poder ver su contenido o para poder extraer
algún archivo de su interior. Es algo parecido a como lo podemos hacer en Windows con las unidades virtuales de cdrom que instalan algunas suites de copia
tales como Nero o CloneCD. Esto lo podremos lograr utilizando la orden mount:

mount -t iso9660 -o ro,loop=/dev/loop0 /DirectorioDe/imagen.iso /media/cdrom

Si no hubo ningún fallo, al abrir el directorio /media/cdrom o el que corresponda al montaje del cdrom en vuestra distribución, podremos ver los archivos
tal y como estarían en caso de quemar la imagen en un CD.

Quemando la imagen .iso creada:

El programa que nos va a permitir realizar quemados en la grabadora es el cdrecord. Antes de ponernos a la tarea es necesario conocer el bus al que está
conectada la grabadora para poder decirle al programa de quemado dónde ha de enviar los datos. para ello, deberemos ejecutar la orden siguiente desde la
consola:

cdrecord –scanbus

Deberíais ver, tras esto, aparecer por pantalla, entre varios mensajes, la indicación de la marca de vuestra grabadora y en que bus está conectada.

Si nuestra grabadora, por ejemplo, estuviera conectada en el bus 0,0,0, sería el dato que necesitaríamos para proseguir adecuadamente con el proceso de
quemado.

Colocamos ahora un CD virgen en la grabadora y escribimos la siguiente línea de órdenes:

cdrecord -v speed=16 dev=0,0,0 -data /DirectorioDe/imagen.iso

Donde speed=16 es La velocidad de grabación adecuada. Ésta dependerá, en todo caso, del hardware que tengáis, por lo que deberéis adecuarla a la situación
particular de cada quien. Recordad también que los valores de la velocidad de grabación siempre se van a ir incrementando en potencias de 2 [2,4,8,16…]

dev=0,0,0 es el bus en el que esta conectada la grabadora de CDS.

Finalmente, cuando ya terminemos de quemar todas las copias que queramos de la imagen, solamente hemos de eliminarla del disco duro del siguiente modo:

rm /DirectorioDe/imagen.iso

Si queremos otro modo de copiar un cd, obtendremos la información necesaria acerca del CDROM que necesitemos copiar con la orden isoinfo:

Antes de nada hemos de desmontar el cd si éste lo estuviese tecleando la consabida línea de mandato:

umount /dev/cdrom

Seguidamente escribiremos la siguiente línea de órdenes

# isoinfo -d -i /dev/cdrom

La cual nos lanzará un pantallazo de información que podría ser similar a lo siguiente:

CD-ROM is in ISO 9660 format

System id:

Volume id: W4BSR1

Volume set id:

Publisher id:

Data preparer id: UNTITLED

Application id:

Copyright File id:

Abstract File id: ABSTRACT.TXT

Bibliographic File id:

Volume set size is: 1

Volume set sequence number is: 1

Logical block size is: 2048

Volume size is: 140564

NO Joliet present

NO Rock Ridge present

Con toda la información que nos imprime la orden anterior solamente utilizaremos para nuestros propósitos los dos siguientes datos:

Logical block size is: 2048 <=== bs

Volume size is: 140564 <=== count

Quede claro que, por supuesto, los datos cambiarán dependiendo de las diferentes distribuciones de hardware que cada uno tenga en su máquina.

Con esto en mente vamos a copiar el contenido del CD para crear una imagen .iso con la orden dd de un modo similar a como ya se hizo más arriba:

dd if=/dev/cdrom of=imagenprograma.iso bs=2048 count=140564

Ahora ya disponemos de una imagen .iso creada y, al igual que hicimos más arriba, podremos montarla para verificar su contenido.

Podemos hacerlo con un directorio ya creado o, por el contrario, generar uno:

mkdir /media/temp

Y, seguidamente, montar la imagen allí:

# mount -t iso9660 -o loop imagenprograma.iso /media/temp

Podremos, asimismo, grabar directamente la imagen .iso sobre un CD virgen con la siguiente línea de órdenes:

cdrecord -v -eject dev=/dev/cdrom speed=16 imagenprograma.iso

Copiando Música

El primer paso va a ser el mostrado de las pistas que contenga el cd, por tanto, utilizaremos el rippeador cdparanoia que vimos en el capítulo anterior,
del siguiente modo:

cdparanoia -Q -d /dev/sr1

Seguidamente Extraeremos el audio donde n será el número de canciones que queremos obtener para la copia:

cdparanoia -W -Z -X -B -d /dev/sr1 -v 1-n

Finalmente, para grabarlas en el CD teclearemos la siguiente orden:

cdrecord -v speed=4 -eject fs=20M dev=0,0 -audio -nopreemp track* -defpregap=[tiempo en segundos]

Para Copiar CD de música en directo (sin espacio y cortes entre canciones) haremos lo siguiente:

Instalaremos la aplicación cdda2wav del modo habitual en el que venimos haciéndolo.

Mostraremos las canciones que tenga el cd:

cdparanoia -Q -d /dev/sr1

Extraeremos todo el audio en un sólo fichero con la siguiente orden:

cdda2wav -D /dev/sr1 -s -x -t 1+n

Y, finalmente, Grabaremos el fichero wav a un cd

cdrecord -v speed=4 -eject fs=20M dev=0,0 -audio audio.wav

De momento esto es todo lo que vamos a ver sobre la grabación y copia de CD. En realidad, el grabado de discos en Linux es un tema que me sigue pareciendo
bastante oscuro, sobre todo porque algunas grabadoras, la mía sin ir más lejos, dan bastantes problemas a la hora de ser auto reconocidas por el sistema
operativo, y esto puede lograr que más de uno se desespera antes de conseguir ponerla en marcha.

Escuchando y trabajando con la música y el sonido en linux.

Escuchando y trabajando con la música y con el sonido desde GNULinux.

Bueno, tras tantas entregas de estos apuntes, supongo que ya os comenzabais a desesperar pensando que no podríais hacer las mismas cosas que en Windows desde las consolas. En cierto modo podría ser así, pero sólo en cierto modo. No se pueden hacer las cosas, como es lógico, de la misma manera, pero sí se pueden hacer casi todas las que tenemos en Windows. 

Bien, el tema quizás resulte algo espeso ya que según he ido escribiéndolo y probando programas no me he dado cuenta de la extensión y me ha quedado posiblemente el capítulo más largo, de momento, de estos apuntes, pero creo que a poco que completéis estas notas podréis utilizar la consola de Linux para algo más que para trastear con las órdenes del sistema operativo. No obstante, tened en cuenta que hablaré de varios programas y que, por ello, no comentaré más que unas cuantas de las opciones que cada uno tiene, las que considero básicas para poder empezar a hacer algo con ellos sin excesivos problemas.

Escuchando audio comprimido; mp3 y ogg:

Para escuchar archivos en formato mp3, la aplicación más extendida, aunque no la única (si por algo se caracteriza GNULinux es por tener infinidad de programas), es mpg123.

Antes de nada deberemos tener en cuenta que, dado que el mp3 no es una tecnología de código abierto ni gratuita, es muy probable que nuestra distribución no lo traiga, por ejemplo mi ubuntu no la trae instalada. Así que, como siempre, desde el usuario root haremos:

Apt-get install mpg123

Para reproducir una canción o archivo en formato mp3 basta con escribir la línea de órdenes «mpg123 NombreArchivo», donde NombreArchivo es la canción que queremos escuchar.

Con este programa también podremos reproducir música siguiendo el patrón de una lista de reproducción o playlist a través de la orden «mpg123 -@ archivo», donde Archivo es la lista de reproducción. Estas listas de reproducción pueden ser generadas a través de varios programas reproductores de mp3, entre ellos el Winamp de Windows y el XMMS del entorno gráfico de Linux. 

Si probamos a reproducir una de estas listas no tardaremos en advertir que la consola o terminal queda inutilizada para seguir trabajando. Si ponemos los conocimientos que ya hemos adquirido a lo largo de estos apuntes: ¡Nada más fácil!, ¡Utilizaremos la potencia de la multitarea de GNULinux!. Para hacer esto tenemos dos modos:

mpg123 -@ archivo &

Esto reproducirá la lista de música en segundo plano mientras nosotros podemos seguir trabajando normalmente con el sistema op’erativo en cualquier otra tarea que queramos. Y, en cuanto queramos volver a traer la reproducción al primer plano nada más sencillo que la utilización del comando fg, utilizando como modificador el número de tarea que tenga al haberlo enviado a segundo plano, posiblemente 1.

El otro modo de enviar el proceso a segundo plano es mientras el programa está en ejecución. Por ejemplo :

mpg123 -@ archivo

Con la línea de órdenes anterior ejecutamos de nuevo el programa mpg123 reproduciendo la playlist Archivo.

Esto nos deja el programa mpg123 en primer plano. Ahora si presionamos Control+z nos sacará por la pantalla algo similar a esto:

[1]+ Stopped mpg123 Archivo

Lo que sucede es que el programa mpg123 quedará en un estado de pausa regresando al prompt. Para seguir escuchando la lista de reproducción, pero esta vez en segundo plano, tecleamos en el terminal lo siguiente :

bg

[1]+ mpg123 -@ archivo

Como te darás cuenta el proceso en pausa ( o sea mpg123 ) continuará su funcionamiento, pero en segundo plano, dejándonos con el prompt libre.

Todo esto está muy bien, seguro que piensas ahora; pero: ¡en mi reproductor mp3 al uso puedo avanzar, retroceder, pausar!… ¿Es posible hacerlo aquí? La respuesta es sí, colocando en la línea de órdenes el modificador -C (¡ojo!, esa C va en mayúscula) tal como sigue el ejemplo:

mpg123 -C archivo

Por omisión puedes usar las siguientes teclas mientras se está reproduciendo: p = pausar; s = detener (en realidad la pausa hace que la música se detenga en un punto predeterminado por nosotros al pulsarla pero el sonido sigue repitiéndose de un modo parecido a cuando un cd está sucio, mientras que el parado hace una pausa efectiva y cuando se vuelve a pulsar, la reproducción comienza desde el punto en que pausamos; f = saltar a la siguiente canción (si es la última o si solamente hay una se detendrá el programa y nos retornará a la consola); b = retrocede canción (si solamente hay una se pone al principio y la reproducción comienza nuevamente); , (coma) = rebobinar; . (punto) = avanzar; q = abandonar el programa (detiene la reproducción y nos retorna al prompt).

ogg123:

Otro tipo de ficheros de audio comprimido que cada día es más utilizado es el OGG Vorbis. Posiblemente tiene una mejor ratio de compresión que el mp3 y mejor calidad de sonido. No obstante, la diferencia más grande es que los algoritmos de compresión de audio de este formato son libres de uso, distribución y modificación. Conocido es lo restrictivo de la tecnología mp3 y que la mayor parte de las veces en las que la usamos, estamos haciéndolo ilegalmente. Se supone que poco a poco se irá utilizando cada vez más y, posiblemente cuando aparezcan pen drives capaces de decodificarlo, su uso se hará más amplio.

Para instalarlo, si tu distribución no lo trae, deberás instalar las herramientas de Vorbis que, además de un reproductor, traen también codificadores y conversores de audio así como herramientas de partición de archivos y de edición de las tablas de propiedades, pero de ello hablaremos más adelante, ahora, simplemente, instalaremos el paquete desde el usuario root de la siguiente manera:

apt-get install vorbis-tools

Si tenemos archivos de audio comprimidos OGG, para reproducirlos lo haremos con la utilidad ogg123. Este pequeño programa nos permitirá reproducir archivos o listas de reproducción, cambiar de dispositivo de ejecución, pero es mucho más limitado que el mpg123.

ogg123 nombrearchivo.ogg reproducirá la canción llamada NombreArchivo.ogg

ogg123 /música/* reproducirá todos los archivos .ogg que existan en el directorio /música Si queremos ir pasando de canción en canción iremos pulsando control`c sucesivamente.

Mp3blaster

Este es un reproductor de música que no tiene que envidiar nada, funcionalmente hablando, a otros del tipo de winamp o xmms. Con el vamos a poder escuchar nuestras canciones favoritas así como crear listas y convertir los mp3 en archivos wav de una manera muy sencilla. Eso sí, tiene ciertas peculiaridades que pueden llegar a ser molestas al usarlo con un lector de pantallas como yasr; al estar basado en las librerías de control de pantalla ncurses, al pasar las flechas por las listas nos repetirá tal cual ocurría con otros menús. Asimismo tiene una peculiaridad molesta y es que continuamente nos lee los segundos que va contando al reproducir, con lo que si no tenemos un sintetizador externo para bajarle el volumen, podría dificultarnos el disfrute de la música.

Como siempre, para instalarlo, desde el súper usuario root haremos:

apt-get install mp3blaster 

Para ejecutarlo, nada más fácil que escribir en el prompt la orden mp3blaster.

Se imprimirá entonces en la pantalla una interface de texto bastante amigable e intuitiva. En la parte izquierda se verá el listado de las canciones (la primera vez estará vacío), en la parte superior se podrá leer una breve ayuda de teclas rápidas que el lector de pantallas leerá cada vez que cambiemos entre el modo de selección de canciones y el modo normal. Tiene muchas capacidades y en estas notas me limitaré a las que considero más útiles.

Con F1 añadiremos ficheros a la lista Con F3 cargaremos listas de reproducción que tengamos y con F4 las crearemos.

Bien, vamos a cargar archivos en el programa pulsando F1. Como posiblemente no tengamos ninguna canción en el directorio, a no ser que le hubiésemos dado uno como parámetro al arrancarlo, tendremos que fijar uno donde tengamos canciones. Esto lo haremos pulsando F4. Nos aparecerá un diálogo con un área de edición para escribir la vía donde tengamos los mp3 y dos opciones para elegir con flechas arriba o abajo: replace para poner una vía nueva o insert para añadir a la que tengamos por omisión. En este caso dejaremos la primera y escribiremos toda la ruta, por ejemplo: /home/army/música y pulsaremos intro. Esto hará que aparezca la lista de canciones a la izquierda. Si queremos seleccionarlas todas pulsaremos F3, de lo contrario, navegaremos por la lista con las flechas e iremos marcando los que queramos con la tecla espaciadora. Ahora, si queremos que esta selección sea una playlist pulsaremos F4 y la siguiente vez que activemos el programa simplemente deberemos cargarla con F3. También podremos manejar los modos repetición y aleatorio con las teclas F6 y F7 respectivamente.

Cuando ya tengamos la lista hecha, ya sea para crear una playlist o para reproducirla en el momento o, por supuesto, también si se trata de una playlist hecha con antelación, el manejo de la reproducción es realmente sencillo:

Para comenzar la reproducción pulsaremos el cinco, si bloqueamos el numpad también servirá. Para pausar volveremos a pulsar el 5. El 2 hará la función de stop y provocará que el sistema vaya a la primera canción la siguiente vez que se arranque la reproducción.

El 6 irá a la siguiente canción y el 4 pasará a la anterior. Igualmente el 3 y el 1 sirven para avanzar y rebobinar rápido respectivamente.

Esto es todo, el funcionamiento resulta sencillo y eficaz, aunque posiblemente serán más rápidas otras aplicaciones del tipo de mpg123. Así que, finalmente, para abandonar el programa y regresar a la consola pulsaremos la letra q.

Por cierto, me olvidaba de comentaros que este programa también es capaz de reproducir archivos en formato OGG vorvis y onda wave. Sospecho que también leerá algunos más pero de momento no lo he probado.

Escuchando CDs:

Cómo no, desde la consola también podremos escuchar todos nuestros CDs con aplicaciones múltiples, intuitivas y fáciles de manejar. Una de éstas se llama cdcd y se puede controlar toda la reproducción con comandos relativamente obvios.

Para instalarla haremos lo de siempre, es decir, desde el root:

apt-get install cdcd

El programa se invocará escribiendo cdcd si queremos el modo interactivo o lanzando una línea de órdenes compuesta por cdcd -opciones órdenes. Las órdenes son prácticamente las mismas tanto en línea como en modo interactivo, y las opciones no son estrictamente necesarias.

¡Muy importante! ten en cuenta que para reproducir un cd NUNCA has de montar la unidad, principalmente porque lo más probable es que no puedas y, caso de haberte dejado montar, el reproductor no funcionará. Esta norma es válida para toda reproducción de audioCD, ya sea en consola o en modo gráfico. No ocurrirá lo mismo si fuesen archivos de audio comprimido tipo MP3 u OGG.

Cuando invoques a cdcd por primera vez preguntará si el dispositivo es /dev/cdrom, el cual suele ser así. Si fuera otro el caso deberás decírselo al programa, si no, pulsa intro. Luego te preguntará si tienes conexión a la Web para conectarse a las bases de datos de canciones. Haz lo que veas, nada es obligatorio aquí. Finalmente quedarás en el modo interactivo con el programa en espera de tus órdenes.

Escribe eject para expulsar la bandeja del cd, coloca un disco y pulsa el botón de recogida o escribe la orden close. Con las órdenes open también detendrás la reproducción y abrirás la bandeja del CD.

Con la orden help imprimirás en pantalla un listado de todas las que soporta el programa y, tecleando help NombreDeOrden imprimirás una breve explicación de la utilidad de dicho comando.

Si escribimos play haremos que el reproductor nos toque un cd desde la primera canción hasta el final o hasta que escribamos cualquier otro tipo de orden. Si tras el comando play separado por un espacio ponemos el número de una pista a escuchar, el cdcd irá directamente a ella y nos la reproducirá continuando con el resto del disco a partir de ahí.

Con pause haremos una pausa y el programa quedará en espera de una nueva orden. Si escribimos resume, el reproductor seguirá tocando la canción desde el lugar donde la habíamos pausado anteriormente. Con toggle conmutaremos entre estos dos estados, es decir, pausa y reproducción. Y con stop detendremos la reproducción.

Con la orden next avanzaremos a la siguiente canción y con el comando prev retrocederemos a la canción anterior. Igualmente con ff avanzaremos por la canción en pequeños tramos y con rew retrocederemos también por pequeños tramos en la canción donde estemos en ese momento.

Escribiendo la orden rndplay haremos que el cdcd reproduzca aleatoriamente canciones en el cd actualmente en ejecución.

Finalmente las órdenes quit o exit salen del programa este respecto tened en cuenta que, al contrario de lo que se pudiera pensar, si salimos con quit o con exit sin haber parado la reproducción del cd con stop, seguiremos escuchando la música, sólo que tendremos el control sobre la consola. Para retornarlo al programa simplemente hemos de invocarlo de nuevo. 

Existen varias órdenes más, pero orientadas a recibir información de lo que está pasando en el programa y siempre podréis mirarlas con la ayuda pertinente.

Reproduciendo discos de audio con cdtool:

cdtool es un programa en modo texto para controlar y reproducir CDS de audio bajo el sistema de consolas de GNULinux. Tiene una sintaxis muy sencilla y es muy controlable desde el modo texto siendo casi transparente de cara al usuario.

Para instalarlo, si no lo estuviera ya, se hace como siempre, desde el root:

Apt-get install cdtool

Sus órdenes principales se dan escribiéndolas en el prompt y son las siguientes:

Cdplay o cdplay Start comienzan la reproducción del CD desde el inicio.

Cdplay stop o cdstop detienen la reproducción.

Cdplay + o cdplay – (signos más y guión)avanzan o retroceden pistas en el cd.

Cdplay resume vuelve a reproducir la pista actual.

Cdplay pause o Cdpause pausará la pista hasta que se vuelva a escribir la orden cdplay.

Cdplay x comienza a reproducir de nuevo desde la primera pista del disco.

Cdplay dir o Cdir muestra información disponible del cd en la pantalla.

Cdplay ejec. O cdeject expulsan la bandeja del cd.

Cdplay close o cdclose recoge la bandeja del cd.

Existen algunas otras órdenes interesantes que podéis, como siempre, estudiar mediante las manpages escribiendo man cdtool o man cdplay o leer la ayuda breve ejecutando cdplay con el modificador -h.

Reproducir CDS con cdp y workbone:

cdp es un programa interactivo en modo texto para reproducir CDS de audio bajo Linux. Se basa en WorkBone, que a su vez se basa en los módulos «hardware»,

«database.c» y «struct.c» del avanzado reproductor de CDS para X11 conocido como WorkMan. cdp muestra las bases de datos de CDS generadas por Workman. Permite también editar esta información. cdp espera encontrar el dispositivo /dev/cdrom. Si no tienes este dispositivo, cambia a /dev y haz un enlace simbólico entre tu dispositivo y ‘cdrom’. Por ejemplo, si tu dispositivo lector de CDS se llama ‘mcd0’, entonces haz lo siguiente:

cd /dev

ln -sf mcd0 cdrom

Otra alternativa sería editar el archivo ‘hardware’ para que figure el nombre de tu dispositivo lector de CDS y recompilar el programa. cdp usa el teclado

numérico como panel de control para permitirte cambiar de pista, reproducir, hacer pausa, parar y continuar reproduciendo CDS de audio. 

No sé por qué pero yo he sido incapaz de localizar este programa y lo que os he escrito arriba es a base de lecturas en la Web, sin embargo sí conseguí encontrar el programa del que deriva que se llama workbone que funciona exactamente igual, pero que es un poco menos completo. Un problema por el cual no lo aconsejo es que, mientras reproduce la música con el entorno visible está todo el rato refrescando el sintetizador y haciéndolo hablar, ya que mientras se está ejecutando, el programa muestra el número de pista en reproducción y el tiempo total de duración del CD y de la pista actual reproducidos hasta ese momento. En mi caso tiene arreglo porque estoy utilizando como síntesis de voz para yasr un ciber232 p, pero los que vayáis a manejar esto con un sintetizador software podréis tener problemas.

Para instalarlo, desde el usuario root haremos el consabido apt-get install workbone

Ahora os pongo las teclas que comandan el programa, para usarlo tenéis que pulsar el blocnum para hacer que el teclado de la calculadora escriba números en lugar de ordenar acciones del teclado extendido. Seguidamente escribimos workbone y el reproductor de cd se activa en modo stop.

la tecla ‘9’ del teclado numérico es «reproducir»

la tecla ‘8’ del teclado numérico es «pausa/continuar»

la tecla ‘7’ del teclado numérico es «parar»

la tecla ‘6’ del teclado numérico es «pista siguiente»

la tecla ‘5’ del teclado numérico es «volver a reproducir»

la tecla ‘4’ del teclado numérico es «pista anterior»

la tecla ‘3’ del teclado numérico es «avanzar 15 segundos»

la tecla ‘2’ del teclado numérico es «parar en seco» (la música para)

la tecla ‘1’ del teclado numérico es «retroceder 15 segundos»

la tecla ‘0’ del teclado numérico es «salida suave» (la música continúa)

la tecla ‘.’ del teclado numérico es «ayuda»

Mezcladores en la consola.

Como en cualquier otro sistema, en la consola tenemos varios mezcladores que podemos utilizar para controlar el volumen de nuestra tarjeta de sonido. Podríamos hacerlo con el propio mezclador que traen las librerías de sonido alsa, pero bajo mi punto de vista es sensiblemente más sencillo el aumix, por lo que he optado por mostrároslo. Eso sí, es probable que vuestra distribución no lo traiga instalado, al menos mi ubuntu no lo traía, así que, si se diera ese caso ya sabéis, desde el root:

Apt-get install aumix

Este mezclador trae dos modalidades, una con una especie de interface que bajo mi punto de vista no resulta demasiado manejable o, al menos yo no me desenvuelvo bien con ella, y otra con línea de órdenes que es más llevadera.

La dinámica general de manejo es: aumix -opción +valor o -valor, donde valor es una cantidad de incremento o decremento. Los márgenes van desde el 0 que significa sin volumen hasta el 100 que significa volumen a tope (tened en cuenta que algunos de los controles pueden avanzar hasta el valor 255). Pongamos por ejemplo que el valor del volumen está fijado por omisión en 50, si ponemos un incremento +10 quedará fijado en 60; si seguidamente ponemos un decremento -5 quedaría fijado a 55; si ahora ponemos un incremento +100 pondríamos el valor a tope. Imaginaros que estáis moviendo una barra de desplazamiento en vuestro mezclador habitual, pero en lugar de mover el indicativo tendréis que escribir su valor a mano.

Aumix -v +100 subiría el volumen general del sistema a tope.

Con la opción -h podréis imprimir por pantalla una ayuda breve sobre el mezclador y con man aumix leeréis el manual en línea; no obstante, os pondré unas cuantas opciones aquí:

V = volumen general.

W = volumen de onda (posiblemente afecte a los sintetizadores software como festival).

S = volumen del sintetizador midi (no confundir con el sintetizador de voz software)

C = volumen del cd.

M = volumen del micrófono.

Como ya os dije tiene bastantes más opciones ya que es un mezclador muy completo, pero estas posiblemente sean las principales que nos puedan interesar en un primer momento.

Finalmente para terminar con este breve repaso del aumix os comentaré un comando muy útil: si utilizamos la opción -q sin ningún otro parámetro, el mezclador verificará todos los parámetros del audio y nos imprimirá su estado por pantalla mostrándonos la situación de cada uno de los canales y su valor actual.

Rippear CDs: cdparanoia

Con este palabro tan raro nos vamos a referir a la acción de extraer datos desde un CD o un DVD. Generalmente se refiere a tomar las pistas de audio o o vídeos de estos soportes. En este caso nos vamos a parar exclusivamente en los CDs de música.

Este programa se ha convertido prácticamente en el Standard para extraer audio en forma digital de un CD desde la plataforma GNULinux. Lo más importante de cdparanoia es que cuenta con unas librerías propias para desarrollar programas que tengan que extraer AUDIO de manera digital.

Para instalarla en tu sistema, caso que todavía no lo estuviera, haremos lo de siempre; desde el súper usuario root:

apt-get install cdparanoia

El manejo básico es sencillísimo y no tendrá dificultades para nadie. Con la siguiente línea de órdenes extraeremos del cd la pista número 7:

cdparanoia 7

Como resultado, tendremos un fichero con el nombre cdda.wav conteniendo toda la pista extraída en formato wav. También podríamos indicar en la orden el nombre de la pista que tendrá al ser extraída y su ubicación en el sistema de ficheros:

cdparanoia 7 /home/música/cancion.wav

Cdparanoia, con el modificador -Q, nos imprimirá por pantalla el número de pistas que tiene el CD y la duración de cada una de ellas. Esto podemos utilizarlo para información a la hora del rippeado de CDs cuando no queremos todas sus pistas o también para hacernos una idea de lo que van a ocupar en disco.

Con la opción -B, cdparanoia realiza un rippeo en modo BATCH. es decir, en lugar de extraer todo el cd en un solo archivo; cdda.wav, cosa que ocurre si lanzamos el programa sin ningún modificador, con esta opción se obtendrá un archivo bajo el nombre track0xcdda.wav, por cada uno de los temas que existan en el disco. Es una manera rápida de rippear «TODO» el cd pero obteniendo un archivo individual por cada pista del CD.

Ciertamente disponemos de bastantes más comandos que podremos usar, por lo que si quieres ir más allá siempre queda leer las man pages (man cdparanoia) o con la ayuda en línea del mismo programa que se obtiene con el modificador -h.

Comprimiendo audio:

Visto ya el rippeo, en esta sección dedicada al audio no puede faltarnos también el proceso de codificarlo a los formatos comprimidos mp3 y OGG, lo que los complementará en una gran medida.

lame

Lame es uno de los compresores de audio más conocidos, sobre todo por que tiene una calidad respetable y una buena velocidad de codificación. Se trata de una versión basada en la versión original, pero bajo una licencia GNU. Por supuesto que no puede competir con las versiones comerciales, pero tiene una calidad lo suficientemente buena para las expectativas del público en general.

Puedes descargarlo desde su Web original en http://www.mp3dev.org/mp3/, cosa que no te recomiendo ya que es un desastre. O también directamente desde sourceforge que es más sencillo; simplemente elige un mirror y descarga los fuentes para luego compilarlos en el sistema: http://prdownloads.sourceforge.net/lame/lame-3.97b2.tar.gz?download

Usando lame

El problema de los codificadores de mp3 es la patente tan restrictiva que tiene dicho formato, lo que causa que no se pueda distribuir empaquetado en .deb o .rpm, con lo que el proceso de instalación es más complejo. Debes descargarte el paquete de las direcciones de arriba, copiarlo en un directorio temporal que tengas para tal ocasión y descomprimirlo desde el usuario root del modo siguiente:

tar xvfz lame-3.97b2.tar.gzDonde lame-3.97b2.tar.gz es el nombre del paquete, pero podría ser diferente si estuvieras descargando una versión anterior o superior del programa.

Para Instalarlo dar los siguientes pasos:

1º. ./configure Esto lanza el script de configuración del sistema.

2º. make Esto hace la compilación del programa, tardará unos minutos y puede dar algún warning.

3º. make install Esto hace la instalación del programa en el sistema.

4º. make clean Esto limpia los archivos temporales de la compilación.

5º. Ahora, si lo deseas, puedes eliminar el directorio de los fuentes como sigue: rm -r NombreDirectorio. Recuerda que la opción -r en la orden rm fuerza al sistema a que borre recursivamente cargándose todo lo que haya dentro del directorio, ya sean archivos o directorios, así que sé cauto cuando borres de este modo.

la línea de órdenes para codificar un archivo que previamente hayamos extraído con un ripper como cdparanoia es:

lame -b 128 cancion.wav

la opción -b establece el bitrate; si se omite, 128Kb/s, que es el valor por omisión, será utilizado. Esto nos dará como resultado un archivo con el mismo nombre y la extensión .mp3 agregada al final

Si utilizamos la opción -f especificaremos un modo para que la codificación sea más rápida, pero perderemos cierto grado en la calidad en el resultado final.

Si, por el contrario, preferimos obtener una mayor calidad y sacrificar, en su lugar, un poco la velocidad, mediante la opción -h podremos hacerlo así.

Lame también soporta la posibilidad de tener un BitRate Variable, mediante la opción -v. De este modo el programa tratará de determinar en cada momento cuál es el bitrate mas aconsejable para cada parte de la pista de audio. 

Con la opción -V n, dónde n será un numero del 0 al 9 nos permitirá seleccionar el nivel de calidad que deseemos en un Bitrate Variable, donde 0 es el valor que se corresponde con la mayor calidad. Por omisión vendrá ajustado en 4.

Aquí solamente he reflejado las órdenes básicas de este programa, pero lo que se puede hacer con él es muchísimo y tiene una amplia manpage en inglés que podéis revisar para más información. Asimismo puedes acceder a una breve ayuda si escribes la opción -h en la línea que invoca a lame.

notlame

notlame es otro codificador de mp3 basado en lame, es totalmente compatible con el anterior y tiene los mismos comandos, por lo que no necesita de ninguna otra explicación. Parece ser que este codificador es más rápido y tiene más calidad que el mismo lame, pero en realidad yo no le he hecho pruebas de medición, así que me creeré los comentarios que he leído.

Puedes descargarlo en http://users.rsise.anu.edu.au/~conrad/not_lame/ donde lo podrás encontrar empaquetado en diferentes tipos, incluyendo .deb y rpm, así que lo descargas como mejor te convenga y usas el método de instalación pertinente: tar, dpkg o rpm.

bladenc

http://bladeenc.mp3.no

bladeenc se publicita a si mismo como una versión GNU de la imagen ISO del algoritmo de codificación de Fraunhofer. En una época se podían bajar los binarios directamente, pero debido a problemas de patentes, hoy esto no es posible. Sin embargo se encuentran los paquetes para descargar en otros puntos ofrecidos por personas que viven o tienen sus servidores en países donde el no cumplimiento de la patente de mp3 no supone problemas. De todos modos, el programa ya no está en desarrollo y posiblemente no se continuará con él.

Bladeenc está optimizado para bitrates de más de 128Kb/s,es mas se recomienda 160Kb/s para obtener una buena calidad. Por ello resulta un programa lento pero da mucha calidad a los mp3, pero es mucho más limitado, ya que no tiene tantas opciones como lame y notlame; tampoco tiene modificadores para optimizar velocidad, o calidad. 

una línea de órdenes para bladeenc es como sigue a continuación:

bladeenc -br 160 cancion.wav cancion.mp3

-br permite seleccionar el bitrate deseado para la codificación de los mp3; asimismo, existen algunas otras opciones, pero que realmente no son demasiado interesantes como podría ser codificar en mono, intercambiar canales, etc..

Crear mp3 rippeando en un solo paso:

En lo que hemos visto hasta el momento, obteníamos en primer lugar el archivo .wav con el cdparanoia, para después pasarlo por el codificador pertinente de mp3. Esto trae como consecuencia que sea necesario disponer de un promedio de unos 50 megas por canción extraída, o mucho más si estamos extrayendo un cd completo, y luego comprimirlo al archivo mp3 que ocupará una media de 3 megas. . Por ello, vamos a aprovechar las capacidades que nos ofrece GNULinux, y utilizaremos el sistema de redirección por tuberías que nos permitirá hacerlo todo de un tirón y con una sola línea de órdenes, enviando la salida Standard del ripper a la entrada Standard del codificador. Un modo de hacerlo sería como sigue:

cdparanoia – -Y -Z|lame – -f cancion.mp3

en cdparanoia el – (guión) especifica que se redirija todo a la salida Standard y el – (guión) en lame indica que los datos (.wav) serán obtenidos de la entrada Standard. Si utilizásemos notlame, las órdenes serían las mismas.

Si estuviésemos utilizando el codificador bladeenc, la línea de órdenes que deberíamos utilizar sería la siguiente:

cdparanoia – -Y -Z|bladeenc STDIN cancionn.mp3

STDIN indica a bladeenc que use la entrada Standard como archivo a codificar. Sin embargo bladeenc enlentece «el rippeo» por que va haciendo el proceso de codificación en pequeños tramos de tiempo.

Vorbis Tools

Como ya vimos con anterioridad, El paquete Vorbis Tools contiene herramientas de línea de comandos para ficheros de sonido OGG. Es útil para codificar, reproducir o editar ficheros usando el CODEC de Ogg. Para su instalación referiros más arriba cuando hablábamos de la reproducción de los archivos en formato .ogg.

El paquete Vorbis Tools contiene las utilidades oggdec, oggenc, ogg123 vcut y vorbiscomment.

oggdec

oggdec es un decodificador simple para convertir ficheros Ogg Vorbis en ficheros de sonido PCM (WAV o RAW). Para convertir un archivo .ogg a .wav, nada tan fácil como lo siguiente:

oggdec cancion.ogg lo que convertirá cancion.ogg en cancion.wav. Tiene algunas opciones más pero raramente las vas a usar. Si necesitas más ayuda ejecuta oggdec con el modificador -h o lee su manual con man oggdec.

oggenc

oggenc es el codificador que convierte ficheros RAW, WAV o AIFF en ficheros Ogg Vorbis. Escribe la orden oggenc NombreArchivo.wav para que cree otro con el mismo nombre pero codificado al formato .ogg.

La opción -b indica al codificador con que bitrate debe comprimir el archivo. No deberías ponerlo muy bajo si quieres que suene bien.

Con la opción -q definiremos la calidad que queremos que tenga el archivo .ogg. Se mide de 0 a 10, así que cuanto mayor sea la calidad más grande será el archivo resultante, con lo que en la mayor parte de los casos interesa una calidad intermedia.

Con la opción -o NombreArchivo.ogg podremos decirle al oggenc que el fichero resultante se llame NombreArchivo.ogg en lugar de tomar el nombre del fichero fuente.

También dispones del modificador -h para pedir ayuda en línea y de su correspondiente página man. Puedes mirar allí el resto de las opciones que soporta el codificador, entre las que podrás encontrar las que manejan las etiquetas tag de meta datos que controlan salidas como el título de la canción que mostrará el reproductor. Dispondrás también de un editor para poder modificarlas.

ogg123

Como ya vimos en estos apuntes, ogg123 es un reproductor de ficheros Ogg Vorbis para la línea de comandos.

ogginfo

ogginfo muestra toda la información almacenada en el fichero de sonido a la hora de haber sido codificado.

vcut

vcut es una herramienta que dividirá un fichero en dos a partir de un punto de corte definido por nosotros.

vorbiscomment

vorbiscomment es un editor para cambiar la información contenida en las etiquetas de meta datos de un fichero de sonido. No lo vamos a comentar en estos apuntes porque no nos parece relevante para nuestro propósito general, pero si quieres más información ya sabes que dispones de la ayuda en línea con el modificador -h en la orden, o leyendo su manpage.

El formato Ogg Vorbis, al igual que mp3, utiliza compresión con pérdida de información, es decir, que de la pista de audio digital original en .wav, .au o .cdr, al hacer la codificación se va a perder, en teoría, toda aquella información redundante e inaudible al oído humano. Cuanto más cuidadosamente se haya realizado el proceso de compresión, tanto mejor será la calidad del fichero comprimido. No obstante, si tratamos de pasar un archivo comprimido a .wav, .au

o .cdr, el resultado nunca será igual al original ya que esa información eliminada en el proceso de compresión nunca será posible recuperarla. Asimismo podrás convertir un archivo mp3 a ogg, pero, al ser mp3 una codificación con pérdida similar al ogg, lo más probable es que el resultado del cambio de uno a otro formato haga que sea todavía peor, por lo que es aconsejable codificar directamente desde formatos que no hayan sido creados con ningún sistema de codificación con pérdida.

Reproduciendo archivos en formato MIDI.

En GNULinux también es posible reproducir archivos en formato MIDI. Para este propósito, entre muchos otros, podremos utilizar una aplicación muy interesante llamada tiMidity. Su principal característica es que permite trabajar con tarjetas de sonido que no posean sintetizadores Midi dado que gestiona el sonido mediante una emulación software, cosa que los drivers de alsa, al menos que yo sepa, todavía no son capaces de hacer; lo cual nos lleva a otra ventaja, que no es más que su muy buena calidad de sonido por utilizar muestras pregrabadas. Esto nos lleva también a su gran inconveniente, es decir, debido al tipo de tareas que lleva a cabo, el microprocesador se recarga bastante de trabajo, pero puede ser utilizado perfectamente en la mayor parte de los ordenadores de la actualidad, al menos yo hago las pruebas en un pentium III a 450 mhz y no tengo problemas.., conozco a gente que lo hizo correr en un 486 y ciertamente allí si tenía ciertas dificultades y el programa se comía notas o tramos de la canción.

Para instalar el timidity haremos lo de siempre, desde el usuario root escribiremos:

apt-get install timidity lo cual nos sugiere también la instalación de pmidi y recomienda la instalación jackd y freepats. Es recomendable instalar, al menos, el freepats para obtener los patches de sonido para el timidity y el pmidi como un reproductor midi más ligero.

¿Cómo funciona el midi por software?

El proceso se lleva a cabo de una manera idéntica al midi por hardware. Un fichero midi solamente contiene las notas musicales que se han de interpretar, todos los eventos que afectan a esas notas y los nombres de los instrumentos que se deben usar y son independientes a cualquier dispositivo o aparato en el que se vayan a reproducir. El dispositivo midi dispone de una lista de samples de sonido real grabado con cada uno de los instrumentos y al pasarle un fichero midi, se interpretará en tiempo real la partitura que va en el fichero. Timidity hace lo mismo, pero para ello necesita un conjunto de samples o patches. En la calidad que tengan estos patches va a residir la calidad del sonido final obtenido. Existen conjuntos de patches gratuitos e incluso libres (en Debian, Ubuntu y derivados está el paquete freepats), que es el que vamos a usar en nuestro caso, también existen conjuntos de patches comerciales de una calidad altísima, pero que no son necesarios para un uso cotidiano.

Pues bien, una vez instalados los paquetes timidity y freepats, solo tienes que hacer lo siguiente:

Timidity NombreArchivo.mid 

Esto hará que comencemos a escuchar la composición llamada NombreArchivo.mid con una muy buena calidad de audio.

Reproduciendo con pmidi.

Para utilizar el secuenciador interno de la tarjeta a través de los dispositivos ALSA la cuestión se nos dificulta un poquito dado que es necesario tocar archivos y cambiar la configuración y, aun así, yo no he obtenido buenos resultados, el midi me suena algo distorsionado y da saltos. En las siguientes líneas os comento como se hace, es material que he encontrado por Internet, y luego vosotros, si lo queréis así, hacéis las pruebas, a lo mejor, con un poco de suerte y una tarjeta de sonido mejor que la mía lográis algo. De todos modos, si lo que queréis es simplemente escuchar archivos midi sin complicaros la vida podéis hacerlo tal cual lo que os expliqué hasta aquí e ignorar el resto.

Vamos a revisar ahora cierta configuración y a realizar algunas modificaciones.

Lo primero es cargar ciertos módulos del sonido. Entra en el usuario root si no estuvieras ya. Esto puede hacerse de dos maneras:

1. Edita el archivo /etc/modules con tu editor de texto favorito y añade las siguientes líneas:

snd-seq-device

snd-seq-midi

snd-seq-oss

snd-seq-midi-event

snd-seq

Sé cuidadoso y no toques ningún otro texto que haya en el archivo o correrás el riesgo de desestabilizar el sistema o, incluso, hacerlo inservible.

2. La otra manera de cargar los módulos es más segura ya que evitas tocar lo que no debes, pero se pierde el automatismo del caso anterior. También desde el root se ponen las siguientes órdenes:

modprobe snd-seq-device

modprobe snd-seq-midi

modprobe snd-seq-oss

modprobe snd-seq-midi-event

modprobe snd-seq

Archivos de configuración

En el archivo /etc/timidity/timidity.cfg es donde se declara el set de samples que vas a utilizar en la emulación software del sonido para los midis que reproduzcas, a no ser que instales otros patches diferentes no vas a necesitar tocarlo.

Seguidamente edita El fichero /etc/init.d/timidity. Ahí debes buscar una línea que comienza con lo siguiente: TIM_ALSASEQPARAMS= la cual debes modificar para que quede de este modo:

TIM_ALSASEQPARAMS=»-iA -B2,8 -Os1l -s 44100″

Nota: tened mucho cuidado con respetar las mayúsculas ya que Linux es sensible al caso y, si no se ponen tal cual, la línea no es válida.

Ahora editaremos el fichero /etc/default/timidity en el cual tendremos que hacer un par de modificaciones:

En primer lugar buscaremos una línea comentada idéntica a la siguiente:

#TIM_ALSASEQ=true

y la descomentaremos, si me permitís el palabro, eliminando el # (signo de número o almohadilla), que precede a toda la línea.

En segundo lugar buscamos una línea que comienza por TIM_ALSASEQPARAMS= y hacemos que quede del siguiente modo:

TIM_ALSASEQPARAMS=»-iA -B2,8 -Os1l -s 44100″

Si en vuestro caso tuvierais una CPU limitada o por cualquier cuestión particular quisierais reducir la carga de la tarea podéis probar a modificar la línea anterior de la siguiente manera: 

TIM_ALSASEQPARAMS=»-B2,8 -Os -EFreverb=0 -EFresamp=1 -EFchorus=0″

De esta forma se desactivará el efecto Reverb y Chorus y el resampleado de los patches se hace con un algoritmo lineal en vez del gaussiano que utiliza por omisión. Al parecer 

esto hace descender en gran medida el uso de CPU al tiempo que apenas se nota un descenso en la calidad del sonido. Digo al parecer, porque en mi caso no lo he probado, esto lo encontré en algún sitio por Internet y, dado que no me apetece ponerme a medir tiempos de proceso y de sobrecarga del microprocesador, opto por creérmelo.

Por último, editando el fichero ~/.bashrc añadiremos la siguiente línea: 

export ALSA_OUTPUT_PORTS=»128:0″

También es posible ponerla como línea de órdenes en el prompt del sistema, ya que simplemente es la importación de las variables.

Una vez hecho esto, basta con arrancar el servicio timidity.

/etc/init.d/timidity start

Nos debería sacar por pantalla un texsto similar al siguiente:

Starting TiMidity++ ALSA midi emulation: timidity.

Emulating midi on ports: 128:0 128:1 128:2 128:3

Si nos dice en la salida que el servicio timidity ya está arrancado podremos poner la siguiente orden para rearrancarlo:

/etc/init.d/timidity restart

Para probar que el emulador midi está funcionando podemos utilizar el reproductor pmidi de esta forma:

pmidi -p 128:0 fichero.mid

Si suena es que está funcionando correctamente. De todos modos, en mi caso he obtenido unos resultados muy anómalos de esta segunda manera con el pmidi cuando, por lo contrario, con timidity NombreArchivo.mid sin haber tocado la configuración funcionó a la primera y con muy buena calidad de sonido. Podría ocurrir, asimismo, que fuera necesario reiniciar el sistema tras la carga de los módulos, si no funcionase el comando pmid que hemos puesto antes haced un reboot desde root y volved a probar.

Supongo que os habréis dado cuenta que no he hablado en estos apuntes y en esta subsección nada acerca de los secuenciadores de midi. Ciertamente no lo he hecho intencionadamente, sino por la sencilla razón de que no existen para la consola, o al menos que yo sepa. Si los hay para el entorno gráfico, el más usado de ellos es el rosegarden, pero de momento queda fuera de nuestro ámbito porque en estos momentos hablamos del modo texto y porque, hoy por hoy, el acceso al entorno x window no se puede hacer con suficientes garantías, aunque no pierdo la esperanza que antes de la finalización de esta serie de apuntes podamos entrar a manejar un poco el escritorio gnome.

Grabación de audio desde la tarjeta de sonido:

Para grabar desde un dispositivo externo a través de la tarjeta de sonido, desde la línea de órdenes se puede hacer con la orden rec perteneciente al paquete sox (Sound eXchange) que es un paquete de programas comunmente utilizado para convertir entre diferentes formatos y para dar ciertos efectos a los archivos de audio, que de momento vamos a dejar apartado en estos apuntes, no obstante, si tenéis interés siempre podréis leeros su manpage (en inglés) e intentar dar efectos a vuestros archivos de audio. Con su misma sintaxis pueden reproducirse sonidos con la orden play, aunque éste último posiblemente sea capaz de detectar y reproducir automáticamente los diferentes archivos sin la necesidad de tener que teclear la ristra de comandos que soporta.

El modificador -c especifica el número de canales a utilizar, normalmente serán 2, aunque hay tarjetas y sistemas de sonido, como es bien conocido, que soportan más, pero desde luego eso me supera bastante…, ciertamente todo el paquete sox me supera porque a penas si lo he usado, pero me interesa mencionarlo para que sepáis que existe la posibilidad de grabar desde la consola.

Con el modificador -d podemos especificar un dispositivo diferente por el que grabar o reproducir el sonido.

Con -f se especifica el bit format de la muestra. Sus opciones son: s, u, U, A, a, o g.

El modificador -r especifica el ratio de codificación de los datos de audio, es decir, las muestras (o samples) por segundo que se toman al grabar y reproducir. por ejemplo, si quisiéramos un sonido tipo CD la ratio a usar debería de ser 44100.

La opción -s especifica el tamaño de cada una de las muestras. Son: b, w, l, f, d, o D, donde b es la más grande y D la más pequeña. Ello influye en la calidad del sonido y en su tamaño resultante.

Con el modificador -t podemos especificar el formato del fichero de audio a utilizar.

Con -v podremos cambiar el volumen del audio.

Un ejemplo de grabación sería el que sigue:

rec -c 2 -r 44100 -s w ArchivoDeSonido.wav

Bien, de momento, esto es todo; no son todos los programas, ¡ni mucho menos! en linux hay muchos más, incluso muchos que no conocerá la mayoría del común de los mortales. De hecho se me quedan algunas cosas que de momento no os comento porque, o yo no he sido capaz de manejar todavía, o he tenido problemas para instalar…, no obstante, es posible que en entregas futuras podamos volver sobre el sonido y las podamos ver. Ahora os toca probar a vosotros y, si queréis, a seguir investigando y buscando a lo largo de internet otro tipo de aplicaciones que os puedan ayudar.

 

Accesibilizando un poco más el sistema.

En esta entrega de los apuntes vamos a ver cómo lograr un punto más de accesibilidad utilizando pitidos en el altavoz interno del ordenador en determinados
eventos. No es imprescindible hacerlo para manejar correctamente GNULinux, pero podrían ayudarnos mucho en nuestra tarea diaria.

El contenido de esta entrega no lo he redactado directamente yo, sino que lo he recolectado de unos apuntes de un curso sobre linux que recibí hace un tiempo
y que me parece de utilidad. Solamente me limité a añadir ciertos detalles, pero la esencia es la misma del original que yo tenía por mi disco duro.

Accesibilidad en el gestor de arranque (Grub o Lilo)

El proceso descrito seguidamente soluciona la accesibilidad del gestor de arranque y permite a un usuario ciego saber cuando se espera que
elija el sistema operativo que desea iniciar mediante una señal sonora por el altavoz interno del ordenador.

El proceso consiste en insertar el carácter hexadecimal 0x07 (un pitido del altavoz interno del PC) en el fichero de configuración del gestor de arranque,
entre las cadenas de texto que se presentan como opciones de los sistemas operativos que se pueden iniciar desde el ordenador.

Dado que este proceso puede dejar el sistema inutilizable si no se lleva a cabo adecuadamente, es recomendable únicamente realizarlo si se sabe perfectamente
qué se está haciendo en cada momento. En cualquier caso se recomienda igualmente realizar copias de seguridad de los ficheros de configuración del gestor
de arranque.

Se debe editar el fichero /boot/grub/menu.lst o /etc/lilo.conf, dependiendo si el gestor de arranque es GRUB o LILO respectivamente.

Vamos a realizar el proceso con el editor de textos vi y la orden xxd, pero se podría realizar con cualquier aplicación que permita editar en hexadecimal
un fichero de texto. La elección de vi no es aleatoria, sino que responde a la razón de venir incluído con todas las distribuciones que andan por ahí.

Como usuario root, ejecutaremos:

vi /boot/grub/menu.lst (o /etc/lilo.conf) dependiendo de nuestro gestor de arranque favorito.

Ejecutaremos la orden xxd que activa el modo hexadecimal, para lo que escribiremos:

:%!xxd

Con esto, la pantalla debería quedar dividida en dos: una columna con los caracteres en hexadecimal, y la otra con su correspondencia en ASCII.

?Ahora deberemos buscar los caracteres hexadecimales que componen las cadenas que describen los sistemas operativos que se pueden arrancar y sustituir alguno
que no sea significativo, por ejemplo, un espacio en blanco, si éste existiese, por el carácter 0x07

Saldremos ahora del modo de edición en hexadecimal con la siguiente orden:

:%!xxd -r

En el modo ASCII, debería verse el carácter que hemos introducido (representado como un ‘^G’ . Comprobaremos que el resto del fichero está correcto y que
no se ha modificado nada más por error, guardamos los cambios y salimos del editor con la orden :wq

El carácter 0x07 se puede introducir en varios lugares dentro del fichero de configuración del gestor de arranque, pero con una vez que se inserte es suficiente
para nuestro propósito.

Si el gestor de arranque fuese LILO, se deberá ejecutar, además, la orden:

lilo

para que los cambios sean considerados en el siguiente arranque.

Con estos cambios en el fichero de configuración, la siguiente vez que arranquemos el ordenador, al imprimirse en la pantalla el menú de selección de sistema
operativo, el altavoz interno del PC pitará, permitiendo entonces seleccionar el sistema operativo que se desee iniciar.

Accesibilidad de las teclas de bloqueo: programa locktones

Locktones es una pequeña aplicación que permite saber por medio de sonidos el estado de las teclas de bloqueo (mayúsculas, numérico, desplazamiento
y tecla insert). Para instalarlo será necesario descargarse el código fuente y compilarlo, pero dado que es un programa muy pequeñito y sencillo, no tendremos
ningún tipo de problemas para hacerlo.

Bajaremos el código fuente de la siguiente dirección:
http://mielke.cc/packages/locktones.html ,
en la sección de Download.

Para compilarlo, una vez descomprimido el paquete (ver el tema de paquetes para más información sobre cómo descomprimir con tar.gz), se debe acceder al
directorio ‘locktones-0.5/linux’ y ejecutar el comando make. Si la compilación se ha llevado a cabo correctamente (suelen aparecer algunos Warnings, pero
no son importantes y pueden ignorarse) se instalará en el sistema con el comando make install, esta vez ejecutado como superusuario (root).

Para ejecutarlo basta con escribir locktones desde la línea de órdenes tras habernos autentificado en el login, pero para que se arranque automáticamente
en el sistema para evitarnos trabajos repetitivos, y, aprovechando que es un demonio, se deberán llevar a cabo los siguientes pasos:

? Crear un script de arranque del demonio. Para ello crear un fichero con el nombre locktones (por ejemplo) en el directorio /etc/init.d con el siguiente
contenido:

########################################

#! /bin/sh

DAEMON=/usr/local/sbin/locktones

PIDFILE=/var/run/locktones.pid

# Arguments to atd

#

ARGS=»»

test -x $DAEMON || exit 0

case «$1» in

start)

echo -n «Arrancando el demonio locktones…..»

start-stop-daemon –start –quiet –pidfile $PIDFILE –exec $DAEMON — $ARGS

echo «…. Hecho. «

;;

stop)

echo -n «Parando el demonio locktones…..»

start-stop-daemon –stop –quiet –pidfile $PIDFILE –exec $DAEMON

echo «….. Hecho. «

;;

reload)

echo «No implementado.»

;;

force-reload|restart)

sh $0 stop

sh $0 start

;;

*)

echo «Uso: /etc/init.d/locktones {start|stop|restart|force-reload}»

exit 1

;;

esac

exit 0

########################################

Si quieres evitar problemas puedes copiar y pegar el texto anterior para crear dicho script sin la posibilidad de cometer errores.

Seguidamente daremos desde el usuario root permisos de ejecución a dicho fichero con la orden:

chmod +x /etc/init.d/locktones

Y por último, también desde el usuario root, crearemos el enlace que lanzará el demonio en el arranque del sistema:

ln -s /etc/init.d/locktones /etc/rcS/S82locktones

Bien, esto es todo por esta vez. En la siguiente ocasión trataremos la reproducción de sonido desde la consola y la gestión del control de volumen.

No sólo de la línea de órdenes vive la consola: Midnight Commander.

El Midnight Commander (normalmente conocido como mc, de hecho es así como se le invoca en la línea de órdenes de la consola) es un gestor de ficheros para
sistemas tipo Unix entre los que se encuentra, como ya sabemos, el GNULinux,

y es, por tanto, un clon libre del Norton Commander, de hecho dicen que es el Norton Comander de GNULinux…. he de reconocer que yo en dos jamás lo usé
ya que en la época me la refanfinflaba lo de los menús y prefería hacerlo todo a base de línea de texto en el terminal ¿cómo cambian las cosas! ahora si
nos quitan el menú o la ventana de diálogo lo pasaríamos realmente mal aunque en verdad tardemos dos veces más en hacer las cosas…. todo sea por la sencillez.
MC es una aplicación modo texto. El interface principal consiste en dos paneles que muestran el sistema de ficheros. Incluye, entre muchas posibilidades,
un editor interno con sintaxis resaltada, visualización del contenido de paquetes, conexión a servidores FTP, etc…

Llegados aquí podría surgir la cuestión: ¿si existe un gestor de ficheros con muchas utilidades por qué no hemos comenzado por ahí en lugar de liarnos con
tanta orden enrevesada? La respuesta es simple: es mucho más rápido y eficaz controlar el funcionamiento del sistema con una orden que navegar menús,
listas y tabuladores buscando una orden, si bien es cierto que el mc posee una buena colección de teclas rápidas; pero, aunque parezca lo contrario, es
mucho más eficaz y rápido para un ciego operar el sistema con una orden que buscarlo en un entorno de este tipo. Además tenemos el consabido problema
de la respuesta del lector de pantallas yasr y los menús y listas, es decir, que repite dos veces cada elemento, da el nombre del que sale y luego el del
que entra, con lo que mientras no nos acostumbremos podemos liarnos un poco. Me da la sensación que esto es debido a una mala gestión de las librerías
ncurses por parte de los lectores de pantallas. Esperemos que en un futuro, si siguen desarrollando yasr, consigan el modo de evitar este problema tan
incómodo. Pese a todo esto voy a dar una panorámica general de este gestor por si a alguien le resulta interesante o útil.

Empezando: dónde está y cómo se invoca.

Hasta donde yo conozco, las distribuciones generalistas no traen por omisión instalado el Midnight Commander , por lo que conectaremos el equipo a la red
si no está y escribiremos desde el root la consabida línea de órdenes:

apt-get install mc

Tras un breve momento el programa quedará instalado y configurado correctamente en nuestra máquina, con lo que para invocarlo simplemente escribiremos la
orden mc desde cualquiera de nuestros usuarios de trabajo. Recuerda trabajar, siempre que te sea posible, desde cualquier otro usuario diferente al root,
ganarás en seguridad y evitarás accidentes.

Funcionamiento básico.

MC se encarga de todas las operaciones con archivos mediante menús y teclas rápidas requiriendo de un mínimo esfuerzo por parte del usuario. En cuanto se
abre, el cursor se colocará en el panel izquierdo y con flechas arriba o abajo podremos ir explorando el contenido de la pantalla. Dependiendo del usuario
que estemos ejecutando y de sus permisos podremos acceder a unos u otros directorios. También será posible configurar el panel derecho para que en él se
muestren datos tales como la información referente a los archivos: permisos, tamaño, etc.

MC consta de un menú principal, los dos paneles de los que ya hablamos donde se muestran los archivos y un shell inferior. Cada panel representa un directorio
con el nombre de los archivos que contiene, su tamaño

y su última fecha de modificación. Oprimiendo la tecla tab podemos cambiarnos de un panel a otro. Si queremos entrar en uno de los directorios mostrados
en uno de los paneles es tan sencillo como posicionarse sobre él y pulsar la tecla enter, si lo que queremos es salir de un directorio hemos de posicionarnos
sobre el directorio cuyo nombre es .. (dos puntos) en la parte superior del panel y presionar un enter allí.

Con la pulsación de la tecla F9 activaremos el menú principal del gestor, que contiene todos los submenús de manejo del programa. existe un submenú llamado
Izquierdo y otro submenú llamado Derecho, correspondiente a cada uno de los paneles del MC desde los que se controlan. En la parte inferior del MC podremos
ver los hints o consejos (cuya desafortunada traducción es

ayuditas) éstos son los consejos para el uso de MC (yasr, cada vez que abramos mc nos va a leer una de estas ayuditas), más abajo tendremos el shell interno
del MC desde el cual podremos escribir los comandos que queramos como hacíamos en la shell normal tal como venimos de hacer en todas estas entregas pasadas.
Por último,

en la parte más baja de la pantalla, tendremos una especie de línea de estado en la que podemos ver la lista de las teclas de función del F1 (Ayuda) al
F10 (Salir). Para tener acceso a los comandos tecleados en

el shell de MC se pueden usar las teclas ALT+P y ALT+h. Para salir de MC pulsa F10, el sistema te preguntará si estás seguro, con lo que pulsando s saldremos
a la consola y si pulsamos n regresaremos a mc. Y, Lógicamente, si pulsas F1 saldrá por pantalla una ayuda que podrás y deberás leer. La tecla escape pulsada
sola desactiva o cancela las pantallas, ventanas de diálogo y menús.

Al revisar los menús de MC veremos a menudo la tecla de función M-? (que activa la búsqueda), la M se refiere a meta, una tecla que prácticamente ningún
teclado de pc incluirá. Lo más probable es que en tu caso, la tecla meta sea AltGr de modo que M-? es shift + AltGr + ? .

Ten en cuenta también cuando recorras los menús que la traducción no está completamente hecha y a menudo vas a encontrarte con algunos elementos que todavía
están en inglés.

El más importante de los submenús es Archivo, con él podemos llevar a cabo las acciones más comunes que se hacen con los archivos como son copiar, mover,
renombrar, borrar, reasignar permisos, cambiar propietario, crear directorios, comprimir, etcétera. Ten, como siempre, presente que las posibilidades de
estas acciones van a depender de los permisos y capacidades asignadas al usuario que se esté ejecutando en ese momento. Para accederlo pulsa F9 y desplázate
con la flecha a archivo, luego con flecha abajo podrás ir probando todas las opciones de las que consta.

Pidiendo ayuda.

Es muy importante que sepas dónde buscar más información, ya que en estos apuntes solamente damos una breve pasada por el manejo del programa.

Un primer modo de pedir ayuda es, desde dentro del propio gestor pulsar F1. Aparecerá una pantalla principal con los diferentes elementos de los que consta.
El uso principal se puede hacer simplemente pulsando las flechas, pero dispones en la misma ayuda de un apartado que te explicará fácilmente su manejo.

Con flechas arriba y abajo puedes ir recorriendo el menú de opciones. Cuando llegues al elemento de tu elección, pulsando flecha derecha entrarás en él;
si tiene otros elementos los recorrerás igualmente con las flechas, si no, el lector pasará a leer la pantalla. Para regresar al menú tras la lectura
solamente has de pulsar flecha izquierda y seguir luego explorando los demás elementos del mismo modo. Asimismo, dentro de un tema, avpag y repag avanzan
y retroceden páginas de lectura e inicio y fin van a la primera o a la última página de lectura. Pulsando dos veces escape regresaremos al interface principal
del gestor del MC.

Puedes también buscar más ayuda en las manpages pulsando desde la consola la orden man mc.

Configurando MC

Desde F9->Opciones->Configuración, podemos configurar las opciones de

MC. En particular debemos seleccionar que muestre los archivos ocultos y que siempre haga una pausa después de ejecutar cada orden.

En F9->Opciones->Confirmación podemos desactivar la molesta opción de confirmar la salida, (¡pero no es nada conveniente que se desactive la opción de confirmar
eliminación¡) puesto que ello podría dar lugar a un borrado accidental de un fichero y, si estamos utilizando el usuario root podría provocar una devacle
en el sistema, es por ello por lo que yo, particularmente desaconsejo . el uso de gestores de archivos de cualquier tipo en los administradores, puesto
que es más fácil cometer errores graves utilizando listas, menús e iconos, que escribiendo líneas de órdenes.

Otras utilidades de mc.

Una de las características más interesantes de MC es el manejo del Virtual Fyle system. Este sistema nos permite ver dentro de un archivo comprimido como
si fuese un directorio, sin necesidad de descomprimirlo. Con el VFS podemos ver archivos tar, tgz, tar.bz2, gzip, zip además de los paquetes rpm de RedHat
y los paquetes deb de debian. Para ver el contenido de un archivo ZIP o GZIP solamente hemos de posicionarnos sobre él y pulsar la tecla enter. Si lo que
quisiéramos hacer es descomprimir un archivo o todo el paquete podemos copiarlo a un directorio para sacarlo de manera permanente.

MC también es un excelente cliente de ftp, para conectarnos a un equipo remoto seleccionaremos panel Izquierdo o Derecho y luego Conexión por ftp…, el
formato es
usuario@servidor.com:

Para cerrar la conexión por FTP teclearemos cd en el shell de MC y presionaremos enter. Si utilizas a menudo esa conexión FTP puedes guardarla en disco
desde F9->Utilidades->Favoritos..

que son los bookmarks de MC a semejanza de los que seguro ya conoces de cualquier navegador de internet.

Editar desde el gestor de archivos.

MC incluye un sencillo y eficaz editor interno con el cual se editarán todos los archivos de texto que podrás utilizar en lugar de vi o nano, pero también
se podrá configurar para que pueda utilizarlos como su editor por omisión. Para editar un archivo de texto, es tan sencillo como colocarse sobre él y presionar
la tecla F4.

El editor interno sigue un esquema de cortar-y-pegar muy interesante y fácil de usar. Llevamos el cursor a una zona determinada del texto de nuestra elección
y con F3 marcamos el comienzo de una selección, luego movemos el cursor a la zona donde deseemos finalizar el bloque y un segundo F3 marcará el fin. Esto
resaltará el área elegida. A continuación moveremos el cursor a cualquier otro lugar al que queramos. Si pulsamos F6 el área seleccionada se colocará donde
está el cursor. Presionando F5 el

área se copiará insertándose en dicha posición. Presionando la tecla F2 guardaremos el archivo en disco. Con F10 se saldrá del editor. Por último, para
el desplazamiento del cursor utilizaremos las teclas habituales en todos los editores modernos.

También es posible arrancar el editor iniciándolo directamente junto con un archivo que queramos editar. Su línea de órdenes puede ser una de las dos siguientes:

mc -e NombreArchivo

mcedit NombreArchivo

Donde NombreArchivo es el nombre que queremos dar al archivo si éste no existe o el que tiene un archivo preexistente.

Si bien el editor de mc no es un editor multiventana, se podrían usar múltiples consolas Linux para lograr el mismo efecto. Para copiar texto entre las
diferentes ventanas, debes utilizar las teclas Alt+teclas de función para alternar entre las consolas virtuales y utilizar la tecla f9 para ir a la barra
de menú y, desde allí ir a «Archivo->Insertar archivo» o «Archivo->Copiar a archivo» para mover una porción de un archivo en otro archivo.

Por último, con MC también es posible editar un archivo remoto FTP con el editor del mismo modo que si éste fuese cualquier fichero local en nuestra propia
máquina.

Resumen de teclas rápidas.

Las siguientes son algunas teclas esenciales para este gestor de archivos, no obstante, existen muchas otras. Asimismo, aunque para nosotros no sea demasiado
útil, al menos que alguna persona con resto visual esté siguiendo estas notas, Con el demonio gpm ejecutándose es posible también usar el ratón.

F1: Despliega el Menú de ayuda.

F3: Activa el Visor de archivos interno.

F4: Ejecuta el Editor interno.

F5: Copiar archivos.

F6: Mover archivos.

F7: crear carpeta.

F8: Borrar archivos.

F9: Activa el menú principal desplegable.

F10: Sale del Midnight Commander.

Tab: Se mueve entre los dos paneles del gestor.

Insert: Marcar para operaciones con múltiples archivos.

Supr: Eliminar archivo (hay que ser precabido con esta orden para evitar borrar inadecuadamente)

Teclas de desplazamiento: Permiten el movimiento por los paneles del gestor y por sus menús y submenús.

Cualquier comando cd cambiará el directorio mostrado en los paneles.

Ctrl-Enter o Alt-Intro copiará el nombre de un archivo en la línea de comandos. Utiliza este atajo con los comandos cp o mv.

Alt-Tab cumple la misma función que la tecla TAB en el shell, es decir, completa el comando o ruta tras haber escrito sus primeras letras.

Se puede especificar el directorio inicial para ambas ventanas ingresándolos como argumentos del MC; por ejemplo, mc /etc /root.

Esc + número == Fn (es decir, Esc + `1′ = F1, etc.; Esc + `0′ = F10)

Tecla Esc == tecla Alt(= Meta, M- ); es decir, escribe Esc + `c’ para Alt-c

Bueno, por esta ocasión es todo. Espero que este gestor de archivos pueda servir como facilitador de sus tareas en linux a alguien, aunque como dije más
arriba, no lo considero substitutivo de las líneas de órdenes.

 

Variables del sistema.

Una variable es un pequeño pedazo de memoria que se reservará para determinada función y a la que se le va a asignar un valor, el cual podrá ser: un número,
una ruta de directorios…, etc.) que podrá ser leído, consultado o incluso modificado.

Tenemos tres tipos de variables: De entorno, que forman parte del entorno del sistema, incorporadas, que las proporciona el sistema y no pueden ser modificadas
con un programa o la shell, y de usuario, las cuales sí se pueden modificar por la shell. Un ejemplo de variable es PATH, que los que en alguna ocasión
hayan usado el MS-DOS o el FreeDos ya conocerán, la cual define las rutas que deben ser «miradas» por la shell para buscar órdenes o ejecutables más fácilmente
evitando el tener que teclear complejas vías de acceso.

En una sesión de trabajo las variables de entorno en la shell son referencias a valores. Existen dos tipos: locales y globales: Las locales Se definen en
la Shell actual y solamente son conocidas por esta en la sesión que esté vigente. Las globales, en cambio, son exportadas desde un proceso activo a todos
los procesos hijos.

$ echo $PATH

/bin:/usr/bin:/usr/X11R6/bin:/home/quetzatl/bin

La orden anterior podría estar mostrando un path típico del sistema. Mira con atención el uso del carácter $; el cual Indica el principio del nombre de
una variable shell, ya que, sin él, la orden echo de volvería únicamente la cadena de texto pasada a continuación. De manera que siempre que queramos ver
el contenido de una variable debemos usar el signo $.

Definir Variables:

$ a=gato

La variable tiene un nombre: a, y un valor: gato. Fíjate en que no debe dejar espa-cios entre el nombre, el igual y el valor. Tras haberla definido podremos
usar el valor de esta variable refiriéndonos a ella por su nombre.

Entonces: ¿dónde se podrán utilizar variables de este modo? Pues bien, las podremos utilizar en la ejecución de órdenes desde el indicativo del sistema
(prompt), por ejemplo, o en el uso de scripts de la shell. Pero, hay que tener también muy presente que, las variables de usuario creadas de este modo
solamente funcionan en la shell (o subshell) en que se hayan definido.

Si comprobamos el valor de la variable a=gato que definimos más arriba veremos que está correcto, pero si después lanzamos otro shell y volvemos a hacer
la comprobación podremos advertir que aquí ya no aparece. La variable a solo es visible desde la shell donde se haya definido Ya que es una variable local.

Si queremos o necesitamos conocer las variables disponibles podremos ver una lista de las mismas utilizando la orden env, con la que podremos ver una lista
de variables iniciales del entorno o globales y con la orden set veremos una lista de variables locales.

A fin de cuentas, en cada una de las shell que se vayan abriendo tendremos acceso solamente a las variables locales que tengan definidas. Es muy importante
tener en cuenta esto de cara a la ejecución de aquellos scripts que, por cualquier razón, requieran del uso de una variable determinada.

Exportar el Entorno

Si se diera el caso de necesitar, por cualquier motivo, que una variable sea accesible por programas ejecutados en otras shells, sería imprescindible exportarla.

La solución a este pequeño problema es lo que se conoce como exportar variables. La orden export es capaz de hacer dos cosas:

1.Sin argumentos muestra una lista con las variables exportadas.

2.Convierte las variables (locales) en globales, para que sus valores sean accesibles por cada una de las shell que se genere.

echo $a gato

export a

echo $a gato

Ahora el valor de la variable a podrá ser leído desde otra shell cualquiera o subshell y también por programas que sean ejecutados en ellas.

La exportación del entorno de variables posiblemente lo necesitéis usar bastante más a menudo de lo que seguramente en un principio podríais estar pensando,
pero como se acaba de ver, no es cosa del otro mundo. Para aquellos que hayáis programado en alguna ocasión, el mundo de las variables no os dirá nada
de nuevo, para los que no, espero que no se os haya atragantado demasiado, a fin de cuentas las variables son algo bastante intuitivo.

El proceso init.

El proceso de arranque init de Sys V es el primer proceso que se ejecuta en el sistema, es el más importante, del que dependen el resto de todos los demás
procesos. En el arranque de GNULinux, el núcleo ejecuta init. Este programa, ahora como proceso, cargará los subprocesos necesarios para la puesta en marcha
del sistema. Cuando init

haya terminado de cargarse vaciará el subdirectorio /tmp y lanzará a getty que es el encargado de permitir a los usuarios hacer login en el sistema.

Los niveles de ejecución (también generalmente conocidos por su nombre en inglés, runlevel) determinan los servicios que tendremos disponibles en cada uno
de ellos. Es una forma de tener diferentes modos de trabajo,

cada uno de ellos con distintas características bien definidas, en función del tipo de tarea a que estén orientados.

Existen ocho niveles de ejecución: los nombres de los siete primeros son los números que van del 0 al 6, más un octavo cuyo nombre es la letra S (tiene
un alias con la letra s para evitar problemas con la sensibilidad al caso), este runlevel, en realidad, es igual a el nº 1.

Los niveles de ejecución son tal como siguen:

0: (Detener el sistema).

1: (modo en Mono usuario, sin soporte de red).

2: (modo en Multiusuario, sin soporte de red).

3: (Modo multiusuario completo).

4: (Sin uso. Recomendado para pruebas).

5: (Multiusuario completo en entorno gráfico).

6: (Reinicio del sistema).

Los niveles 0, 1 y 6 son comunes en todas las distribuciones, el resto puede cambiar dependiendo de cada una de las que estemos usando.

Init necesita un fichero de configuración para saber exactamente lo que tiene que hacer. Este fichero es /etc/inittab y contiene información sobre el runlevel
a ejecutar por defecto, previsión sobre lo que hacer ante determinadas situaciones, así como una descripción de qué procesos se han de iniciar en la carga
y durante la operación normal del sistema operativo.

Las entradas del fichero /etc/inittab tienen el siguiente formato:

id:niveles_ejecución:acción:proceso

id: Es la secuencia única de 1 a 4 caracteres que identifican la entrada de inittab.

niveles_ejecución: Lista de niveles de ejecución para los que se llevarán a cabo las acciones definidas a continuación en la misma línea.

acción: La acción que será llevada a cabo.

proceso: El proceso a ejecutar.

Para que una línea sirva para varios niveles de ejecución, el campo niveles_ejecución tiene que incluirlos. Por ejemplo, 135 indica que el proceso se iniciará
en los niveles 1, 3 y 5. Cuando se cambia de un nivel de ejecución a otro, los procesos en ejecución que no estén definidos en el nuevo nivel se matan.
Para ver un ejemplo de esta sintaxis edita el fichero initab con nano o vi tal cual vimos como se hacía en capítulos pasados y examina su contenido cuidadosamente.
Mientras no tengas claro el sistema de runlevel y necesites modificar algo, mi consejo es que no lo toques, simplemente examínalo por curiosidad y para
tu información; este proceso casi nunca será necesario hacerlo.

Las acciones que podemos definir, más habitualmente, en el campo acción son:

initdefault: Especifica el nivel de ejecución por defecto al arrancar el sistema. El campo proceso se ignora.

Respawn: El proceso se reiniciará cuando termine.

once: El proceso se ejecutará una sola vez cuando se entre en el nivel de ejecución especificado.

wait: El proceso se iniciará una vez cuando se entre en el nivel de ejecución e init esperará a su terminación.

boot: El proceso se ejecutará durante el arranque del sistema. El campo niveles_ejecución se ignora.

bootwait: El proceso se ejecutará durante el arranque del sistema, mientras init espera su terminación. El campo niveles_ejecución se ignora.

sysinit: El proceso se ejecutará durante el arranque del sistema, antes que cualquier entrada boot o bootwait. El campo niveles_ejecución se ignora.

powerwait: El proceso se ejecutará si init recibe una señal SIGPWR, que indica algún problema con la alimentación eléctrica. Init esperará que el proceso

termine.

powerfail: Como powerwait, excepto que init no espera a que termine el proceso.

powerokwait: El proceso se ejecutará si init recibe la señal SIGPWR, con la condición de que haya un fichero llamado /etc/powerstatus que contenga la palabra

OK. Esto significará que se ha restablecido la alimentación eléctrica.

ctrlaltdel: Especifica qué proceso se ejecutará al pulsar la combinación de teclas Control+Alt+Suprimir. que normalmente será reiniciar la máquina.

Hay un directorio para cada nivel de ejecución. En cada uno de los directorios figuran las aplicaciones que se inician o se paran con ese nivel de ejecución.
En realidad no están las aplicaciones como tales, sino que tenemos allí enlaces simbólicos hacia ellas. Por ejemplo, para el nivel de ejecución 2, las
aplicaciones están contenidas en el directorio: /etc/rc2.d, y así para todos los demás niveles. Si queremos, por tanto, que una aplicación se inicie al
arrancar en un nivel determinado, hay que crear un enlace simbólico en el directorio correspondiente al nivel de ejecución deseado que apunte al script
encargado de arrancar la aplicación que estará en /etc/init.d que, como supongo acabaréis de recordar, es el directorio donde se situaban los scripts lanzadores
de los daemons o demonios.

Si Observamos atentamente el nombre de los enlaces simbólicos de cada uno de los directorios de nivel de ejecución, Podremos advertir que cada uno de ellos
tendrá el nombre del script al que está asociado. Los que empiecen con una S (S

de start) están indicando que el servicio se iniciará, y los que comiencen con una K (K de kill), están indicando que el servicio se detendrá. El número
que suele aparecer es simplemente una facilidad para poder ordenarlos y que no tiene mayor relevancia.

Lo bueno de este sistema es que, en primer lugar, no se han de repetir los scripts en cada directorio de runlevel, si no que permanecerán en un único lugar
bien definido, el directorio init.d, y en segundo lugar, la modificación a realizar si lanzamos un servicio o no, en un runlevel determinado, es tan sencilla
como cambiar el nombre del enlace al servicio en cuestión. Si queremos que se inicie, por tanto, bastará con asegurarse de que su nombre comience por una
S y en caso contrario, osea que en ese nivel de ejecución no se ofrezca el servicio, pondremos el nombre empezando por una K. Asimismo, otra ventaja resultante
de este método de funcionamiento es el control que tenemos sobre los servicios del sistema, que es independiente del estado en el que estén. Podremos lanzarlos,
detenerlos, reiniciarlos, etc. sobre la marcha, sin necesidad de reiniciar la máquina.

Veamos un ejemplo: si deseásemos lanzar la línea braille en el arranque, imaginando que en nuestro ejemplo El arranque por omisión estuviera en el nivel
2, y lanzar al demonio BRLTTY que controla las líneas braille en el sistema:

Primero decidiremos qué nivel de ejecución queremos utilizar para ello. Si fuera el nivel 2 habría que crear el enlace simbólico en rc2.d el enlace podría
ser algo parecido a lo siguiente: sXbrltty donde la X deberemos substituirla por el número de órden que queramos.

Desde el directorio /etc/rc2.d la orden sería: ln -s ../init.d/brltty sXbrltty

Uno de los scripts más importantes en el arranque del sistema es /etc/rc.d/rc.sysinit. y es el primer script que init ejecuta. En él están definidas funciones
importantes como pueden ser: el inicio y activación del espacio de intercambio. (swap), la configuración de la red, la especificación de las variables
del sistema, la comprobación y montaje de los sistemas de archivos, la inicialización de puertos serie, la carga de los módulos del kernel, el establecimiento
de las cuotas para cada usuario, el ajuste del reloj del sistema, etc.

El último script en ejecutarse es /etc/rc.d/rc.local. En este fichero se podrán poner inicializaciones especificas del sistema, aunque su propósito inicial
es controlar los servicios de red.

init como orden:

Además de todo lo que hemos visto con respecto al proceso init, también podremos ejecutarlo como una orden desde línea de comandos con alguna de las siguientes
opciones:

0, 1, 2, 3, 4, 5, 6: Para cambiar al nivel de ejecución especificado tal cual lo explicamos un poco más arriba.

q: Si queremos que init relea el fichero /etc/inittab.

s: Entra en modo monousuario.

u: Reejecuta init respetando el estado actual. No se relee el fichero /etc/inittab.

La Entrada/Salida y la Redirección.

En cada sesión Unix tres archivos predeterminados son abiertos: estándar de entrada, de salida y de error.

La entrada es el lugar desde donde un comando obtiene la información necesaria de entrada. Habitualmente, por omisión, ésta será el teclado.

La salida es el lugar a donde un comando envía el resultado de su ejecución, por omisión, este lugar será la pantalla).

Error es el lugar donde el sistema operativo envía cualquier mensaje de error que se produzca, por omisión, será la pantalla.

El proceso tal cual lo acabo de describir ahora es conocido habitualmente como entrada/salida estándar. No obstante, este comportamiento es susceptible
de ser modificado, según sean nuestras necesidades, gracias a cuatro tipos de redireccionamiento que emplea la shell:

< (signo menor que): Acepta la entrada de un archivo.

> (signo mayor que): Envía la salida estándar a un archivo.

>> (signo mayor que dos veces): Añade la salida estándar a un archivo.

| (barra vertical): Conecta la salida estándar de un comando con la entrada estándar de otro. Este redireccionamiento es también conocido como tubería o
pipe y es uno de los más usados en linux.

Un ejemplo de esto podría ser el siguiente:

ls -l >ListadoDir1.txt que enviará la lista del directorio al archivo ListadoDir1.txt .

Usando la redirección, la entrada estándar y/o salida estándar podrá ser referenciada desde ficheros con toda la capacidad y potencia que ello ofrece.

Deberá tenerse en cuenta, asimismo, que el uso de > (mayor que) para redireccionar la salida a un fichero que ya exista, es destructivo, es decir, la orden
del ejemplo de antes: ls -l >ListadoDir1.txt sobreescribirá el contenido del fichero ListadoDir1.txt . Si en su lugar, usamos el símbolo >> (doble signo
mayor que), la salida será añadida al final del fichero nombrado, en lugar de ser sobrescrito.

Uso de Tuberías (pipes)

El uso de tuberías (pipes) es la característica de la shell , que nos permite conectar una cadena de órdenes en una tubería, donde la salida estándar de
la primera es enviada directamente a la entrada estándar de la segunda y así sucesivamente. Si quisiéramos conectar la salida de la orden ls con la entrada
de la orden sort. Para crear un pipe se usa el símbolo |:

ls /usr | sort -r

Imaginemos que la salida de las órdenes entubuadas con anterioridad fuera muy grande, podríamos querer añadir a la tubería la orden more para poder examinar
los resultados con comodidad del siguiente modo:

ls /usr | sort -r | more

SERVICIOS

Los servicios, normalmente, en linux se sitúan en un directorio cuya ruta es: /etc/init.d y linux los carga al arrancar si están situados allí.

A los servicios se les llama en linux también demonios (daemons). por tanto, una aplicación de tipo daemon equivale a un servicio de tipo demonio. Todos
los scrips que se encuentran en init.d se consideran demonios (el concepto es similar al de servicio en Windows). Generalmente la mayor parte de estos
servicios son, en realidad, scripts de la shell que arrancan programas colocados en otros sitios dándoles losParámetros requeridos para su correcta ejecución.
Un claro ejemplo suele ser el script para arrancar el daemon BRLTTY que se encarga de leer la consola a través de la línea braille y que, Posiblemente
en futuras lecciones nos introduzcamos ligeramente en él. Si quieres ver los demonios cargados en tu sistema echa un vistazo a su directorio: /etc/init.d

PROCESOS

Un proceso es un programa en ejecución que queda bajo el control de la Shell. GNULinux es multitarea, por lo tanto, asigna intervalos de tiempo a las tareas
según un esquema de prioridades. Cuando la Shell ejecuta un programa se crea un proceso nuevo con un número entre el 1 y 30.000 (PID). Cuando existe Un
proceso que crea a otro se le denomina proceso padre y al creado proceso hijo. Este va a heredar casi la totalidad del entorno del padre (incluyendo las
variables…) pero sólo puede modificar el suyo y no el de su creador. Cada proceso posee también un número de grupo de procesos (PGID).

La orden para saber información sobre los procesos (aplicaciones en ejecución) que están en marcha en un momento determinado: es ps

ps (muestra el número de proceso PID, el terminal, el tiempo en ejecución, y el comando y se refiere a nuestra sesión).

ps -e: muestra información extendida de todos los procesos lanzados en todos los terminales (gráficos y de texto). El tipo de salida por pantalla tendrá
el mismo formato que el anterior.

ps -f Además muestra el PPID proceso padre, uso del procesador y tiempo de comienzo.

ps -j Muestra el PGID.

Normalmente, un proceso padre espera a que finalice uno hijo, devolviéndole el hijo un valor para informarle sobre cómo ha ido la ejecución (si valor=0

-finalizó sin errores; si valor distinto 0 -algo ocurrió). Asimismo, Si un proceso se lanza varias veces, la primera se considera proceso padre y el resto
procesos hijos. La tarea que haría el proceso padre se reparte entre todos los procesos hijos. Si un proceso hijo muere o es matado, es decir, se apaga,
no ocurre ningún problema pero si se para el proceso padre, afectará a todos los procesos hijos

La salida de la orden ps aparece reflejada en columnas con lo siguientes datos:

uid: usuario que lanza el proceso

pid: identificador de procesos. Valor numérico que genera el sistema de forma automática.

ppid: identificador del proceso padre.

stime: la hora en que el proceso fue iniciado.

tty: indica el terminal desde el que se ha lanzado la aplicación. La interrogación se refiere a procesos que no estan

name: nombre de la aplicación que se ha lanzado.

Para ver sólo la línea referente al proceso sobre el que se quiere información se puede utilizar una tubería a la orden grep. Esta órden nos permite especificar
una cadena de caracteres a localizar. Por ejemplo: Para buscar los procesos relacionados con el programa BRLTTY que maneja a la línea braille, el comando
se podría introducir del siguiente modo:

ps -ef | grep BRL lo cual solamente tratará de localizar procesos que contengan la cadena BRL en su nombre.

La orden para detener Un proceso es kill. A esto, habitualmente se le llama matar un proceso y suele hacerse cuando una aplicación se cuelga. Incluso podremos
matar una consola entera desde otra cuando el cuelgue es tal que no nos permite hacer nada en ésa.

Su sintaxis es la siguiente:

kill númeroproceso

Hay que comprobar previamente el número del proceso (PID) con la orden ps tal como lo hemos hecho más arriba. Luego se utilizará el comando kill seguido
de un espacio y el número del proceso que queramos matar. Si, por ejemplo, tuviéramos un terminal bloqueando el sistema, podríamos «matarlo» averiguando
el número del proceso para el terminal: /etc/init.d

ps -ef|grep tty3

Si la respuesta que sale por pantalla fuera:

nombreterminal 2429 1 0 07:37 tty3 00:00:00 -sh

Escribiríamos la orden kill utilizando el número como parámetro: /etc/init.d del modo que sigue:

kill -3 2429

Para matar procesos que están en modo gráfico usaremos la orden xkill

Un proceso que esta corriendo, para el shell, se denomina tarea. Los términos proceso y tarea, son intercambiables. Sin embargo, se suele denominar «tarea»
a un proceso, cuando es usado con el control de tareas, que es una característica del shell que permite cambiar entre las diferentes tareas que puedan
estar corriendo simultáneamente.

En la mayor parte de las ocasiones, como creo haber comentado ya, solamente se suele correr un programa a la vez y, al menos a mí, me resulta más sencillo
abrir un par de terminales y ejecutar un programa por terminal, . Sin embargo, si utilizamos el control de tareas, podremos ejecutar diferentes tareas
a la vez y podremos, asimismo, ir cambiando de una a otra según lo vayamos necesitando.

Pasar tareas a primer Plano y Segundo Plano:

Cada programa que esté corriendo en la shell puede estar trabajando en dos modalidades: o en Primer plano o en Segundo plano. Solo puede haber un proceso
en primer plano al mismo tiempo, pero puede haber tantos en segundo plano como queramos o como la memoria y/o la capacidad del microprocesador nos permita.
el proceso que esté en primer plano, es el que va a interactuar con el usuario, recibiendo la entrada standard, o no, y enviando los resultados de salida,
generalmente a la pantalla caso de que no se haya redirigido la salida.

Los procesos en segundo plano, habitualmente, no van a recibir ninguna señal desde el teclado, es por ello, que se ejecutan en silencio sin necesidad de
interacción.

Todos los procesos pueden ser suspendidos, no se confunda esto con matarlos: Un proceso suspendido es aquel que no se está ejecutando actualmente, sino
que esta temporalmente parado, mientras que se dice que un proceso está muerto, generalmente cuando se pulsa la combinación de teclas Control+c, cuando
es detenido totalmente y eliminado de la memoria de trabajo liberando los recursos del sistema que en ese momento estaba consumiendo. Tras haber suspendido
una tarea, puede indicársele que continúe ejecutándose, tanto en primer plano como en segundo, según sea nuestra necesidad. Reanudar una tarea que haya
sido suspendida no cambia en nada su estado, la tarea proseguirá con su ejecución justo en el preciso lugar en el que había sido detenida.

Si se mata o elimina un proceso, éste no puede continuar ejecutándose, y deberá ser lanzado otra vez para volver a realizar sus tareas. También se puede
dar el caso de que algunos programas estén capturando la interrupción, de modo que pulsando Control+C no conseguimos que se detengan instantáneamente.
Esto ocurre debido a que de este modo se permite al programa realizar operaciones necesarias de limpieza antes de terminar.

De hecho, algunos programas simplemente no se dejan matar por ninguna interrupción.

Envío de tareas a Segundo Plano:

Una forma de mandar procesos a segundo plano es añadiendo un carácter & al final de cada comando.

yes > /dev/null &

Como respuesta, el sistemma nos enviará por pantalla el número del proceso que envió a segundo plano seguido de su pid. Para chequear el estado del proceso,
usaremos la orden interna de la shell jobs:

jobs

[1]+ Running yes >/dev/null &

Esto nos indica que tenemos al proceso 1 corriendo en segundo plano enviando el proceso yes al dispositivo null.

Tenemos una segunda forma de poner una tarea en segundo plano. Lo lanzaremos como un proceso normal, es decir, en primer plano, lo detenemos, y después
lo volvemos a lanzar en segundo plano. Esto es: lanzamos el proceso yes en primer plano con cualquier aplicación en modo normal,

yes > /dev/null

Debido a que yes está corriendo en primer plano, no nos debería mostrar el indicativo de la shell. Seguidamente,en lugar de interrumpir la tarea con Control+C,
suspenderemos la tarea con su combinación de teclas que, habitualmente, suele ser Control+Z. El sistema nos debería dar un mensaje del estilo de : [1]+
Stopped yes >/dev/null ocurrido esto, podemos relanzarla de nuevo en el lugar donde se detuvo pulsando otra vez la combinación Control+z. Si queremos que
la tarea se relance en primer plano, utilizaremos la orden fg tras lo que la shell volverá a mostrarnos el nombre del comando de nuevo, para mostrarnos
el nombre de la tarea que se ha puesto en primer plano. Si en su lugar tecleásemos la orden bg pondríamos la tarea en segundo plano. Esto hará que el comando
siga ejecutándose igual que si lo hubiese hecho desde el principio con & como en la primera manera en que lo hicimos.

Cuando tenemos una tarea en segundo plano deberemos tener en cuenta que si intentamos pararla pulsando Control+Z no funcionará, La solución es poner el
proceso en primer plano de nuevo, con la corden fg, y entonces pararlo.

Si no te interesa ver la salida de cualquier tarea que, estando en segundo plano muestre texto en pantalla, no te olvides de redirigir su salida estándar
hacia eldispositivo /dev/null. Asimismo aclarar que, normalmente, los comandos fg y bg actúan sobre el ultimo proceso parado (indicado por un + (signo
más) junto al numero de tarea cuando utilizamos la orden jobs). Si tenemos varios procesos corriendo a la vez, podremos enviar a primer o segundo plano
una tarea específica indicando el ID de tarea como argumento de fg o bg.

bg %3

para la tarea de segundo plano numero 3. No se pueden usar los ID de proceso con fg o bg. Además de esto, si usas el numero de tarea por si solo, como en:

%2

Es equivalente a:

fg %2

 

Enlaces de ficheros: enlaces duros y enlaces simbólicos.

Enlaces de Ficheros

Los enlaces ofrecen la posibibilidad de dar a un único fichero múltiples nombres. Estos ficheros van a ser identificados mediante el sistema operativo por su numero de inodo, el cual se genera de forma semialeatoria. Solo para ficheros y sólo en particiones linux.

Un inodo es un enlace que resulta el único identificador del fichero para el sistema de ficheros. Un directorio, por tanto, será una lista de números de inodo con sus correspondientes nombres de fichero. Cada nombre de fichero en un directorio es un enlace a un inodo particular.

Enlaces Duros o hard links:

La orden ln es usada para crear enlaces para un fichero.

Usando ls -i, veremos el numero de inodo para el fichero.

# ln fichero creará un enlace para fichero.

ln fichero fhichero2 creará un enlace llamado fichero2 que corresponderá al mismo fichero.

Utilizando ls -i veremos que los dos ficheros tienen el mismo inodo.

# ls -i fichero fichero2

Estos enlaces se denominan enlaces duros (hard links) porque directamente crean el enlace al inodo. También hay que tener en cuenta que solamente podremos crear enlaces duros entre ficheros del mismo sistema de ficheros; los enlaces simbólicos no tendrán este tipo de restricciones. 

Cuando eliminamos un fichero con rm, en realidad, solamente estamos eliminando un enlace a un fichero. Si utilizamos la orden rm fichero Solamente el nombre fichero es eliminado, , fichero2 seguirá existiendo.

Un fichero estará definitivamente eliminado del sistema cuando no queden enlaces a el. En realidad, la norma es que los ficheros tengan solamente un enlace duro.

Un modo de saber cuantos enlaces tiene un fichero es con la orden ls -l Fíjate en la salida estándar por pantalla, la primera columna indica los permisos, como vimos en lecciones pasadas, y una segunda columna con un número te indicará el número de enlaces del fichero, o, si es un directorio, el número de directorios que contiene, en nuestro ejemplo te mostraría lo siguiente:

ls -l fichero fichero2

-rw-r-r- 2 root root 12 Aug 5 16:51 fichero

-rw-r-r- 2 root root 12 Aug 5 16:50 fichero2

un directorio, por tanto, no es otra cosa que un fichero que contiene información sobre la dirección del enlace al inodo. También, cada directorio tiene al menos dos enlaces duros en el: . (punto) enlace que apunta a si mismo y .. (punto punto) enlace que apunta al directorio padre. En el directorio raíz (/), el enlace .. (punto punto) simplemente apunta a /.

Buscar todos los enlaces duros a un fichero.

En ciertas ocasiones puede resultar difícil localizar en que partes del árbol de directorio existen enlaces a determinados archivos. Para encontrarlos lo podemos hacer con la orden find:

find / -inum número

 

Enlaces Simbólicos

Un enlace simbólico permite dar a un fichero el nombre de otro, pero no enlaza el fichero con un inodo, es decir, en realidad lo que hacemos es enlazar directamente al nombre del fichero. Esto podría parecerse bastante a lo que Windows nos tiene acostumbrados.

Con la orden ln -s creamos un enlace simbólico a un fichero. Por ejemplo:

ln -s archivo archivo2

Hay que tener en cuenta que el nombre del enlace simbólico no soporta rutas completas, por lo que para crearlo, será imprescindible situarse dentro del directorio en el que queramos que quede colocado dicho enlace.

Si lo verificamos de nuevo con la orden ls -l vemos que el fichero fichero es un enlace simbólico apuntando a fichero2

ls -l fichero fichero2

Los bits de permisos en un enlace simbólico no se usan (siempre aparecen como (rwxrwxrwx). En su lugar, los permisos del enlace simbólico son determinados por los permisos del fichero apuntado. Asimismo, si el fichero apuntado es eliminado, los enlaces simbólicos permanecen, pero ya no serán válidos y carecerán de sentido.

Los enlaces duros y simbólicos son similares en su funcionamiento, pero hay algunas diferencias. Pueden crearse enlaces simbólicos a un fichero que no esté en el mismo dispositivo de almacenamiento. Los enlaces simbólicos son procesados por el núcleo de forma diferente a los duros, lo cual es solo una diferencia técnica, pero a veces importante. Los enlaces simbólicos son de ayuda puesto que identifican al fichero al que apuntan; con enlaces duros no es tan fácil saber que fichero esta enlazado al mismo inodo.

Aunque en un principio no pudiera parecernos que los enlaces valgan para mucho, el sistema operativo los usa muy a menudo, Los enlaces simbólicos son, por ejemplo, especialmente importantes para las imágenes de las librerías compartidas en /lib, lo que facilita mucho la conexión de los diferentes programas con esas librerías.