Capítulo 3. Linux desde la perspectiva de un usuario con más experiencia

Tabla de contenidos

1. Sistemas para preparar documentos
1.1. Lectura: Sistemas para preparar documentos
1.1.1. Impresión y formatos para impresión
1.1.2. LaTeX
1.1.3. Texinfo
1.1.4. DocBook
1.1.5. Uso de CVS
1.2. Lecturas recomendadas: Sistemas para preparar documentos
1.3. Ejercicios: Sistemas para preparar documentos
2. bash y el juego de herramientas
2.1. Lectura: bash y el juego de herramientas
2.1.1. Ayudas interactivas de bash (readline y history)
2.1.2. Algunas herramientas
2.1.3. Redirección y tuberías
2.2. Lecturas recomendadas: bash y el juego de herramientas
2.3. Ejercicios: bash y el juego de herramientas
3. Procesos y tareas
3.1. Lectura: Procesos y tareas
3.1.1. Procesos
3.1.2. Señales
3.1.3. Control de tareas
3.1.4. Tiempo
3.2. Lecturas recomendadas: Procesos y tareas
3.3. Ejercicios: Procesos y tareas
4. Scripts básicos para bash
4.1. Lectura: Scripts para bash
4.1.1. Ejecución de un comando en bash
4.1.2. Ambiente y variables de ambiente
4.1.3. Expansiones
4.1.4. Comandos y programas útiles al hacer scripts
4.2. Lecturas recomendadas: Scripts básicos para bash
4.3. Ejercicios: Scripts básicos para bash
5. Configuración de una sesión
5.1. Lectura: Configuración de una sesión
5.1.1. Una sesión con bash
5.1.2. Una sesión con X-Window
5.1.3. Una sesión con Gnome
5.2. Lecturas recomendadas: Configuración de una sesión
5.3. Ejercicios: Configuración de una sesión

Público y logros

Estudiantes, profesores, secretarias de un colegio y personas que tienen experiencia con Linux y desean aprovechar las herramientas de este sistema ---suponemos que la plataforma de referencia ya está instalada y bien configurada (ver Plataforma de referencia).

1. Sistemas para preparar documentos

Indicadores de Logros

  • Puede examinar e imprimir textos planos y documentos PDF, PostScript y DVI.

  • Puede crear documentos sencillos en LaTeX, Texinfo y DocBook.

  • Genera documentos PDF, PostScript, DVI, info y HTML a partir de fuentes en DocBook, LaTeX y Texinfo.

1.1. Lectura: Sistemas para preparar documentos

En esta guía se presentarán brevemente tres sistemas para preparar documentos: LaTeX, Texinfo y DocBook así como la forma de imprimir textos y los documentos que prepare. Estos sistemas se diferencian de procesadores de texto gráfico en varios aspectos:

  • En estos sistemas se separa el contenido y la estructura del texto de la presentación final.

  • La estructura y el contenido los prepara el autor con un editor de texto usual (e.g emacs o vi), incluyendo "comandos" como parte del texto. La presentación final la realiza el sistema para preparar documentos, aunque el autor puede modificar el comportamiento por defecto de tal sistema y ajustar detalles de la presentación ---sin embargo, la presentación generada por estos sistemas es de calidad profesional.

  • El sistema de documentación emplea la información de la estructura, los textos, los comandos editados por el usuario y algunas reglas sobre tipografía, ortografía y organización del documento para generar un documento apropiado para cierto medio de publicación (e.g. PostScript o PDF para imprimir, o en HTML para consultar en línea).

  • El programa que genera la presentación final, usualmente genera también la tabla de contenido, índices, glosarios y mantiene actualizadas las referencias del documento en sí mismo, así como las citas bibliográficas.

1.1.1. Impresión y formatos para impresión

Para imprimir se emplea el sistema de impresión lpd que permite a cada usuario enviar sus impresiones a una cola de impresiones pendientes que es atendida automáticamente y permite usar tanto impresoras locales (físicamente conectadas a su computador) como remotas (conectadas por intermedio de una red). Para lpd cada impresora tiene un nombre que la identifica, la impresora por defecto comunmente se llama lp [24], aunque si en su caso no funciona pregunte al administrador del sistema.

Aun cuando algunos programas ofrecen menús con una opción para imprimir, prácticamente todos usan en últimas el programa lpr que se encarga de poner la información que debe enviarse a la impresora en una cola de trabajos pendientes [25], que es atendida automáticamente (i.e de ella se envian trabajos pendientes cuando la impresora está disponible) por el programa lpd (ver Impresora).

