martes, 1 de mayo de 2007

LINUX


INTRODUCCIÓN

La mayor parte de los ordenadores que existen en la actualidad están diseñados de forma que puedan ejecutar diversas tareas o programas. Estos programas pueden ir desde un procesador de textos, a un programa para la animación de gráficos tridimensionales o distintos tipos de juegos

Para su correcto funcionamiento deben ser además capaces de acceder a las recursos de que dispone el ordenador, como por ejemplo escribir o leer datos en un disco duro, mostrar un gráfico por pantalla, etc. Es evidente, que si cada programa actuase de una forma independiente, existirían graves problemas y conflictos, puesto que, por ejemplo, tendrían libertad para escribir sus datos sobre los de otro, etc.

Para solucionar este tipo de problemas se desarrollaron los Sistemas Operativos, los cuales aportan unos mecanismos y reglas básicas de funcionamiento, de forma que los programas puedan acceder a los recursos del ordenador de una forma adecuada. Aunque ésta fue la funcionalidad inicial de los sistemas operativos, con el tiempo se han añadido otras muchas, como la ejecución de programas, el control de la memoria del ordenador, la creación y control de interfaces gráficas de usuario, etc.

En la actualidad existen una gran cantidad de sistemas operativos dependiendo del tipo de ordenador en el que se va a ejecutar. Por ejemplo para los PC uno de los sistemas operativos más difundidos en Microsoft Windows, tanto en las versiones 95, 98, 2000 y NT 4.0. Otros posibles sistemas operativos para este tipo de ordenadores son Solaris, OS/2,
BeOS, Microsoft DOS, o uno de los sistemas operativos más poderosos y en rápida expansión para PC, LINUX.

¿QUÉ ES LINUX?

Linux es un sistema operativo gratuito y de libre distribución inspirado en el sistema Unix, escrito por Linus Torvalds con la ayuda de miles de programadores en Internet. Unix es un sistema operativo desarrollado en 1970, una de cuyas mayores ventajas es que es fácilmente potable a diferentes tipos de ordenadores, por lo que existen versiones de Unix para casi todos los tipos de ordenadores, desde PC y Mac hasta estaciones de trabajo y superordenadores. Al contrario que otros sistemas operativos, como por ejemplo MacOS (Sistema operativo de los Apple Macintosh), Unix no está pensado para ser fácil de emplear, sino para ser sumamente flexible. Por lo tanto Linux no es en general tan sencillo de emplear como otros sistemas operativos, aunque, se están realizando grandes esfuerzos para facilitar su uso. Pese a todo la enorme flexibilidad de Linux y su gran estabilidad ( y el bajo coste) han hecho de este sistema operativo una opción muy a tener en cuenta por aquellos usuarios que se dediquen a trabajar a través de redes, naveguen por Internet, o se dediquen a la programación. Además el futuro de Linux es brillante y cada vez más y más gente y más y más empresas (entre otras IBM, Intel, Corel) están apoyando este proyecto, con lo que el sistema será cada vez más sencillo de emplear y los programas serán cada vez mejores.

¿Qué son las distribuciones?

Una de los primeros conceptos que aparecen al iniciarse en Linux es el concepto de distribución. Una distribución es un agrupamiento del núcleo del sistema operativo Linux (la parte desarrollada por Linus Torvalds) y otra serie de aplicaciones de uso general o no tan general. En principio las empresas que desarrollan las distribuciones de Linux están en su derecho al cobrar una cierta cantidad por el software que ofrecen, aunque en la mayor parte de las ocasiones se pueden conseguir estas distribuciones desde Internet, de revistas o de amigos, siendo todas estas formas gratuitas y legales


Las distribuciones más conocidas son RedHat, Debian, Slackware, SuSE y Corel Linux, todas ellas incluyen el software más reciente y empleado lo cual incluye compiladores de C/C++, editores de texto, juegos, programas para el acceso a Internet, así como el entorno gráfico de Linux: X Windows.

A lo largo de este manual se considerará la distribución de Linux más extendida en la actualidad: RedHat 6.0. Aunque la mayor parte de la información debe ser válida para el resto de las distribuciones, existen determinadas opciones que están sujetas a cambio como el sistema de instalación del sistema operativo.
Entorno de trabajo: el shell y X Windows

Al contrario que otros sistemas operativos, por defecto el trabajo con Linux no se realiza de una forma gráfica, sino introduciendo comandos de forma manual. Linux dispone de varios programas que se encargan de interpretar los comandos que introduce el usuario y realiza las acciones Oportunas en respuesta. Estos programas denominados shell son el modo típico de comunicación en todos los sistemas Unix incluido Linux. Para muchas personas el hecho de tener que introducir los comandos de forma manual les puede parecer intimidante y dificultoso, aunque como se verá más adelante los comandos de Linux son relativamente simples y muy poderosos.

No obstante, casi todas las distribuciones más recientes incluyen el sistema X Window (no X Windows), el cual es el encargado de controlar y manejar la interfaz de usuario. Como se verá más adelante X Window es mucho más poderoso que otros entornos similares como Microsoft Windows, puesto que permite que el usuario tenga un control absoluto de la representación de los elementos gráficos.

Usuarios y grupos

Linux es un sistema operativo multitarea y multiusuario. Esto quiere decir que es capaz de ejecutar varios programas (o tareas) de forma simultánea y albergar a varios usuarios de forma simultánea. Por lo tanto, todos los usuarios de Linux deben tener una cuenta de usuario en el sistema que establezca los privilegios del mismo. A su vez Linux organiza a los usuarios en grupos de forma que se puedan establecer privilegios a un determinado grupo de trabajo, para el acceso a determinados archivos o servicios del sistema.
INSTALACIÓN

