Aprendiendo A Usar Linux

Un Blog Sobre Unix – Linux

Hola Mundo en Python

El lenguaje de programación Python fue creado por Guido van Rossum a finales de los años 80. Es un lenguaje orientado a objetos que también es un lenguaje de script, como perl. Los usuarios de linux pueden escribir la instrucción

$ python

para acceder a la consola de mandos del lenguaje, que muestra un mensaje como el siguiente:

Python 2.7.3 (default, Sep 26 2012, 21:53:58) 
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 

Lo más natural es usar la instrucción print para escribir un mensaje en la pantalla. Saludar al mundo es una buena opción, así que, escribir un print ‘Hola, Mundo!’ es lo primero que haremos.

Python 2.7.3 (default, Sep 26 2012, 21:53:58) 
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> print 'Hola, Mundo!'
Hola, Mundo!
>>> 

Este primer programa también puede guardarse en un archivo, que llamaremos de manera descriptiva HolaMundo.py. El nombre es opcional, pero la extensión .py no lo es. A continuación se presenta el programa:

#/usr/bin/python

###############################################################################
#                                                                             #
# Este programa imprime el mensaje "Hola, Mundo"                              #
#                                                                             #
# Ultima modificacion: 10 de febrero de 2014                                  #
###############################################################################

print 'Hola, Mundo'

#FIN DEL SCRIPT

=================================================================================
Ahora vamos a analizar un poco la estructura del programa.
Todos los comentarios en python inician con un # y continúan hasta el siguiente salto de línea. El primer comentario,

#/usr/bin/python

NO es opcional, debe ir siempre al inicio del archivo, y hace referencia a la localización del intérprete de python en los archivos linux.
El recuadro siguiente es un comentario para documentar el programa. Documentar es importante debido a que el lenguaje python no es un lenguaje propio para humanos. Dentro del recuadro se escribe en español lo que hace el programa. En este, como en todos los programas, es una muy buena costumbre comentar.
La siguiente línea es la parte más importante del programa

print 'Hola, Mundo!'

indica, mediante la instrucción print, que lo que está contenido dentro de las comillas sencillas debe imprimirse en la pantalla. De manera natural, esta instrucción imprime un salto de línea al final, por lo cual el cursor aparecerá justo debajo de la línea con el mensaje.
Un último comentario aparece como indicativo de que el programa ha terminado. Esto es sólo una costumbre, usted puede omitirlo y no hay ningún problema.
Para ejecutar nuestro script, basta con escribir en la consola la instrucción

$ python HolaMundo.py

y se producirá finalmente el mensaje:

Hola, Mundo!

El comando wall. Un mesaje a los usuarios del sistema.

El comando wall es usado por el usuario root para alertar a los usuarios acerca de algún evento importante. Por ejemplo

$ wall 
Hola a todos, este es un mensaje de el administrador.
Ctrl + D
$

produce