Posiblemente su sistema esté configurado para permitir a lpr la impresión de textos planos y documentos PostScript o PDF. Para programar la impresión de un texto plano con nombre tarea.txt en la impresora por defecto, puede emplear:

lpr tarea.txt

o eventualmente para especificar una impresora diferente a lp, digamos imp2 use la opción -P:

lpr -Pimp2 tarea.txt

Puede examinar la cola de sus impresiones pendientes con lpq que junto con los nombres de las impresiones pendientes presentará un número que la identifica. Tal número le permitirá cancelar una de sus tareas de impresión pendiente, usándolo como parámetro de lprm.

Para imprimir gráficas y documentos con diversos tipos de letra o colores, primero debe convertirse la información a secuencias de control particulares de su impresora. Cómo de una impresora a otra varian los secuencias de control, en Linux se emplea PostScript (que es un lenguaje apropiado para documentos por imprimir) como formato común y se usan los filtros del programa Ghostscript para traducir de PostScript al formato particular de su impresora [26]. Tal conversión en el caso de PostScript y PDF es realizada normalmente por lpr.

Ghostscript es un programa que puede leer documentos PostScript y PDF [27] y presentarlos en una ventana de X-Window o transformarlos al lenguaje particular de algunas impresoras. Puede experimentar con este intérprete tecleando gs y por ejemplo ingresando la siguiente secuencia de instrucciones en lenguaje PostScript:

100 100
moveto
200 200
lineto
stroke

Para visualizar un documento PostScript o PDF puede emplear el programa gv ---el cual se apoya en Ghostscript--- por ejemplo:

gv micarta.ps

mostrará el documento PostScript micarta.ps en una ventana de X-Window y con menús le permitirá consultarlo e imprimirlo.

Para imprimir y hacer transformaciones a un PostScript (por ejemplo 2 páginas en una sola), o para convertir de otros formatos a PostScript puede emplear el programa a2ps:

a2ps --columns=2 micarta.ps

Tanto PostScript como PDF requieren bastante espacio para describir un documento, usualmente los documentos PDF requieren menos porque mantienen la información comprimida. Para convertir entre PostScript y PDF se emplean ps2pdf y pdf2ps [28]. Para visualizar e imprimir un PDF, además de gv, puede emplear xpdf o el programa Acrobat Reader (acroread).

1.1.2. LaTeX

Tanto LaTeX como Texinfo son extensiones a un sistema llamado TeX, desarrollado para escribir documentos de matemáticas. A continuación se presenta un ejemplo de un documento LaTeX y el resultado que se obtiene tras procesarlo.

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[spanish]{babel}
\begin{document}
\author{Rupertino Gonzales}
\title{Algunas posibilidades de LaTeX}
\maketitle

\section{Elementos}
Puede estructurar el documento en capítulos, secciones, etc.
Este texto es el contenido de la primera sección de este ejemplo, 
puede escribir cada párrafo en líneas consecutivas.

\subsection{Ayudas}
Puede lograr efectos como \emph{Itálicas}, \textbf{negrillas} o 
cambios en el \textsf{tipo o {\small tamaño} de letra} (note 
como se anidaron ambientes en este ejemplo).

Puede crear listas:
\begin{itemize}
\item Primer elemento de lista.
\item Segundo elemento de lista.
\end{itemize}
o tablas
\\
\begin{tabular}{|l|r|} \hline
Título 1 & Título 2 \\\hline
elemento 1 & elemento 2 \\\hline
\end{tabular}
\subsection{Ecuaciones}
LaTeX es un experto en esta materia:
\[ \int_{x=-\inf}^{\inf}e^{-|x|} \]
\end{document}

LaTeX ofrece plantillas para varios tipos de documentos: artículo, reporte, libro y ofrece el concepto de ambiente para indicar como presentar cierta información de acuerdo a la plantilla. En el ejemplo presentado, el tipo de documento es artículo (lo indica la línea documentclass{article}), y uno de los ambientes empleados es tabular, que genera una tabla.

Una vez edite un documento puede procesarlo con LaTeX para obtener un archivo DVI, por ejemplo para generar el archivo documento.dvi a partir de documento.tex:

latex documento.tex

El archivo DVI es apropiado para imprimir, puede imprimirlo con un comando como dvilj, dvidj o un nombre análogo que corresponda a su impresora [29]. Para visualizar un archivo DVI puede emplear el comando xdvi:

xdvi documento.dvi

y para convertirlo a PostScript puede emplear dvi2ps:

dvi2ps -c documento.ps documento.dvi

A continuación se presenta como se ve el ejemplo de esta sección con el programa xdvi.

Visualización de DVI generado de 
		  fuente en LaTeX

Existen además otros programas para convertir de LaTeX a HTML como latex2html y HeVeA. Puede encontrar más información de latex2html en http://ctan.tug.org/ctan/tex-archive/support/latex2html/ y de HeVeA en http://pauillac.inria.fr/hevea/.

1.1.3. Texinfo

Texinfo es otra extensión a TeX, orientada a documentos técnicos. Además de poder generar un DVI para imprimir, puede generar documentación en formato info (ver Búsqueda y consulta de documentación) y HTML para consultar en su computador o en Internet. A continuación se presenta un documento en Texinfo y el resultado que se ve desde un navegador, desde los programas info y xdvi.

HTML generado de fuente Texinfo
@settitle Dos frases
@titlepage
@title Dos frases
@author De Henry David Thoreau
@end titlepage
@setchapternewpage off

@ifnottex
@node Top, La primera frase, (dir), (dir)
@top Dos frases
De Henry David Thoreau
@menu
* La primera frase::
* La segunda frase::
@end menu
@end ifnottex

@node La primera frase, La segunda frase, Top, Top
@chapter La primera frase

@quotation
Bajo un gobierno que encarcela  injustamente, el verdadero lugar para un
hombre justo es también una cárcel.
  @flushright
  Henry David Thoreau en "On the Duty of Civil Disobedience".
  @end flushright
@end quotation

@node La segunda frase,  , La primera frase, Top
@chapter La segunda frase

@quotation
Aquellos quienes, mientras desaprueban el  carácter de las medidas de un
gobierno,  le entregan  su  fidelidad y  soporte  son sin  duda sus  más
conscientes apoyos,  y así frecuentemente  los más serios  obstáculos 
para reformar.
  @flushright
  Henry David Thoreau en "On the Duty of Civil Disobedience".
  @end flushright
@end quotation

@bye

Para generar el archivo info a partir de un archivo Texinfo con nombre doc.texi:

makeinfo doc.texi

para generar el HTML:

      makeinfo -html doc.texi
     

y para generar el archivo DVI a partir de doc.texi:

texi2dvi doc.texi

A continuación se presenta el mismo documento de ejemplo de esta sección visto desde xdvi.

DVI generado de fuentes 
		      Texinfo visto con xdvi

La versión de Texinfo disponible en Debian 2.2 no maneja del todo bien caracteres del español (vocales tildadas, eñe y diéresis), en particular texi2dvi. Puede sobrellevar el problema cambiando caracteres de español antes de usar texi2dvi por: @'a, @'e, @'{i}, @'o, @'u, @\"u, @~n (y sus versiones en mayúsculas). Esto puede hacerse automáticamente con un script y generar nuevos archivos (digamos con extensión .texes) que pueden ser pasados a texi2dvi (si una de las fuentes usa @include debe también renombrarse la extensión del archivo incluido a .texes).

1.1.4. DocBook

DocBook es un formato que tiene algún parecido con HTML pues ambos provienen de un ancestro común (el estándar para documentos SGML). A continuación se presenta un ejemplo:

<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook V3.1//EN">
<article lang="es" id="ejemplo">
 <artheader>
  <title>Un ejemplo de DocBook</title>
  <abstract>
   <para>Nociones básicas de DocBook.</para>
  </abstract>
  <author>
   <firstname>Tomás</firstname><surname>Ramírez</surname>
  </author>
  <date>2 de Septiembre de 2001</date>
  <address>tomas.ramirez@dominio.org</address>
 </artheader>
 
 <sect1 id="idsec1">
  <title>Título de la sección</title>
  <sect2 id="idsec1.1">
   <title>Título de subsección</title>
   <para>Los textos se encierran entre marquillas que indican como
    debe presentarse el texto, las marquillas se abren con &lt;nombre_marq>;
    y se cierran con &lt;/nombre_marq>, por ejemplo la marquilla &lt;para> 
    se emplea antes de iniciar un párrafo, y el párrafo debe cerrarse con
    &lt/para>. Otro ejemplo de tag es &lt;programlisting>, cuyo efecto
    se presenta a continuación:</para>
<programlisting>
int main() 
{
	  int n,k;
}
</programlisting>
  </sect2>
  <sect2 id="idsec1.2">
   <title>Título de la segunda subsección</title>
   <para>Pueden emplearse  varios tipos de documentos, este es
    un ejemplo de un artículo. Cada documento puede estructurarse
    en capítulos, secciones, subsecciones.</para>
  </sect2>
 </sect1>