Al contrario que lo que ocurre con Microsoft Windows la instalación de Linux no es un proceso sencillo, puesto que Linux permite el control y la personalización de una cantidad mayor de parámetros y opciones. Pese a todo se están realizando grandes progresos buscando que la instalación de Linux sea un proceso lo menos traumático posible, dependiendo la sencillez de la misma de la distribución que se emplee. Por el momento la distribución más sencilla de instalar es Red Hat y aquellas que derivan de esta (Linux Mandrake,…).

Pese a todo antes de proceder a instalar Linux es necesario tener en cuenta una serie de aspectos fundamentales. El primero de ellos es leer la información que contiene el CD de la instalación, esta información puede aparecer de dos formas distintas, los llamados HOWTO o en forma de manuales desarrollados para la distribución. El problema fundamental en todos los casos es que la mayor parte de esta información (aunque no toda) se encuentra en inglés. La distribución de RedHat incluye un manual de instalación de Linux en HTML en la que se explica con todo lujo de detalles cómo se realiza ésta y que es conveniente leer y comprender antes de proceder a realizar la instalación

Uno de los conceptos principales a tener en cuenta antes de la instalación es el de partición. Cada sistema operativo organiza la información de los ficheros que contiene de forma diferente, utilizando cada uno su propio sistema de archivos. Como referencia se indica a continuación el nombre del sistema de archivos de diferentes sistemas operativos.

Sistema Operativo Sistema de archivos
MS-DOS FAT
MS Windows 95 VFAT
MS Windows 95 OSR2 y Windows 98 FAT32
MS Windows NT NTFS
IBM OS/2 Warp HPFS
Linux Ext2

Esto en general impide que se puedan instalar varios sistemas operativos mezclados en un mismo disco duro. Para solucionar este problema existen las llamadas particiones con las que se divide un determinado disco duro de forma que pueda contener ambos sistemas de archivos. A todos los efectos realizar una partición es equivalente a que el disco duro se divida en dos (aunque por supuesto no se divide de una forma física).

Los problemas fundamentales al instalar Linux provienen de que en la mayor parte de las ocasiones el usuario desea conservar Windows y todos los programas para este sistema. En la actualidad existen varias distribuciones que permiten la instalación de Linux en un sistema de archivos de Windows, bien en lo que se denomina un disco imagen (un fichero muy grande), de las distribuciones Corel Linux y Linux Mandrake 6.1, o directamente en el sistema de archivos de Windows (WinLinux 2000). No obstante para obtener un buen rendimiento es preferible instalar Linux sobre una partición diferente de la de Windows empleando el sistema de archivos propio de Linux, por lo que suele ser necesario realizar una partición del disco duro (Habitualmente Windows se apropia de la totalidad). Hasta épocas recientes esta división suponía la pérdida irremediable e inevitable de toda la información que contuviese el disco duro. En la actualidad las distribuciones de Linux incluyen una pequeña utilidad llamada fips que permite dividir el disco duro sin Información. Antes de utilizar fips es muy importante leer la información que se adjunta con el programa. Tras emplear fips se habrá reducido el tamaño de la partición de Windows y se habrá creado una nueva para ser utilizada durante la instalación de Linux.

Durante el proceso de instalación de Linux habrá que borrar la partición creada con fips y sustituirla por las particiones que va emplear Linux. (Mucho cuidado en no borrar la partición donde resida Windows, puesto que en ese caso se perderá TODA la información de forma permanente).

Otro de los puntos a tener en cuenta es cómo se quiere arrancar Linux si existe Windows, la forma más sencilla es instalar LILO, un programa que se encarga de arrancar ambos sistemas operativos según lo que indique el usuario al arrancar el PC. Los problemas surgen si hay que reinstalar Windows de nuevo, puesto que éste sistema operativo asume el control del PC y el sistema de arranque eliminando LILO (e impidiendo arrancar Linux). Otra forma muy sencilla es emplear el disquete de arranque que se crea durante la instalación. Por último una de las formas más sencillas de ejecutar Linux es creando un menú de arranque en Windows y empleando el programa LoadLin desde MS-DOS, para más información sobre este último método de arranque se recomienda la lectura del mini-HowTo loadlin que suele acompañar a la documentación de Linux.

Por último existe otro concepto fundamental a la hora de instalar y usar Linux que es el de Super Usuario o usuario root. Este usuario es el administrador del sistema y se crea durante la instalación. Como administrador que es puede acceder y modificar (así como destruir) toda la información del sistema, por lo que hay que evitar en la medida de lo posible trabajar como usuario root.

INICIACIÓN A LINUX

Existen dos formas de acceder a un sistema Linux:

A través de una consola de texto, el usuario se conecta directamente al ordenador que tiene instalado Linux y accede mediante un sistema no gráfico.

Desde un gestor de sesiones gráfico (X Window), el usuario se conecta directamente al ordenador que tiene instalado Linux y accede al sistema mediante un programa gráfico.
Entrada y salida del sistema

En cualquiera de los casos en la pantalla aparecerá (más o menos) lo siguiente:
Login: (Se teclea el nombre del usuario)Password: (Se teclea la contraseña, que no se ve en la pantalla)Por motivos de seguridad la contraseña debe cumplir ciertas condiciones tales como:

Contener al menos seis caracteres.

Contener al menos un carácter numérico o especial y dos alfabéticos.