Broadcast message from root@localhost.localdomain (pts/0) (Wed Apr 17 
21:01:5Hola a todos, este es un mensaje del admnistrador.

en la consola de los usuarios conectados al sistema.

Manual de Latex: Insertando una Figura en Latex

Vamos a considerar el archivo de la entrada anterior. En él escribimos un mensaje simple: Hola, Mundo!. Vamos a suponer ahora que queremos agregar una imagen llamada Pisarro.jpg, la cual está en el mismo directorio que nuestro archivo latex. Tenemos que escribir exactamente el mismo código que antes, solamente agregamos unas líneas, las cuales se indican mediante comentarios en el siguiente código

\documentclass{article}
\usepackage{graphicx} %Esta linea es nueva


\title{Hola Mundo en Latex}
\author{A. U. Thor}

\begin{document}

\maketitle

Hola, Mundo!

%A partir de aqui las lineas son nuevas
\begin{figure}
\begin{center}
\includegraphics[width=3in,angle=0]{Pisarro.jpg}
\caption{\label{fig13b} Una pintura de Durero.}
\end{center}
\end{figure}
%terminan las lineas nuevas

\end{document}

Como en la entrada anterior se comentararon la mayoría de las líneas, en ésta me concentraré en las nuevas.

\usepackage{graphicx} 

El paquete graphicx permite incluir gráficas en nuestro documento. Debe colocarse ésta línea después de la línea \documentclass{} y antes de \begin{document}.

\begin{figure}

Esta línea abre el cuerpo de la figura. Como con las otras instrucciones, se cierra con

\end{figure}
\begin{center}

Esta instrucción centra nuestra figura. Latex no pone las figuras exactamente donde aparece la instrucción, sino en una posición cercana. Por lo pronto, nuestras figuras deberán estar centradas.
Esta instrucción se termina con

\end{center}
\includegraphics[width=3in,angle=0]{HolaMundo.jpg}

Aquí se incluye la figura. Primero se define la anchura, a partir de la cual quedará definida la altura, manteniendo las proporciones originales. A continuación el ángulo de giro, que se mantiene a 90 para dejar la figura en su posición original, pero puede ponerse en cualquier inclinación. Después viene el nombre de la figura con la extensión. Es importante recordar que debe estar en el mismo directorio en el que estamos trabajando, o en su caso especificar la ruta completa.

\caption{\label{fig1} Un saludo en latex.}

Primero necesitamos ponerle una etiqueta a la figura, que en este caso es fig1. Esta etiqueta nos servirá para hacer referencia a ella posteriormente de manera simbólica. Latex numerará automáticamente las figuras. A continuación aparece el caption, o la leyenda que aparecerá debajo de la figura. Para éste caso es el mensaje: “Un saludo en latex”.
Finalmente, a figura insertada se ve como en la siguiente figura:
saludo

Manual de LaTeX: Hola, Mundo! en Latex

En ésta entrada vamos a escribir el primer documento en \LaTeX: un documento que solamente va a contener la frase Hola, Mundo!. Dentro de los archivos generados, se producirá uno como el siguiente, en pdf:

Un Hola, Mundo en Latex.

Un Hola, Mundo en Latex.

Para ésto, es necesario escribir lo siguiente en un editor de textos cualquiera, vi, por ejemplo:

%+++++++++++++++++++++++++++
% Este archivo escribe un  +
% Hola, Mundo! en latex    +
%+++++++++++++++++++++++++++
\documentclass {article}
% Inicio de documento
\title{Hola Mundo en LaTeX}
\author{ A. U. Thor }
\begin{document}
\maketitle 
Hola, Mundo!
\end{document}

El archivo puede tener cualquier nombre, de preferencia HolaMundo, o algo parecido, y debe guardarse con la extensión .tex. Así que HolaMundo.tex puede ser una buena opción.
Ahora vamos a revisar el programa línea por línea:

%+++++++++++++++++++++++++++
% Este archivo escribe un  +
% Hola, Mundo! en latex    +
%+++++++++++++++++++++++++++

Estas tres primeras líneas son un comentario. La razón para colocar comentarios en un documento es hacer claro su propósito. La sintaxis propia del lenguaje puede estar diseñada, más o menos, para que los humanos puedan leerla, sin embargo, esto no es así siempre. Hay que recordar que siempre habrá al menos un lector humano del documento, el propio programador, y por lo tanto es necesario tener una deferencia hacia él, aún cuando sea uno mismo. Con el paso del tiempo es difícil saber qué hace cierto segmento de código.
\TeX pasa por alto todo lo que está en un renglón después de % (este signo inclusive) y hasta el siguiente salto de línea. Todas las líneas que empiezan por %, o la parte de una línea que empieza en un %, son pasadas por alto por \TeX

\documentclass {article}

Al principio de todos los documentos en \LaTeX, se debe especificar qué tipo de documento se va a crear. Existen diversas clases de documentos según el formato que se requiera: articulo, libro, tesis, etc. El más común “article”.

% Inicio de documento

La siguiente lína ya no es desconocida. Es sólo un comentario que indica que estamos al principio del documento. Es totalmente prescindible, sin embargo, en éste punto es ilustrativo. Se puede poner un comentario en cualquier renglón del programa.

\title{Hola Mundo en LaTeX}

Ésta línea indica el título de nuestro documento. Desde luego, entre llaves va el nombre de nuestro artículo. En éste caso es “Hola Mundo en LaTeX”.

\author{ A. U. Thor }

Ésta línea es para especificar el nombre del autor.

\begin{document}

A partir de aquí inicia el documento. Las especificaciones anteriores, nombre del autor, nombre del documento, no imprimen nada. Se genera el documento a partir de ésta línea.

\maketitle

Ésta línea indica que se debe generar el encabezado, el cual, para el tipo de documento article incluye el título del documento, el nombre del autor y la fecha (ver la figura de arriba). La fecha es generada automáticamente por \TeX.

Hola, Mundo!

Aquí va el cuerpo del documento. Todo el texto será escrito aquí. Si el texto ocupa más de una hoja tamañó carta, entonces se generará una segunda. El paginado es automático y aparece debajo de la página al centro.

\end{document}

Aquí se indica el fin del documento.
Para generar el documento:
En la consola tenemos que hacer un llamado a latex como si se tratara de cualquier comando en linux. La mayoría de las distribuciones linux tienen incluido tex y latex.

$ latex HolaMundo.tex

Si no hemos cometido ningún error, se generarán archivos, llamados HolaMundo.aux, HolaMundo.dvi y HolaMundo.log. Por lo pronto, nos interesa el archivo dvi. Dvi significa Device Independent y son archivos que pueden ser leídos directamente por la impresora. Se pueden ver con un visor de dvi, como xdvi, o con okular o cualquier visor de pdf. Es así como ha quedado nuestro documento.

Manual de LaTeX: ¿Qué es LaTeX y para qué sirve?

Latex
\LaTeX es un sistema de creación de textos basado en la tipografía \TeX creado por Leslie Lamport, es muy completo y especializado para la escritura de fórmulas matemáticas y textos científicos en general. Cualquier estudiante de matemáticas que haya tenido la necesidad de escribir fórmulas, piense por ejemplo en la segunda ley de Newton (F= ma) se abrá dado cuenta de lo fastidioso que es usar un editor de oficina (como LibreOffice) para llevar a cabo esa tarea. Como ejemplo, consideremos despejar la aceleración de la ecuación anterior. En un texto plano tendríamos esto:

a = F/m

usando latex, la ecuación se ve así:

\vec{x} = \frac{\vec{F}}{m}

Latex está pensado para hacer ése trabajo más fácil. Sin embargo, no es exclusivo para la escritura de textos técnicos. Debido a que su disponibilidad, estabilidad y a su uso gratuito, muchos tipógragos prefieren mantener sus archivos en éste formato.

¿Qué es \TeX?
Latex es solamente uno de los programas de creación de textos que usa la tipografía Tex. Ésta tipografía fue diseñada por el científico de la computación Donald Knuth. TEx no es un editor de textos o un programa de maquetación. De hecho la maquetación puede hacerse con LATEX.
¿Cuáles son las ventajas de usar\LaTeX?
Los trabajos tienen una calidad profesional.
Es muy fácil escribir ecuaciones.
Existen muchos editores de texto especializados que facilitan aún más el trabajo de captura (Kile, TeXnicCenter, etc)
Es gratis.
¿Cuáles son las desventajas de usar\LaTeX?
En esencia, las personas que inician en el uso de latex, lo encuentran dificil de usar, ya que hay que hacer cualquier cambio escribiendo mucho código. En realidad esta es una ventaja, ya que otorga un gran poder al usuario.
Unos datos curiosos
Para no olviarme de algo que me repitieron muchas veces en la escuela: la segunda ley de Newton \vec{F}=m\vec{a} sólo puede escribirse en ésta forma cuando el sistema es de masa constante. La segunda ley de Newton en cualquier caso es ésta: \vec{F}=\frac{d\vec{p}}{dt}, donde \vec{p} = m\vec{v}
Las versiones de \TeX convergen hacia el valor de \pi, siendo la versión actual 3.1415926.

Un correo electrónico histórico de Linus Torvalds

Éste es un correo electrónico enviado el 25 de agosto de 1991 por Linus Torvalds a un grupo de usuarios del sistema Minix. Se trataba, en sus palabras, de un proyecto discreto. Con el tiempo, linux se convirtió en el kernel del sistema operativo GNU, el proyecto de Richard Stallman que nunca logró desarrollar un núcleo, y llegó a ser sinónimo del propio sistema operativo.

“From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
Newsgroups: comp.os.minix
Subject: What would you like to see most in minix?
Summary: small poll for my new operating system
Message-ID: <1991Aug25.205708.9541@klaava.Helsinki.FI>
Date: 25 Aug 91 20:57:08 GMT
Organization: University of Helsinki

Hello everybody out there using minix – I’m doing a (free) operating system
(just a hobby, won’t be big and professional like gnu) for 386(486) AT clones.
This has been brewing since april, and is starting to get ready. I’d like any
feedback onthings people like/dislike in minix, as my OS resembles it somewhat
(same physical layout of the file-system (due to practical reasons) among other
things).

I’ve currently ported bash(1.08) and gcc(1.40), and things seem to work.

This implies that I’ll get something practical within a few months, and I’d 
like to know what features most people would want. Any suggestions are welcome,
but I won’t promise I’ll implement them :-)
Linus (torvalds@kruuna.helsinki.fi)