</article>

Los textos se encierran entre marquillas que indican como debe presentarse el texto, las marquillas se abren con <nombre_marq> y se cierran con </nombre_marq>, por ejemplo la marquilla <para> se emplea antes de iniciar un párrafo, y el párrafo debe cerrarse con </para>. Otro ejemplo de tag es <programlisting>, que permite mostrar una porción de texto en un tipo de letra diferente (apropiada para preentar programas).

int 
main() {                                    
	int n,k;
}                                                                     

Pueden emplearse varios tipos de documentos, este es un ejemplo de un artículo. Cada documento puede estructurarse en capítulos, secciones, subsecciones.

Suponiendo que edita el ejemplo en un archivo ejdb.sgml, y que en su sistema ya está instalado el paquete sgmltools-2, podrá generar un PostScript con:

sgmltools -b ps ejdb.sgml
DVI generado de fuentes DocBook

Otra posibilidad para generar HTML y PostScript a partir de documentos en DocBook (SGML o XML) se presentan brevemente en otra sección (ver Localización y configuración de algunos programas). Para aprender DocBook recomendamos de forma especial el Tutorial de DocBook:Un enfoque integrado y a través de ejemplos

1.1.5. Uso de CVS

Eventualmente deseará crear documentos de forma colaborativa con otras personas que tengan acceso a la red de su colegio. Precisamente para esa labor, existe CVS que controla las versiones de los archivos tipo texto de un directorio (que en terminología de CVS es un módulo), ofrece un mecanismo para que varias personas trabajen simultaneamente sobre la misma información y para detectar conflictos y permitir al usuario que lo genera, resolverlo (conflicto se refiere a dos ediciones diferentes de una misma porción de texto).

Para desarrollar en grupo con CVS basta tener en cuenta:

  1. Hay un repositorio central donde está la copia "oficial" más actualizada. (puede ver como crear el repositorio e importar un módulo en la sección sobre Servicio CVS). Usted ha configurado las variables de ambiente (ver Ambiente y variables de ambiente) CVSROOT y CVS_RSH con la localización del repositorio y el programa para ingresar a la máquina donde está. Las posibilidades son:

    • Si el repositorio está en la misma máquina en la que usted está trabajando en, digamos en el directorio /var/cvs:

      export CVS_RSH=""
      export CVSROOT=/var/cvs
      

    • Si el repositorio está en un directorio en otra máquina, y la otra máquina tiene un servidor ssh o rsh (ver telnet y ssh) y usted tiene cuenta en esa máquina (o su clave pública ssh está autorizada en alguna cuenta de esa máquina, ver Servicio ssh). Suponiendo que la otra máquina es purpura.micolegio.edu.co, que cuenta con ssh , que el repositorio está en el directorio /home/pepe/cvs, y que en esa máquina usted puede usar con ssh la cuenta pepe:

      export CVS_RSH=ssh
      export CVSROOT=pepe@purpura.micolegio.edu.co:/home/pepe/cvs
      

    • Si el repositorio está en un directorio de otra máquina, el protocolo pserver de CVS funciona en esa máquina y usted tiene una cuenta en esa máquina o está autorizado para usar pserver en el repositorio:

      export CVS_RSH=""
      export CVSROOT=:pserver:pepe@purpura.micolegio.edu.co:/home/pepe/cvs
      cvs login
      

  2. Cada desarrollador debe obtener una copia de ese repositorio y dejarla en su cuenta para trabajarla. Esto es hacer un checkout, por ejemplo para obtener una copia local del módulo quimica:

           cvs checkout quimica
    

    En lugar de checkout puede emplear co. Si lo requiere puede pasar opciones generales a CVS antes de checkout (como -z3 que indica transmitir información comprimida):

    	cvs -z3 co quimica
    
  3. Cada desarrollador con alguna frecuencia debe actualizar su copia local con respecto a la del repositorio central, para mantener al dia su copia con los cambios más recientes introducidos por otras personas. Esto es hacer un update (es importante que lo haga antes de comenzar a hacer cambios a su copia local). Por ejemplo puede usar:

           cvs -z3 update -Pd
    

    Note que en este comando la opción -z3 es una opción general de CVS, mientras que -Pd es particular a update (indica que no deben agregarse a la copia local directorios que estén vacios en el repositorio).

  4. Cada desarrollador trabaja en su copia personal, y cuando completa una parte del trabajo (mejor asegurandose de no introducir errores), publica la actualización junto con un comentario (en el siguiente ejemplo es "Ortografía corregida"):

           cvs commit -m "Ortografía corregida"
    

    Eventualmente al intentar esta operación, si otro usuario realizó una actualización primero que tiene alguna diferencia con respecto a los cambios que se quieren agregar, CVS detecta el conflicto, modifica el archivo para resaltar los conflictos y permite solucionar el conflicto antes de repetir esta operación. Por ejemplo un conflicto puede verse como:

    <<<<<<1.3                                                                  
    la presion interna de un gas es directamente proporcional a su temperatura.
     -------                                                                   
    La presión interna de un gas es inversamente proporcional a la temperatura
    >>>>>>
    

    Para solucionar el conflicto elimine las líneas que CVS agregó y deje la versión más precisa (o mezclelas), para este caso sólo quedaría:

    La presión interna de un gas es directamente proporcional a la temperatura.
    