Ser diferente del nombre de login.

La primera vez que se accede al sistema la contraseña empleada será la proporcionada por el administrador del sistema. Existen diversas formas para terminar la sesión de trabajo en Linux, dependiendo de si estamos en modo gráfico o de texto.
En modo texto:

Presionar las teclas d


Escribir el comando exit.

La salida de X Window depende del gestor de ventanas que se esté ejecutando y se explicará más adelante.
ESTRUCTURA DEL SISTEMA DE ARCHIVOS DE LINUX
Archivos: Tipos

La base del sistema de archivos de Linux, es obviamente el archivo, que no es otra cosa que la estructura empleada por el sistema operativo para almacenar información en un dispositivo físico como un disco duro, un disquete, un CD-ROM o un DVD. Como es natural un archivo puede contener cualquier tipo de información, desde una imagen en formato PNG o JPEG a un texto o una página WEB en formato HTML,… El sistema de archivos es la estructura que permite que Linux maneje los archivos que contiene.

Todos los archivos de Linux tienen un nombre, el cual debe cumplir unas ciertas reglas:

Un nombre de archivo puede tener entre 1 y 255 caracteres.

Se puede utilizar cualquier carácter excepto la barra inclinada / y no es ecomendable emplear los caracteres con significado especial en Linux, que son los siguientes: = \ ^ ~ ' " ` * ; - ? [ ] ( ) ! & ~ < >. Para emplear ficheros con estos caracteres o espacios hay que introducir el nombre del fichero entre comillas.

Se pueden utilizar números exclusivamente si así se desea. Las letras mayúsculas y minúsculas se consideran diferentes, y por lo tanto no es lo mismo carta.txt que Carta.txt ó carta.Txt

Como en Windows, se puede emplear un cierto criterio de "tipo" para marcar las distintas clases de ficheros empleando una serie de caracteres al final del nombre que indiquen el tipo de fichero del que se trata. Así, los ficheros de texto, HTML, las imágenes PNG o JPEG tienen extensiones .txt .htm (o .html), .png y .jpg (o .jpeg) respectivamente.
Pese a esto Linux sólo distingue tres tipos de archivos:

Archivos o ficheros ordinarios, son los mencionados anteriormente.

Directorios (o carpetas), es un archivo especial que agrupa otros ficheros de una forma estructurada.

Archivos especiales, son la base sobre la que se asienta Linux, puesto que representan los dispositivos conectados a un ordenador, como puede ser una impresora. De esta forma introducir información en ese archivo equivale a enviar información a la impresora. Para el usuario estos dispositivos tienen el mismo aspecto y uso que los archivos ordinarios.


Enlaces

Los enlaces son un tipo de archivo ordinario cuyo objetivo es crear un nuevo nombre para un archivo determinado. Una vez creado el enlace simbólico éste permite acceder al fichero que enlaza de igual modo que si se hubiera copiado el contenido del mismo a otro fichero, con la ventaja de que este realmente no se ha copiado. Los enlaces simbólicos son especialmente útiles cuando se quiere que un grupo de personas trabajen sobre un mismo fichero, puesto que permiten compartir el fichero pero centralizan las modificaciones.

Como ejemplo se puede suponer la existencia de un fichero llamado balance.1999.txt, al que se crea un enlace simbólico balance.txt. Cualquier acceso a balance.txt es traducido por el sistema de forma que se accede al contenido de balance.1999.txt.


El camino o Path

En cualquier sistema operativo moderno la estructura de archivos es jerárquica y depende de los directorios. En general la estructura del sistema de archivos se asemeja a una estructura de árbol, estando compuesto cada nudo por un directorio o carpeta, que contiene otros directorios o archivos.

En Windows cada unidad de disco se identifica como una carpeta básica que sirve de raíz a otras, y cuyo nombre es especial a:, c:, d: etc. En los sistemas Unix, y por lo tanto en Linux, existe una única raíz llamada / de la que cuelgan todos los ficheros y directorios, y que es independiente de qué dispositivos estén conectados al ordenador. El camino o path de un fichero o directorio es la secuencia de directorios que se ha de recorrer para acceder a un determinado fichero separados por /. Supongamos la estructura de archivos de la
Figura 2.






· Existen dos formas del path o camino:

· El camino absoluto que muestra toda la ruta a un fichero, /home/luis/Carta.txt.

· el path relativo a un determinado directorio, por ejemplo si no encontramos en el directorio /home, el path relativo al fichero Carta.txt es luis/Carta.txt
Para complicar aun más las cosas, todos los
directorios contienen dos directorios especiales:

· El directorio actual, representado por el punto.

· El directorio padre representado por dos puntos.




Estructura del sistema de archivos de Linux


El sistema de archivo de Linux sigue todas las convenciones de Unix, lo cual significa que tiene una estructura determinada, compatible y homogénea con el resto de los sistemas Unix. Al contrario que en Windows o MS-DOS el sistema de archivos en cualquier sistema Unix no está ligado de una forma directa con la estructura del hardware, esto es, no depende de si un determinado ordenador tiene 1, 2 o 7 discos duros para crear las unidades c:\, d:\ o m:\.

Todos el sistema de archivos de Unix tiene un origen único la raíz o root representada por /. Bajo este directorio se encuentran todos los ficheros a los que puede acceder el sistema operativo. Estos ficheros se organizan en distintos directorios cuya misión y nombre son estándar para todos los sistema Unix.

/ Raíz del sistema de archivos.

/dev Contiene ficheros del sistema representando los dispositivos que estén físicamente
instalados en el ordenador.