PS. Yes – it’s free of any minix code, and it has a multi-threaded fs.

It is NOT protable (uses 386 task switching etc), and it probably never will
support anything other than AT-harddisks, as that’s all I have :-( 

La traducción, tomada de la wikipedia es la siguiente:

Hola a todos aquellos que usan Minix -
 
Estoy haciendo un sistema operativo (gratuito) (solamente una afición,
no será grande ni profesional como el GNU) para clones 386(486) AT. 
Este ha estado gestándose desde abril, y está comenzando a estar listo. 
Me gustaría recibir cualquier comentario sobre las cosas que gustan/disgustan
en minix, ya que mi SO (Sistema Operativo) se le parece un poco 
(la misma disposición física del sistema de archivos, debido a motivos
prácticos, entre otras cosas).
Actualmente he portado bash(1.08) y gcc(1.40), y las cosas parecen funcionar.
Esto implica que conseguiré algo práctico dentro de unos meses, y me gustaría 
saber qué características quiere la mayoría de la gente. Cualquier sugerencia
es bienvenida, pero no prometeré que las pondré en práctica :-)
Linus Benedict Torvalds (torvalds@kruuna.helsinki.fi)
 
PD. Sí – es libre de cualquier código de minix, y tiene un sistema de archivos
multi-hilo. NO es portable (usa 386 una conmutación de tarea etc.), y 
probablemente nunca será soportada por nada más que los discos duros AT, 
porque es todo lo que tengo :-(.
Linus Torvalds

Se ha vuelto famosa una frase que Marshall kirk McKusick, un desarrollador de FreeBSD, atribuyó alguna vez a Linus Torvalds: “Yo no hubiera tenido que crear Linux si no hubiera habido ninguna demanda contra BSD a principios de los 90′s. No hubiera sido necesario”. Verdad o mentira, lo cierto es que FreeBSD ha servido como kernel a la distribución Debian, dando origen a kFreeBSD.
A 22 años del inicio del proyecto, y entre los productos de Apple y los de Microsoft, hay que desearle larga vida a linux.

"De verdad, no estoy tratando de destruir a Microsoft. Este será tan sólo un efecto colateral no intencionado"

“De verdad, no estoy tratando de destruir a Microsoft. Este será tan sólo un efecto colateral no intencionado”


En ésta página algunas líneas del kernel linux 0.01.

El archivo /dev/null

El archivo /dev/null es una caja negra que no contiene ni hace nada. Por ejemplo, la instrucción

$ cat /dev/null

No produce salida o mensaje alguno.
Más bien es utilizado para recibir archivos basura (descartables), o para vaciar archivos mediante redirección:

 ls > /dev/null

Manda la lista de archivos de ls a el archivo /dev/null, con lo cual dicha lista desaparece.

cat /dev/null  > Archivo.Awk

Borra el contenido de Archivo.Awk y lo deja vacío.
No es posible copiar o mover archivos al directorio /dev/null. Un intento por hacerlo produce el siguiente resultado:

[hernandez@localhost Programas]$ mv Archivo.awk /dev/null
mv: ¿sobreescribir «/dev/null»? (s/n) s
mv: falló el movimiento entre distintos dispositivos: de «Archivo.awk» a 
«/dev/null»;
no se puede borrar el objetivo: Permiso denegado

Así visto, puede parecer que su utilidad no es tanta, ya que, después de todo, podemos hacer esas tareas de otra manera. Sin embargo, quienes escriben shell scripts, pueden encontrar una utilidad distinta al archivo /dev/nulll.
Cuando la tarea que hemos intentado no pudo ser hecha, recibimos un mensaje de error. Por ejemplo, si escribimos

$ cat /proc/

en donde intentamos ver el contenido de proc, suponiendo erróneamente que es un archivo, obtenemos un mensaje que dice:

cat: /proc/: Es un directorio

Desde luego, no podemos ver el contenido de un directorio con el comando cat
Cuando escribimos un script, no queremos esos mensajes en la pantalla. ¿Qué se puede hacer?
Escribir la instrucción anterior así

$ cat /proc/ 2>/dev/null

La instrucción incluye un 2, el cual es una abreviación de STDERR (STDIN, STDOUT y STDERR se pueden abreviar con 0, 1 y 2 respectivamente) En caso de ocurrir un error, la salida se dirije al archivo /dev/null, con lo cual desaparece.
Desde luego, podemos hacer uso de un archivo distinto a /dev/null, y redirigir ahí la salida, pero tendríamos que borrar luego dicho archivo. /dev/null es un dispositivo virtual que está pensado para esas tareas.

El Comando uptime

Un dato que puede ser indicativo de la calidad o estabilidad del sistema es el tiempo que la computadora ha pasado encendida sin ser reiniciada. Para ésto tenemos el comando uptime, que presenta, en mi caso, la siguiente salida:

$ uptime
 18:45:32 up  6:26,  3 users,  load average: 0.17, 0.80, 1.12

Se despliegan tres campos:
* La hora actual.
* El tiempo que ha permanecido el equipo conectado ininterrumpidamente. Para mi computadora, son 6 horas y 26 minutos, aunque para un servidor pueden ser muchos días.
* El número de usuarios conectados en el momento.
* Carga del sistema. Ésto es el número promedio de trabajos que se han realizado en los últimos 1, 5 y 15 minutos.
El comando top es similar a uptime, y ambos despliegan información de los archivos /proc. Por ejemplo, la instrucción

cat /proc/uptime

que da como resultado, en mi máquina

25563.82 11758.55

que es el tiempo sin reinicio en segundos.
También es posible ver el promedio de trabajos con la instrucción

cat /proc/loadavg

Secuencias Numéricas Usando Dos Puntos En Perl

En el lenguaje de programación perl, podríamos escribir los números del 1 al 15, usando al forma básica con un arreglo:

#!/usr/bin/perl
#Este script imprime una 
#secuencia de numeros del 1 al 15

print(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15);

O bien, podríamos hacer uso de la forma más económica siguiente, usando el operador de rango ..

#!/usr/bin/perl
#Este script hace uso del operador
#de rango .. para imprimir una 
#secuencia de numeros

print(1..15);

Ambos casos dan como resultado la salida

123456789101112131415

Vamos a revisar cada línea del programa:

#!/usr/bin/perl

Ésa es, como hemos visto, la llamada al intérprete de perl, y debe ir al principio de cada script.

#Este script hace uso del operador
#de rango .. para imprimir una 
#secuencia de numeros

Éstas líneas son unos comentarios, que indican de qué va el programa.

print(1..15);

Ésta línea es la parte importante del script. Un arreglo es un tipo de datos adecuado para almacenar una serie de elementos, creando así una lista. Los elementos de un arreglo son incluidos dentro paréntesis (). Dentro de ésos paréntesis, hemos escrito, en el primer programa, los números 123456789101112131415, en tanto que en el siguiente aparece 1..15. Esos dos puntos se llaman operador de rango. Éste operador funciona tomando el valor de la derecha y sumando 1 sucesivamente hasta alcanzar el valor numérico de la derecha. El siguiente script es un ejemplo de un uso distinto:

#!/usr/bin/perl
#Este script hace uso del operador
#de rango .. para imprimir una 
#secuencia de numeros

print(1,2,3,4..10,11);

Cada elemento del arreglo se separa por medio de una coma. Al llegar al elemento 4, aparece el operador de rango dos puntos, a partir de ahí se imprimen sucesivamente 5,6,7,8,9 y 10.
También es posible usar el operador con literales:

#!/usr/bin/perl
#Este script hace uso del operador
#de rango .. para imprimir una 
#secuencia de valores literales

print("A", "B".."z");

y la salida de éste script es la siguiente:

ABCDEFGHIJKLMNOPQRSTUVWXYZ

La razón de que ocurra ésto es que en el código ASCII, las letras del alfabeto se representan con números consecutivos.

Diagramas de Flujo y Esquemas Utilizando Dia

Dia es una herramienta diseñada para generar diagramas de flujo y en general circuitos: eléctricos, electrónicos, de redes de computadoras, cibertnéticos, UML, etc. Esta una herramienta que no viene incluída por default en la mayoría de las distribuciones linux, pero que viene en los repositorios y es fácil de instalar. En Ubuntu, basta con

sudo apt-get install dia

o en mandriva:

urpmi dia

Dia es lo más cercano a Raptor disponible para todas las distribuciones. Quienes tengan que escribir algoritmos usando diagramas de flujo, encontraran a dia bastante util. Además es posible exportar en formatos de imagen como PostScript, jpg, png, fig y otros.

Diagrama generado con dia


Para crear conectores entre los elementos del diagrama, basta con pulsar la opción línea en el menú y después dar click en el origen y en el destino.
Para crear un conector en zigzag (en forma de z) basta con pulsar la opción línea en zig-zag.
Para crear un conector en forma de L (o en forma arbitraria) basta usar la opción polinínea. Hacer click en el orígen, click en el primer vértice y luego click derecho y seleccionar la opción “Añadir Esquina”.
Aquí una página con un buen Manual de DIA

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

Únete a otros 1.787 seguidores