1.2. Lecturas recomendadas: Sistemas para preparar documentos

  • Si está interesado en PostScript puede consultar en Internet esta guía de libre redistribución: A first guide to PostScript.

  • LaTeX

    • En su sistema Debian puede consultar un índice de documentación relacionada con LaTeX en el directorio /usr/doc/texmf en particular puede consultar el archivo index.html. De los documentos disponibles sugerimos de forma especial "Essential LaTeX" e "Introduction to LaTeX2e".

    • En Internet puede consultar más sobre LaTeX y TeX en el completo FAQ del grupo de usuarios del Reino Unido: http://www.tex.ac.uk/cgi-bin/texfaq2html y en español en el sitio del proyecto CervanTeX: http://lucas.hispalinux.es/CervanTeX/CervanTeX.html. De igual forma en sus sistema puede consultar la ayuda de LaTeX (Ver info latex))

    • El libro clásico sobre LaTeX es de Leslie Lamport (autor de LaTeX): "LaTeX - A document preparation System - User's guide and reference manual", Addison-Wesley, 1985. El libro clásico sobre TeX es de Donald Knuth (autor de TeX): "The TeX Book", Addison-Wesley, 1986.

  • Texinfo

  • DocBook

1.3. Ejercicios: Sistemas para preparar documentos

1.3.1.

En el directorio /usr/local/share/doc/AA_Linux_colegio de su sistema encontrará una versión en PostScript de estas guías. Copiela a su directorio, examínela con el programa apropiado y después conviértala a PDF.

1.3.2.

Transcriba uno o varios de los ejemplos presentados en este capítulo y genere a partir del mismo un documento para imprimir y/o consultar en Internet.

1.3.3.

Opcional: El editor emacs cuenta con modos especiales para editar LaTeX (Ver (info emacs)), Texinfo (Ver (info texinfo)) y DocBook (ver "Tutorial de DocBook: Un enfoque integrado y a través de ejemplos"). Experimente con alguno de estos modos para escribir un documento.

1.3.4.

Opcional: estas guías están escritas en DocBook, puede usar las fuentes tanto para aprender DocBook como para mejorar este documento. Encuentra las fuentes en el sitio de distribución: http://structio.sourceforge.net/guias/AA_Linux_colegio/.

1.3.5.

Opcional: el tutorial de DocBook citado en las lecturas recomendadas está escrito en DocBook, puede emplear las fuentes para aprender más sobre DocBook. Las encuentra en el sitio de distribución: http://lucas.hispalinux.es/Tutoriales/DOCBOOK/



[24] Puede configurar otro nombre para la impresora por defecto en la variable de ambiente PRINTER (ver Ambiente y variables de ambiente).

[25] La cola de sus trabajos de la impresora lp está en el directorio /var/spool/lpd/lp.

[26] Hay algunas impresoras que pueden imprimir PostScript directamente, pero en general para hacer la traducción de PostScript al lenguaje de una impresora se requiere un filtro que el administrador del sistema debe configurar (see Impresora).

[27] PDF (Portable Document Format es otro lenguaje para impresión, de documentos con gráficas y diversos tipos de letras, basado en PostScript (de la misma compañía ---Adobe).

[28] De acuerdo a Printig-HOWTO estas herramientas ofrecen la funcionalidad de las herramientas "distiller" de Adobe.

[29] Puede ver una lista de posibles programas que le permitan imprimir, tecleando dvi desde un intérprete de comandos y presionando Tab dos veces (ver Lectura Scripts básicos para bash)