/etc Este directorio esta reservado para los ficheros de configuración del sistema. En este directorio no debe aparecer ningún fichero binario (programas). Bajo este deben aparecer otros dos subdirectorios:

/etc/X11 Ficheros de configuración de X Window
/etc/skel Ficheros de configuración básica que son copiados al directorio del usuario cuando se crea uno nuevo.
/lib Contiene las librerías necesarias para que se ejecuten los programas que residen en /bin (nolas librerías de los programas de los usuarios).
/proc Contiene ficheros especiales que o bien reciben o envían información al kernel del sistema(Se recomienda no modificar el contenido de este directorio y sus ficheros).
/sbin Contiene programas que son únicamente accesibles al superusuario o root.
/usr Este es uno de los directorios más importantes del sistema puesto que contiene los programas de uso común para todos los usuarios.
KDE
Partes de la pantalla
KDE es uno de los entornos gráficos más populares de Linux puesto que une una gran facilidad de uso a un entorno bonito y agradable. Al arrancar KDE aparece el escritorio en el que se pueden encontrar elementos similares a los de otros entornos:





Por defecto la pantalla de KDE se divide en tres partes fundamentales:
Panel de KDE
Escritorio
Panel de ventanas
El panel de KDE contiene accesos directos a las aplicaciones más empleadas así como dos menús.


El equivalente al menú Start de Windows, esto es el menú a través del cual se pueden ejecutar las aplicaciones. Al seleccionar este elemento se despliega un menú subdivido en distintas categorías. KDE incluye una gran cantidad de utilidades que se integran con el entorno.

Junto a éste aparece un segundo menú del KDE, en el menú de ventanas se puede acceder a todas las ventanas que estén abiertas en los distintos escritorios. Al contrario que otros entornos gráficos X Window permite organizar

las ventanas en distintos escritorios virtuales. Para cambiar de escritorio virtual se puede escoger uno de los cuatro botones que aparecen en el panel.

Justo encima del panel de KDE, aparece el escritorio, al igual que en Windows este elemento contiene iconos que permiten acceder a los elementos más comunes como las unidades de disco o la papelera. Por último en la parte superior del escritorio aparece otra barra, en la que aparecerán botones por cada ventana que se cree.
Las ventanas en el KDE tienen un aspecto similar al de las ventanas de Windows
(al menos con el aspecto básico), pudiendo distinguir en ellas diversas partes:

En la parte superior izquierda, aparece el icono de la aplicación, seleccionando el cual aparece un menú con las opciones básicas de manipulación de ventanas: minimizar, maximizar, cerrar; así como otras no tan habituales como enviar la ventana a otro escritorio. En la parte superior central de la ventana se encuentra la barra de títulos de la ventana. Finalmente en la parte superior derecha aparecen tres botones con las opciones de minimizar, maximizar y cerrar. Esta es la disposición por defecto Pero como se verá más adelante esta disposición puede ser adaptada a los gustos del usuario de una forma muy sencilla. Por debajo de este elemento se extiende la barra de menús y de herramientas y el área de trabajo de la aplicación.


Administración de Archivos. Kfm
Una de las operaciones más importantes que se pueden realizar con un entorno gráfico es la administración de archivos. Esto incluye investigar el sistema de archivos, buscarlos, abrirlos para ser editados etc. KDE incluye una herramienta, el kfm, que permite realizar todas estas operaciones de una forma sencilla.

Al kfm se puede acceder de diversas formas, bien seleccionando un enlace a un dispositivodel sistema en el escritorio, bien seleccionando el icono del directorio personal en el panelo en el menú de KDE: Home directory.



Navegar por la estructura de directorios y ver el contenido de los ficheros

El kfm está diseñado para que su uso y funcionamiento es muy similar al de un navegador Internet como Microsoft Internet Explorer o Netscape Navigator, tanto es así, que este programa es capaz de abrir y mostrar ficheros HTML y puede ser configurado para acceder a Internet.

Al igual que estos programas contiene botones en la barra de herramientas para facilitar la navegación tanto por los directorios como por Internet:


Los botones que aparecen en esta barra, comenzando de izquierda a derecha, realizan las siguientes acciones:
Sube al directorio padre del actual por ejemplo pasando por ejemplo de /home/user1/files a
/home/user1,
Vuelve al directorio o página Web vista anteriormente a la actual.
Vuelve al directorio o página Web vista posteriormente a la actual.
El botón Home vuelve al directorio personal del usuario.
El botón Reload redibuja el contenido de la ventana.
El botón Copy se emplea para copiar ficheros y directorios También se puede acceder a esta opción desde el menú Edit/Copy o mediante las teclas +c.
El botón Paste pega el contenido anteriormente copiado. También se puede acceder a esta
opción desde el menú Edit/Paste o mediante las teclas +v.
El botón Help muestra la ayuda que contiene el sistema sobre kfm,
El semáforo o botón Stop permite parar la descarga de ficheros de Internet.

Crear un nuevo directorio
Una vez en el directorio en el que se quiere crear un nuevo directorio o carpeta se puede hacer clic
con el botón derecho del ratón y en el menú contextual que surge seleccionar New/Folder
Borrar un documento o directorio

El proceso para borrar un directorio o documento es igual de sencillo que el anterior. Para hacerlono hay más que seleccionar el directorio o documento a borrar y realizar alguna de las siguientesposibilidades según los gustos de cada usuario:


· Hacer clic con el botón derecho del ratón sobre el elemento a borrar y en el menú contextual seleccionar Move to Trash, o presionar las teclas +x y de también Delete lo cual elimina permanentemente el fichero o las teclas +supr.
Nota: Linux no dispone de ningún método que permita recuperar un fichero una vez eliminado.
Copiar y mover un documento o directorio

Para copiar o mover un fichero o directorio no hay más que arrastrar los elementos a la ventana de destino. Tras esto kfm mostrará un menú contextual que nos permite copiar el elemento (Copy), moverlo (Move) o crear un enlace (Link) con lo cual podemos asignar un nuevo nombre o alias al fichero.
Enlaces de KDE
Este tipo de enlace se representa por un fichero con extensión .kdelnk que contiene información diversa para el uso del sistema. Existen varios tipos de estos enlaces:

· File System Device Este tipo de enlaces permite acceder de forma directa por ejemplo a un disquete. en el menú contextual o en el menú File, se abre un primer cuadro de diálogo en el que se pide el nombre del fichero y se pondrá disquete.kdelnk
FTP Url, es un enlace a un fichero al que se puede acceder a través del protocolo FTP de
Internet.
Mime Type, es un enlace que representa una asociación entre un tipo de fichero y las aplicaciones e iconos que lo van a representar.

Propiedades de un fichero o directorio

kfm permite configura los directorios de forma que se puede seleccionar una imagen de fondo y un
icono distinto del que aparece por defecto. hay que hacer clic con el botón derecho sobre la carpeta a modificar y en Properties




konsole



es un sistema Unix y como tal pone a disposición de los usuarios la posibilidad de comunicarse con el sistema a través de una línea de comandos, el shell. Desde el programa konsole.
Este programa permite configurar el aspecto de la presentación adaptándola a los gustos del usuario, cambiando el esquema de color, las fuentes el tamaño por defecto de la aplicación, a través de las distintas opciones del menú Options.




Kwrite

Kwrite, al igual que kedit, es un programa especializado en la manipulación de ficheros de texto,pero a diferencia de este está orientado al desarrollo de programas por lo que ofrece la posibilidadde colorear la sintaxis de los mismos empleando distintos lenguajes de programación: C, C++,Java, HTML, Bash, Modula 2, Ada, Python o Perl.


Kfind



Esta herramienta es auxiliar a kfm puesto que permite buscar un determinado archivo en un directorio concreto. La búsqueda al igual que en Windows, se puede realizar siguiendo tres criterios diferentes:




Por nombre u localización, se conoce el nombre o parte de él y la localización aproximada del fichero.
La pestaña Date Modified permite que el usuario identifique un periodo de tiempo en el que concretar la búsqueda
dvanced que la búsqueda se limite a un determinado tipo de fichero

KDE Control Center


Esta aplicación es la principal encargada de configurar KDE y a ella se puede acceder de muchasformas, tanto desde el icono que aparece en el panel, como desde cualquiera de las entradas al menú Settings, en cuyo caso sólo se accede a una de las posibles opciones de configuración.


EL SHELL: COMANDOS BÁSICOS DE LINUX
Hasta este momento se han visto los entornos gráficos existentes para Linux más importantes, no obstante cualquier usuario de Linux acabará antes o después relacionándose con el sistema empleando el modo texto. Este modo se basa en la ejecución de una serie de comandos, que son interpretados por un programa o shell. Linux dispone de varios de estos programas pero el más habitual es conocido como bash o Bourne Shell. Si Linux se ha arrancado en modo texto el sistema arranca de forma directa el shell y queda a la espera de introducción de nuevos comandos. Si se ha arrancado en modo gráfico se puede acceder al shell de dos formas:
++ hasta F6

Para volver al modo gráfico hay que presionar ++ o ++.

Introducción

Existen una serie de nociones básicas que hay que tener en cuenta a la hora de introducir loscomandos. En primer lugar citaremos las siguientes:
Los comandos hay que teclearlos exactamente.
Las letras mayúsculas y minúsculas se consideran como diferentes.
el sistema operativo utiliza un signo de $ como prompt para aceptar comandos,
permite escribir las primeras letras del mismo y realiza un autorrellenado al presionar la tecla del table.
Algunos Comandos Sencillos de LINUX
Para efectuar el cambio o la introducción de una contraseña se utiliza el comando passwd.
date Muestra por pantalla el día y la hora.
cal 05 1949 Muestra el calendario de mayo de 1949.
who Indica qué usuarios tiene el ordenador en ese momento, en qué terminal están y desde qué hora.
whoami Indica cuál es la terminal y la sesión en la que se está trabajando.
clear Este comando limpia la consola

Listado del contenido de directorios: comando ls

Una de las acciones más habituales a la hora de trabajar es mostrar el contenido de un directorio,
como se ha visto existen herramientas gráficas con este fin, no obstante el shell incluye un programa
con este mismo fin: ls,
ls Muestra los nombres de los ficheros y subdirectorios contenidos en el directorio en el que se está. Sólo se obtienen los nombres de los ficheros, sin ninguna otra información.
ls -a Muestra todos los ficheros incluyendo algunos que ordinariamente están ocultos para el usuario (aquellos que comienzan por un punto). Se recuerda que el fichero punto. indica el directorio actual y el doble punto .. el directorio padre, que contiene, al actual.
ls -l Esta es la opción de lista larga: muestra toda la información de cada fichero incluyendo: protecciones, tamaño y fecha de creación o del último cambio introducido,...
ls -c Muestra ordenando por día y hora de creación.
ls -t Muestra ordenando por día y hora de modificación.
ls -r Muestra el directorio y lo ordena en orden inverso.
ls subdir Muestra el contenido del subdirectorio subdir.
ls -l filename Muestra toda la información sobre el fichero.
ls --color Muestra el contenido del directorio coloreado.
ls file? Muestra todos los ficheros cuyos nombres empiecen por file y tengan un nombre de cinco caracteres, por ejemplo: file1, file2, filea, etc.
Creación de subdirectorios. Comando mkdir

El comando mkdir (make directory) permite a cada usuario crear un nuevo subdirectorio: mkdir subdir1 donde subdir es el nombre del directorio que se va a crear.
Borrado de subdirectorios. Comando.
Este comando borra uno o más directorios del sistema (remove directory), siempre que estos subdirectorios estén vacíos. Por ejemplo: rmdir subdir1 donde subdir es el nombre del directorio que se va a eliminar Como se ha visto anteriormente el directorio personal es un directorio con un determinado nombre asignado a un usuario. Los directorios personales habitualmente son subdirectorios de /home (en algunos casos se utiliza mnt, u otro subdirectorio de orden inferior). Generalmente el nombre coincide con el del nombre de usuario, aunque puede no ser así, y varios usuarios pueden estar trabajando en el mismo directorio. Cada usuario de Linux puede crear una estructura en árbol de subdirectorios y archivos tan compleja como desee bajo su directorio personal pero normalmente nunca fuera de el.
Acceso a unidades de disco
Linux a diferencia de Windows no utiliza letras ("a:", "c:", "d:",...) para acceder a las distintas unidades de disco de un ordenador. En Linux para acceder al contenido de una unidad de disco o de un CD-ROM este tiene que haber sido previamente "montado". El montado se realiza mediante el comando mount, con lo que el contenido de la unidad se pone a disposición del usuario en el
directorio de Linux que se elija. Por ejemplo para acceder al CD-ROM se teclearía el siguiente comando: mount -t iso9660 /dev/cdrom /mnt/cdrom Cuando el usuario haya dejado de usar ese disco deberá "desmontarlo" mediante el comando umount /mnt/cdrom Nota: Existen en la actualidad distribuciones (p. ej. Linux Mandrake) que realizan este proceso de forma automática por lo que las unidades de disquete y CD-ROM quedan accesibles a todos los usuarios de una forma sencilla.

Copia de ficheros. Comando cp

Este comando tiene la siguiente forma, cp file1 file2 y hace una copia de file1 y le llama file2. Si file2 no existía, lo crea con los mismos atributos de file1. Si file2 existía antes, su contenido queda destruido y es sustituido por el de file1. El fichero file2 estará en el mismo directorio que file1. Tanto file1 como file2 indican el nombre de un archivo, que puede incluir el la ruta al mismo si alguno de ellos no se encuentra en el directorio actual.
Borrado de ficheros. Comando rm
Este comando tiene las formas siguientes, Capítulo 8: EL SHELL: COMANDOS BÁSICOS DE LINUX página 51 rm file1 file2 Este comando elimina uno o más ficheros de un directorio en el cual tengamos permiso de escritura.
Con este comando resulta facilísimo borrar ficheros inútiles, y desgraciadamente, también los útiles. Por eso es conveniente y casi imprescindible emplear lo opción -i, de la forma siguiente:
rm -i file1 file2
Comandos de impresión. (lpr)

El comando lpr se emplea para imprimir una serie de ficheros sin argumentos. Por el contrario,
lpr nombre_fichero imprime en la impresora por defecto el fichero indicado.


REDIRECCIONES Y TUBERÍAS

Redirecciones


Los comandos de Linux tienen una entrada estándar (número 0) y dos salidas estándar (número 1 para la salida normal del comando, y número 2 para la salida de los mensajes de error que se puedan producir en su ejecución). Por defecto tanto la entrada como las salidas estándar de los comandos son la propia terminal, a no ser que por la propia naturaleza del comando se den en él los nombres de algunos ficheros que hagan el papel de entrada y de salida. Por ejemplo, en el comando cp file1 file2 file1 es la entrada y file2 es la salida; aquí no intervienen las entradas y salidas estándar. Sin embargo, cuando utilizamos por ejemplo el comando ls (listado de directorio), la salida de este comando se dirige hacia la terminal. Si queremos que la salida de este comando se dirija a un fichero llamado file, podríamos escribir, ls >file el (>) es uno de los llamados operadores de redirección y dirige la salida estándar hacia el fichero indicado a continuación; si este fichero no existe, se crea en ese momento. Otros operadores de redirección son el operador (<) que redirige la entrada estándar desde un determinado fichero, y el operador (>>) que redirige la salida estándar hacia otro fichero, pero añadiendo dicha salida al final de ese fichero, sin sobre escribir el contenido original. Por ejemplo, si cada vez que entramos en el sistema ejecutamos el comando, date >>archivo tendremos un fichero llamado archivo que contiene información sobre todas las veces que hemos entrado en el sistema. Otro ejemplo, para añadir al fichero file2 al final de file1 y al conjunto llamarle file3, sería cat file1 file2 >file3 o, si quisiéramos que el fichero resultante fuera el mismo file1, cat file2 >>file1 Un ejemplo en redirección a la entrada podría ser el siguiente, mail juan Tuberías
Siguiendo con los ejemplos anteriores, si quisiéramos enviar a juan una lista de nuestros ficheros podríamos utilizar los comandos,
ls >fichero mail Juan Bifurcación o T (comando tee)
A veces interesa que la salida de un comando, además de redirigirse a un determinado fichero, se bifurque también hacia la terminal, con objeto de observar inmediatamente el resultado. Esto se consigue con el operador tee, que podría emplearse de la siguiente forma:
ls tee file la salida de ls se bifurca hacia la terminal y hacia file.
Si quisiéramos que la salida de este comando se añadiera al final de file, deberíamos utilizar la opción -a,ls tee -a file
Redirección de la salida de errores
Los mensajes de error se dirigen a la salida número 2, que normalmente es también la terminal. A veces, por ejemplo cuando se quiere ejecutar un comando en background (ejecutar un comando en background es lanzar su ejecución y recuperar el control de la terminal sin esperar a que termine, lo cual se hace añadiendo el carácter & al final del comando), interesa evitar que los mensajes de error aparezcan en la pantalla, pues en ella habremos empezado a hacer otra cosa.
Supongamos por ejemplo que queremos compilar y montar en background un conjunto de ficheros, dirigiendo los listados a un fichero llamado listados, y los mensajes de error a un fichero llamado errores. Lo haríamos en la forma,gcc prueba.c 2>errores con lo cual la salida 2 (errores) se redirige hacia el fichero errores. Para redirigir la salida estándar de errores al mismo fichero que la salida estándar se emplea un comando como: program resultados.r 2>&1

EJECUCIÓN DE PROGRAMAS
Ejecución en el fondo & , kill, nice y nohup

Para ejecutar un programa en el fondo, es decir, recuperando inmediatamente el control del terminal, basta añadir el carácter & al final del comando de ejecución:
program resultados.r &
inmediatamente aparecerá en el terminal, debajo de esta línea, un número que es el número de proceso de la ejecución de este programa. Para detener definitivamente dicha ejecución (no se puede detener temporalmente) se puede utilizar el comando kill:
kill númerodeproceso
La ejecución de un programa en el fondo no impide que aparezcan en la pantalla los mensajes de error que se produzcan (a no ser que se haya redirigido la salida de errores), y que el programa se pare cuando se salga del sistema. Para que el programa continúe ejecutándose aún cuando nosotros hayamos terminado la sesión, hay que utilizar el comando nohup:
nohup program
Si no se utilizan redirecciones todas las salidas del programa se dirigen a un fichero llamado nohup.out. Cuando se utiliza nohup el ordenador entiende que el usuario no tiene prisa y automáticamente disminuye la prioridad de la ejecución. Existe un comando, llamado nice, que permite realizar ejecuciones con baja prioridad, es decir se le indica al ordenador que puede ejecutar de forma más lenta esta aplicación si existen otras que sean más urgentes. Se utiliza en las formas,
nice program &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;
nice nohup program &
Para darle al programa la prioridad mínima habría que utilizar el comando,
nice -19 program &
donde el -19 indica la mínima prioridad.

Comando time

El comando time, precediendo a cualquier otro comando, suministra información acerca del tiempo total empleado en la ejecución, del tiempo de CPU utilizado por el programa del usuario, y del tiempo de CPU consumido en utilizar recursos del sistema. Por ejemplo para saber el tiempo utilizado en la compilación y montaje del programa prueba.c utilizaríamos el comando,
time gcc prueba.c
Comando top
Linux incluye una aplicación llamada top cuya finalidad es manipular la ejecución de programas de una forma interactiva. Esta aplicación muestra una lista de los procesos que se están ejecutando. Los principales comandos de top son: u que muestra los procesos que pertenecen a un determinadousuario, k equivalente al comando kill para matar un proceso y h que muestra la ayuda del programa.

PROGRAMAS DE COMANDOS
El sistema operativo Linux, al igual que otros sistemas operativos, permite realizar programas de comandos, esto es, programas constituidos por distintos comandos que podrían teclearse interactivamente uno por uno en una terminal, pero que es muchas veces más cómodo agruparlos en un fichero, y ejecutarlos con una sola instrucción posteriormente. Los comandos de Linux pueden ser externos - que implican la creación de un nuevo proceso Una cierta primera forma de agrupar comandos la ofrece Linux por medio del carácter ;. Por ejemplo, tecleando el comando, date; ls; who el ordenador ejecutará sucesivamente los comandos date, ls y who.

Variables del shell UNIX permite definir variables en un fichero de comandos en la forma, USER=/mnt/mecan/juanto TERM=hp2392... Es una práctica habitual el utilizar nombres con letras mayúsculas para las variables del caparazón. Para recuperar el valor de una variable hay que precederla con el carácter . Por ejemplo, utilizando en otra parte del programa TERM, en dicho lugar se sustituiría TERM por su valor, esto es, hp2392. El shell del Linux tiene definidas para cada usuario unas variables estándar.
Parámetros de los ficheros de comandose
A los ficheros de comandos pueden pasárseles como parámetros un conjunto de una o más variables. Dentro del fichero de comandos estas variables o parámetros se conocen con los nombres 0, 1, 2, ..., 9. La variable 0 representa el propio nombre del fichero de comandos, y 1, 2, ..., 9 son los nombres de los parámetros propiamente dichos Vamos a comenzar viendo un ejemplo muy sencillo de programa de comandos al que se le pasa sólo una variable o parámetro. El comando de borrar de Linux rm no confirma la operación de borrado si no se le pone la opción (-i). Esto es peligroso porque uno fácilmente puede olvidarse de teclear dicha opción y borrar lo que no quería borrar.
Otras posibilidades de los ficheros de comandos
Los ficheros de comandos tienen muchas más posibilidades que las que se han apuntado en esta Introducción: pueden leer variables, preguntar por la existencia de un fichero y por si es ejecutable o no, y admiten construcciones lógicas del tipo IF, DO, DO WHILE, etc.

Compilado de programas en Linux
Linux como cualquier sistema Unix que se precie incluye un compilador de C y C++. Esto no implica que se esté limitado a estos dos lenguajes de programación. Por el contrario existen una gran cantidad de compiladores gratuitos para los lenguajes más importantes. El compilador de C/C++ de Linux es un compilador de línea de comandos, esto es, no dispone de ninguna interfaz gráfica que facilite la programación y compilación del código. Existen eso sí editores de texto capaces de mostrar la sintaxis del código resaltada como kwrite, aunque la compilación hay que realizarla manualmente a través de una consola o terminal.

Compilación y linkado
El primer paso para crear un programa, por ejemplo en C++, es crear el fichero de código fuente, y guardarlo en un fichero de texto por ejemplo e1.cpp. Tras esto hay que compilar el programa. Para esto se empleará el comando g++, de la siguiente forma:
g++ e1.cpp Con lo que conseguiremos que se compile el programa. Con este comando hemos conseguido que se cree un programa llamado a.out en el directorio de trabajo. Para ejecutarlo emplearemos ./a.out

Búsqueda avanzada en ficheros. Expresiones regulares A veces se desea encontrar las líneas de un fichero que contienen una palabras o palabras determinadas. Cuando el texto que se desea encontrar es único, lo que hay que hacer es ponerlo tal cual en la sección del comando que define la búsqueda

Caracteres especiales
En una expresión_regular se pueden utilizar algunos caracteres que tienen un significado especial. Son los siguientes: [ comienzo de la definición de un conjunto de caracteres . un carácter cualquiera, excepto el * un conjunto de caracteres cualesquiera, excepto el primer carácter de una expresión o inmediatamente después de la secuencia \( ] terminación de la definición de un conjunto de caracteres - sirve para definir el conjunto de caracteres que van del que le precede al que le sigue. Si va
detrás del [ o delante del ], no es especial ˆ comienzo de línea, si está al comienzo de la expresión ˆ conjunto complementario (el que no cumple la condición), si está justo después del [ que abre la definición de un conjunto fin de línea, cuando está al final de una expresión quita el significado especial a un carácter, excepto en la definición de un conjunto de caracteres

Expresiones regulares de un solo carácter

Se trata de buscar palabras o conjuntos de un solo carácter, que cumple ciertas condiciones. Acontinuación se presentan algunos ejemplos: \* representa el carácter *
. cualquier carácter, excepto el [a-f] un carácter cualquiera entre la a y la f
[A-Z] cualquier letra mayúscula [ˆa-d] cualquier carácter que no sea una letra entre la a y la d [:clase:] donde clase puede ser: digit (cifra del 0 al 9), xdigit (cifra hexadecimal), alpha (letra cualquiera), upper (letra mayúscula), lower (letra minúscula), alnum (letra o dígito cualquiera), space (un espacio en blanco), cntrl (carácter de control), punct (un carácter de puntuación) y print (carácter imprimible).

Denominación Simbólica de Sistemas InternetEn lugar de los números lógicos vistos previamente (del tipo 132.227.70.83), es posible utilizarnombres simbólicos tanto para las redes como para las máquinas. Estos nombres se estructuran demodo jerárquico, de modo similar al sistema de ficheros UNIX.

CONCLUSION
Después de haber realizado este trabajo y haber visto la evolución de este sistema operativo, no dudamos en concluir que estamos ante un sistema operativo de futuro, abriéndose paso a través de otros sistemas comerciales, que, teóricamente, deberían ofrecer características mejores a las que ofrece Linux.
Nuestra opinión sobre este sistema operativo es que ha tenido esta gran evolución en los cuatro o cinco últimos años, en gran medida debido a la ideología que sigue este sistema operativo, la cual permite que cualquier usuario tenga la posibilidad de modificar el código fuente, personalizando el sistema, reparando los posibles "bugs" del sistema o creando programas nuevos a los que cualquiera pueda acceder, modificar y reparar a través de la red.
Dada esta característica, creemos que Linux tiene una gran perspectiva de futuro. Esto no queda únicamente así, sino que además, está produciendo una revolución en la actual concepción de mercado de software comercial, creando nuevos tipos de licencias con los que los programas puedan ser comerciales, pero incluyendo las fuentes, con lo que se consigue obtener unas características parecidas a la del software libre.
Además gracias al sistema multitarea y multiproceso de Linux, que ofrece una gran potencia de cálculo y velocidad de intercomunicación, este sistema es apto para grandes estaciones de trabajo y de servidores de red, entre otros.
Centrándonos más en el tema del trabajo, nuestra opinión, tanto teórica como práctica, es que es un sistema muy estable, apto y recomendable para cualquier informático, no solo con la gran cantidad de sistemas de ficheros y protocolos de red que es capaz de utilizar, sino que además ofrece una gran posibilidad de desarrollo, gran potencia en entorno gráfico, tanto desde el punto de vista de usuario como de programador, y una interfaz de red que permite la fácil comunicación entre sistemas UNIX, o cualuquier otro sistema operativo actual.
El único inconveniente que hemos encontrado a este sistema es que para un usuario de nivel bajo-medio, puede que sea un golpe un poco duro encontrarse con un sistema operativo por línea de comandos, con multitarea real, cosas poco usuales en el resto de sistemas que suelen emular la multitarea desde un entorno visual. Esto se está intentando mejorar, creando mejores programas de instalación y utilizando interfaces gráficas más intuitivas