0% encontró este documento útil (0 votos)
37 vistas24 páginas

Introducción A Linux

Linux es un sistema operativo de código abierto, eficiente y seguro, diseñado para ser multiusuario y multitarea, desarrollado inicialmente por Linus Torvalds en 1991. Su arquitectura permite un uso eficiente de la memoria y la protección de procesos, y se distribuye en diversas versiones conocidas como distribuciones, que siguen estándares comunes para asegurar compatibilidad. A lo largo de su historia, Linux ha evolucionado significativamente gracias a la colaboración de una comunidad global de desarrolladores, convirtiéndose en una opción popular para servidores y estaciones de trabajo.

Cargado por

Daniel Gonzalez
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como RTF, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
37 vistas24 páginas

Introducción A Linux

Linux es un sistema operativo de código abierto, eficiente y seguro, diseñado para ser multiusuario y multitarea, desarrollado inicialmente por Linus Torvalds en 1991. Su arquitectura permite un uso eficiente de la memoria y la protección de procesos, y se distribuye en diversas versiones conocidas como distribuciones, que siguen estándares comunes para asegurar compatibilidad. A lo largo de su historia, Linux ha evolucionado significativamente gracias a la colaboración de una comunidad global de desarrolladores, convirtiéndose en una opción popular para servidores y estaciones de trabajo.

Cargado por

Daniel Gonzalez
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como RTF, PDF, TXT o lee en línea desde Scribd

Qué es Linux

Historia
Características
Distribuciones más comunes: análogas y diferencias
Si Linux se puede distribuir libremente ó ¿por qué comprar una distribución?
Instalación
Particionar el disco
Creación de un disco de arranque para la instalación
Configuración
Conceptos básicos preliminares
Shells
Directorios
El Arranque de la instalación es de dos procedimientos: diskette y CD bootable
Particiones propias de Linux y las soportadas.
Gestores de arranque: lilo y grub
Selección e instalación de paquetes
Primer arranque: login gráfico
Los entornos de escritorio KDE y GNOME: Análogas y diferencias
El gestor de ventanas
Escritorios virtuales y multi-escritorios
Sistemas de Ficheros
Permisos del Sistema y Política de Grupos
Entorno Gráfico
Consolas Virtuales
Los tipos de shells: bash, sh, zsh, tcsh, ...
Los primeros pasos:
Manejando ficheros
Comandos de Linux
Administración básica (hay que ejecutar estos comandos como root):
Se me ha olvidado la password de root, ¿que hago?

Qué es Linux
Linux es, a simple vista, un Sistema Operativo.
Como sistema operativo, Linux es muy eficiente y tiene un excelente diseño. Es multitarea, multiusuario,
multiplataforma y multiprocesador; en las plataformas Intel corre en modo protegido; protege la memoria
para que un programa no pueda hacer caer al resto del sistema; carga sólo las partes de un programa
que se usan; comparte la memoria entre programas aumentando la velocidad y disminuyendo el uso de
memoria; usa un sistema de memoria virtual por páginas; utiliza toda la memoria libre para cache;
permite usar bibliotecas enlazadas tanto estática como dinámicamente; se distribuye con código fuente;
usa hasta 64 consolas virtuales; tiene un sistema de archivos avanzado pero puede usar los de los otros
sistemas; y soporta redes tanto en TCP/IP como en otros protocolos.

.Es una implementación de libre distribución UNIX para computadoras personales (PC), servidores, y
estaciones de trabajo. Fue desarrollado para el i386 y ahora soporta los procesadores i486, Pentium,
Pentium Pro y Pentium II, así como los clones AMD y Cyrix. También soporta máquinas basadas en
SPARC, DEC Alpha, PowerPC/PowerMac, y Mac/Amiga Motorola 680x0. En otros sistemas operativos,
como Windows 95 y 98, no existe un paralelismo real, pues son los procesos los que se ceden el
procesador. Por tanto, si un programa quiere acaparar el procesador no tendrá excesivos problemas para
hacerlo. Pero Linux no solo asigna el tiempo de procesador entre los programas sino que también asigna
de manera eficiente la memoria evitando que dos programas intenten escribir en la misma porción de
memoria. Y en el último caso de que esto ocurra, el núcleo del sistema operativo para ambos procesos y
en ningún caso reiniciará la máquina.

Un sistema multiusuario concurrente (o multiusuario) permite que varios usuarios utilicen la máquina
simultáneamente, bien sea en local o en remoto, con su propio espacio de trabajo. En Windows
95/98/Me/NT se maneja el concepto de multiusuario secuencial, esto significa que el sistema puede
albergar varios usuarios pero nunca simultáneamente.

GNU/Linux es multiplataforma porque existen versiones para PC, PowerPC, Sparc, Macintosh, Amstrad,
ARM, Motorola 68K. La filosofía de las maquinas con administrador y usuarios, básicamente, se trata de
un concepto muy sencillo: en el sistema habrá un administrador (root) encargado de realizar las tareas
básicas de configuración, mantenimiento e instalación de nuevos programas, al servicio del resto de los
usuarios. Este posee los privilegios de añadir, quitar y modificar características de cualquier otro usuario
de la máquina.

Así mismo, como se ha dicho antes cada usuario dispone de su propio espacio de trabajo, individual e
inviolable (salvo por el administrador, si se diera el caso), en el cual puede decidir si quiere compartir su
trabajo con algún grupo dentro de la misma máquina o dejarlo privado para uso personal. Esto se
consigue configurando los permisos del archivo.

El usuario root posee privilegios sobre todos los archivos del sistema. Por lo tanto, un despiste del
administrador puede provocar que toda la información que tengamos sea borrada, cambiar archivos que
no deberán tocarse, por lo que se recomienda trabajar como root solamente en caso de que sea
indispensable.

Esta forma de trabajo permite que un usuario normal "juegue" con el sistema sin poner en peligro su
integrad. La única información que podrá perderse será la propia del usuario, que se solucionará
volviendo a generar su cuenta. Esto es ideal para que un usuario investigue las posibilidades de Linux,
sin que esto pueda provocar pérdidas en el sistema operativo.

Además, si algún programa es dañino para el sistema, por fallos en su ejecución, no podrá afectar a todo
el sistema, como mucho a los ficheros del usuario. Este es uno de los motivos por los que apenas hay
virus en sistemas Unix ya que su distribución es muy difícil. Si se usa la máquina como un usuario
normal, los virus no podrán borrar ni el disco duro, ni infectar programas del sistema, ni afectar a
prácticamente nada.

Historia
Fue creado originalmente por Linus Torvalds en 1991, en la Universidad de Helsinki, en Finlandia, a
diferencia de Windows y otros sistemas operativos propietarios, ha sido desarrollado por miles de
usuarios de computadoras de todo el mundo, contribuyendo todos con el fin de conseguir un sistema
operativo confiable, robusto, poderoso, fiable, seguro e interactivo.

La intención de este sistema operativo es el de traer libertad a los usuarios, de liberarlos de los intereses
del sector comercial y de traer, por consecuencia, software funcional, robusto y que realmente atienda las
necesidades de los usuarios, este no se basa para ser un producto más de la competencia.

El significado de GNU/Linux es que uno, ya conocemos Linux, el otro, GNU es el nombre del proyecto
que creó a la licencia GPL . GNU significa "GNU is Not Unix" , el cuál es un acrónimo muy ingenioso.

En 1991, Linus Benedict Torvalds, estudiante de la Universidad de Helsinki, estrenó la versión 0.02 de su
sistema operativo Linux. Desde entonces millones de usuarios en todo el mundo poseen este sistema
gratuito y muchos de ellos contribuyen a su continuo desarrollo, aportando programas, información, etc....

La idea de crear un sistema GNU (General Public License) y el código fuente disponible gratuitamente,
surgió en 1991 cuando Linus Torvalds estudiaba la carrera de ciencias informáticas. Linus Torvalds se
había interesado en Minix, el único sistema Unix disponible en aquel entonces. Este sistema gratuito
había sido creado por Andrew Tanenbaum con el propósito de facilitar a los alumnos de la universidad el
estudio y diseño de sistemas operativos. Minix era un Unix más, tanto en apariencia como en el kernel,
pero distaba mucho de ser comparable a uno de los grandes. A partir de ese momento Linus Torvalds
decidió crear un sistema que excediera los estándares de Minix, poniendo en marcha el proyecto Linux.
Torvalds tomó sus primeras clases de C y Unix en 1990 y en poco tiempo empezó a utilizar el sistema
operativo Minix en su nuevo 386. Linux evolucionó del simple programa Hello World! a una terminal.
Durante mucho tiempo Torvalds trabajó sólo, hasta la mañana del 3 de Julio de 1991 cuando pidió ayuda
a través de Internet. Al principio fueron unos pocos los que le apoyaron, pero al poco tiempo muchos
otros internautas se unieron al proyecto. En uno de los primeros e-mails enviado por Torvalds
refiriéndose a Linux, informaba sobre su proyecto como si fuera un hobby, nada tan grande ni
comparable a GNU.

Linus Torvalds se encontró con muchos problemas a lo largo de la programación del kernel (núcleo del
sistema). Pero Linux empezó a disponer de controladores para los dispositivos y un funcionamiento
correcto del disco el 3 de Julio, unas horas después de enviar su primer e-mail informando sobre su
proyecto. Dos meses más tarde Linux empezaba a funcionar y el código fuente de la primera versión
(v0.01) ya estaba disponible. La versión 0.01 incluía la bash shell 1.08 y gcc 1.40. El cual no era
ejecutable.

Pronto empezó a recibir e-mails de internautas interesados en ser beta-testers de Linux y sus nuevas
versiones. También empezó a recibir una avalancha de preguntas sobre su nuevo sistema operativo
gratuito. Una de las preguntas más comunes era si Linux se podía portar a otras arquitecturas, cosa que
el respondía que no, ya que estaba hecho en gran parte en C y utilizaba 386 MMU. También informó de
los dispositivos y programas que Linux podía utilizar, que por aquellos momentos se trataba de gcc, bash
shell y la mayoría de utilidades GNU. Uno de los problemas se debía a que los disquetes aún no
funcionaban, pero Linux ya empezaba a superar a Minix en algunos aspectos, de tal forma que el
proyecto de Torvalds marchaba por buen camino.

El anunció la versión 0.02 de Linux el 5 de Octubre de 1991. Linux v0.02 ya incorporaba archivos
binarios y se podía ejecutar las bash shell, gcc, GNU-make, GNU-sed, compress, etc. Quien estuviera
interesado en el código fuente del kernel, algunos binarios (como bash, gcc, etc.) y unos cuantos
archivos de ayuda, podían descargarlo de [Link].

Linux había progresado de forma considerable en muy poco tiempo, pero aún quedaban muchos
arreglos por hacer. Aún no podía funcionar por sí solo, ya que necesitaba el uso de Minix-386, por lo que
aún no podía considerarse como un sistema operativo. También necesitaba el uso de un disco duro AT-
compatible (IDE funcionaba) y tarjetas EGA/VGA. Durante el proceso de desarrollo Torvalds comenzó a
recibir e-mails con bugs que los usuarios habían encontrado en Linux.

La versión 0.03 pronto apareció y parecía funcionar sin problema alguno. Durante esas semanas el
proyecto sufrió un avance muy importante, hasta llegar a la versión 0.11, donde algunos usuarios
confirmaban que ya se podía comparar con Minix-386 e incluso indicaban que resultaba superior en
algunos aspectos. La versión 0.11 aún no soportaba dispositivos SCSI y tampoco se podía utilizar
init/login, de tal forma que se accedía al sistema como usuario root (superusuario, es el usuario que
administra el sistema) directamente. La versión 0.11 necesitaba como mínimo 2MB para funcionar pero
sin poder compilar y 4MB si se pensaba utilizar binarios GNU.

Durante las navidades de 1991 apareció la versión 0.12 y Torvalds la definió como un sistema "divertido"
de hackear, utilizable en 386/486, sistema libre y mejor que el Minix en muchos aspectos. Linus Torvalds
fue recibiendo e-mails de personas que consiguieron hacer funcionar el kernel de Linux en sus
ordenadores. El código fuente de Linux, además de algunas de sus utilidades ya estaba disponible en
otros servidores ftp.

Se creó una nueva lista de correo sólo para Linux, en la que todo usuario interesado en este proyecto
podía intercambiar información, ideas, noticias, etc. con el resto de los usuarios. Con v0.12 ya se podía
hablar de Linux como un sistema operativo ya que no requería el uso de Minix para configurarlo. Con
esta nueva versión, muchos dispositivos de hardware nuevos funcionaban correctamente y no hubo
necesidad de implementar ningún patch (pequeño programa escrito normalmente en C que arregla o
"tapa" algún bug encontrado) por mucho tiempo.
Características
Intercambio de data/código entre dos procesos diferentes.
Mejora en el uso de los disquetes.
Correcciones de bugs.
Utilidades: mkfs, fdisk y fsck.
Teclados US/German/French/Finish.
Com1 y Com2 funcionaban correctamente.
init/login finalmente funcionaban.
En muy poco tiempo apareció la siguiente versión de Linux, pero no se denominó v0.13, Torvalds pensó
que Linux se merecía estar en los 0.90 s y decidió llamarlo v0.95, pero contenía gran cantidad de bugs.
Todos estos bugs se convirtieron en patchs y gracias a ellos salió la versión v0.96, mucho más estable.
Linux se convirtió en un sistema mucho más fácil de instalar y configurar, y empezó a coger fama en todo
el mundo. Al tener en muy poco tiempo miles de usuarios, las nuevas versiones de Linux salían casi
semanalmente. En el presente hay millones de usuarios y gracias a ellos y a sus aportaciones, Linux
crece sin respiro alguno. La última versión del kernel es la 2.6.0 test 1.
Como todos los sistemas operativos, Linux también dispone de un logotipo. Torvalds decidió que la
imagen que representaría a Linux sería la de un pingüino. En casi todas las páginas webs relacionadas
con Linux se puede hallar el logotipo y ya ha sido aceptado como representante de este sistema. No se
sabe con certeza cuándo diseñó el logotipo de su sistema, pero se dice que fue al principio del proyecto
Linux.
Linux había nacido para ser un sistema operativo del tipo Posix (variante de Unix), totalmente gratuito
para el usuario y con libre acceso al código fuente. Estas tres ideas fueron las que lo han convertido en
el sistema con mejor rendimiento, más fiable, veloz y con más desarrolladores del mundo. Pronto se ha
colocado cerca de los grandes los grandes sistemas operativos como Unix en el ámbito de servidores de
comunicaciones, especialmente utilizado en empresas proveedoras de acceso a Internet.
Las versiones más recientes de Linux ofrecen la posibilidad de convertir nuestro ordenador personal en
una potente estación de trabajo. Puede funcionar como workstation personal dándonos la posibilidad de
acceder a las prestaciones que ofrece Unix y cualquier otro.

Distribuciones más comunes: análogas y diferencias


Clasificar a las distintas distribuciones que hay es una ardua tarea, pues hay que tener en cuenta que
actualmente existen más de 160 distribuciones distintas activamente en desarrollo y 7 grandes
distribuciones con la mayor parte de los usuarios (Puede consultarse una extensa lista en
[Link]

Sin embargo todas ellas tratan de seguir un estándar común que contribuya a una uniformidad en las
distribuciones. Así un usuario que sepa manejar Red Hat, también sabrá manejar Suse, Mandrake,
Debian, etc. Este estándar es el LSB (Linux Standard Base - [Link]), que está desarrollado
por el "Free Standards Group" y apoyado por distintas empresas. No es obligatorio seguir estas
directivas para que un sistema sea considerado una distribución de Linux, pero en ese caso perderá
compatibilidades con ciertos programas diseñados para Linux. En el LSB se tratan muchos aspectos:

1) Tratan de conseguir un API (Application Program Interface) unificado. De este modo un programa sabe
de qué componentes dispone y el programador puede reutilizar código. Y no sólo se trata especificar una
serie de librerías o programas base, sino que además específica como debe ser el árbol de directorios
para que el programa sepa en que sitio ha de instalar sus componentes. Hay que aclarar que en Linux
los programas no suelen disponer de espacio propio (es decir, no dispone de un directorio propio), sino
que las librerías se instalan en directorios comunes, los ejecutables en otros directorios, los ficheros de
configuración en otros.

2) Además para cada uno de los componentes de la API se ha de escribir un documento detallado que
refleje exactamente su comportamiento.

3) Añadir nuevos componentes que se hayan convertido en estándares de facto.

4) Añadir elementos que permitan una mayor compatibilidad entre las distintas plataformas.
Además hay que recordar, que como GNU/Linux es un sistema operativo diseñado para ser compatible
con UNIX hay muchas analogías entre ambos sistemas. Por ejemplo, hay muchos programas comunes y
la forma de estructurarlo es muy similar.

Las principales diferencias entre distribuciones se encuentran en los sistemas de paquetes que utilizan y
los programas propios que incluyen. También existen ligeras diferencias en la forma en la que se
guardan los ficheros en el árbol de directorios.

Un paquete, de forma general, puede definirse como un programa ya compilado y listo para su uso.
Además existe un gestor de paquetes que sabe cómo instalar el paquete y cómo desinstalarlo. Esto es
equivalente al asistente de instalación de Windows, pues recordemos que el programa se "dispersa" por
todo el disco duro. También hay paquetes que contienen las fuentes del programa, que se utilizan para
compilar el programa en sí, pero manteniendo la estructura del paquete, de modo que mantiene
ordenado a todo el sistema.

Aunque hay otros sistemas de paquetes, los mas avanzados y extendidos son: RPM (RedHat Package
Manager) y DEB (paquetes de Debian).

El problema con los RPM's (que en distribuciones más actuales se está desarrollando) son las
dependencias. Un paquete puede necesitar de otros antes de instalarse. Los sistemas RPM s no
resuelven eso automáticamente, de forma que al instalar un paquete, si necesitamos alguna librería,
tendremos que buscar el paquete que la contiene, instalarla ... y así hasta terminar. Este problema no
existe con el sistema de paquetes DEB, pues incluye programas que realizan el análisis de
dependencias y descargan los paquetes requeridos automáticamente.

Otro punto de diferencia entre distribuciones es el sistema de instalación. Como todo programa, cuanto
más sencilla es la instalación más decisiones toma el programa en nombre del usuario. De este modo
nos podemos encontrar con instalaciones muy sencillas que preguntan lo mínimo para ser instalado
(Mandrake, Suse, RedHat, ...) o bien otras que demandan al usuario que elija entre distintas opciones
(Debian, Slackware, ...). Además existen aún algunas distribuciones cuya instalación es en modo texto
(Debian y Slackware, por ejemplo) que hacen que sea desconcertante e incluso "desagradable".

Si Linux se puede distribuir libremente ó ¿por qué comprar una distribución?

Es totalmente legal copiar una distribución de Linux (siempre que se distribuya bajo licencia GPL),
incluso modificarla y venderla después. Sin embargo al adquirir una distribución se obtienen algunas
ventajas:

* manuales impresos

* soporte técnico (asistencia en caso de problemas)

* posibilidad de pedir software específico. Muy útil para empresas

La mayor parte de los ingresos de la industria del software provienen en la actualidad de la "venta" de
soporte técnico (durante un cierto tiempo) a las empresas.

Instalación

Particionar el disco duro.

El proceso de particionado se realiza para destinar espacio del disco duro para instalar Linux. Lo más
interesante es encontrar una herramienta que nos permita redimensionar el espacio ocupado por
Windows, para que de este modo no se pierdan los datos ni haga falta reinstalar todo.
Mandrake incluye esta herramienta en el proceso de instalación, aunque sólo es capaz de redimensionar
sistema de ficheros FAT y FAT32 no pudiendo redimensionar NTFS, que es el sistema de ficheros que
usa Windows NT y Windows XP.

Si se usan particiones NTFS y no es posible reinstalar el sistema operativo se puede recurrir a


programas propietarios como "Partition Magic" que si son capaces de cambiar tamaños de particiones de
este tipo.

El número de particiones mínimas para Linux es 2: "swap" y el "raíz". Aunque lo recomendable es


siempre hacer 3 partes: swap , raíz y home .

- Swap: esta partición lleva un sistema de ficheros propio y se usa en caso de que la memoria RAM se
agote. Lo normal es que se le reserve un espacio equivalente a 2 veces la memoria RAM y como
máximo 4 veces su tamaño. Sin embargo, dada la cantidad de memoria de los ordenadores actuales
(256 MB) una partición swap de 100 MB es más que suficiente.

- Raíz: se representa como "/" y es el lugar a de donde cuelgan los subdirectorios del sistema. Será el
equivalente al "c:" de Windows. Un tamaño ideal para albergar el sistema operativo es de 2 GB. Un
tamaño aceptable sería entorno a 1 GB. Por debajo de ese tamaño se hacen falta muchos programas
gráficos.

- Home: esta tercera partición se hace para que, en caso de que se tenga que reinstalar el sistema
operativo, no se pierdan los datos de los usuarios. Esto en Linux resulta conocidísimo, y sería
equivalente a poder reinstalar Windows dejando todos los datos de usuario y configuraciones intactas.

En el caso de Mandrake, el sistema de instalación decide el tamaño más recomendable para cada
partición.

Configuración

Creación de un disco de arranque para la instalación

En caso de que un ordenador no sea capaz de arrancar el CD-ROM o bien porque surja algún problema
arrancado con el mismo, siempre existe la posibilidad de crear un diskette de arranque de la instalación.
Para ello nos ayudamos de la herramienta "[Link]". Habitualmente en el primer CD-ROM de la
instalación están las imágenes de los diskettes.

* CPU: Su computadora debe tener un procesador 386, 486, Pentium, Pentium Pro, Pentium II o uno de
los clones de estos procesadores hechos por fabricantes como Cyrix, AMD, TI, IBM, etc. Si su
procesador tiene letras como "sx", "sl", "slc", etc. después del número, como en "386sx", es correcto. El
sistema no funcionar en un 286 o en procesadores inferiores.

* Bus de E/S: Su computadora debe utilizar el bus ISA, EISA, PCI, o VL. El bus VL se conoce también
como VESA Local Bus o VLB. Las computadoras que tienen PCI o VLB generalmente tienen también
ranuras ISA o EISA.

* RAM y Disco Rígido: Debe tener al menos 4MB de RAM aunque es recomendable no menos de 16MB
y 40MB de disco duro. Pero si usted quiere instalar todo necesitar 400MB. Las interfaces de disco que
emulan la interfaz de disco "AT" que se llaman habitualmente MFM, RLL, IDE, o ATA están soportados.
Las controladoras de disco SCSI de diversos fabricantes están soportadas.

* Unidad de disquete: Debe tener una unidad de disquete de 1.2MB o 1.44MB como unidad a: en el
sistema en el que instale Linux. Si tiene tanto una unidad de 1.2MB como una de 1.44MB, configure el
hardware para que la unidad de 1.44MB sea la a:.

* MPC: Como casi todas las distribuciones de Linux vienen en CD-ROM necesitaremos una lectora que
puede ser IDE, SCSI o con norma propia como alguna Sanyo o Mitusmi.

* Placa de video: Aunque soporta desde una Hércules, es recomendable usar una placa de video
compatible con VGA para el terminal de la consola. Prácticamente cualquier tarjeta gráfica moderna es
compatible con VGA. CGA, MDA, o HGA pueden funcionar correctamente para texto, pero no
funcionarán con el Xwindows.

* Otro Hardware: Linux soporta una gran variedad de dispositivos como son: ratones, impresoras,
escáneres, módems, tarjetas de red, etc. Sin embargo, no se requiere ninguno de estos dispositivos
durante la instalación del sistema
Apéndice

Conceptos básicos preliminares

Para entender mejor Linux muchas veces haremos comparaciones con DOS, así que aquí van algunas
consideraciones acerca de MS-DOS o Linux. Muchos usuarios de Linux confían en MS-DOS para
aplicaciones tales como procesadores de texto. Aunque Linux proporciona sus propios análogos para
estas aplicaciones, existen varias razones por las que un usuario concreto desearía correr tanto MS-DOS
como Linux. Hay muchas aplicaciones comerciales para MS-DOS que no están disponibles todavía para
Linux, y no hay ninguna razón por la que no pueda usar ambos.

MS-DOS ni Windows/95 no utiliza completamente la funcionalidad de los procesadores 80386 y 80486.


Por otro lado, Linux corre completamente en el modo protegido del procesador y explota todas las
características de este. Puede acceder directamente a toda su memoria disponible (e incluso mas allá de
la disponible, usando RAM virtual).

Podríamos debatir los pros y contras de MS-DOS y Linux durante páginas y páginas. Sin embargo, baste
decir que Linux y MS-DOS son entidades completamente diferentes. MS-DOS no es caro (comparado
con otros sistemas operativos comerciales), y tiene un fuerte asentamiento en el mundo de los PC's.
Ningún otro sistema operativo para PC ha conseguido el nivel de popularidad de MS-DOS, básicamente
porque el coste de esos otros sistemas operativos es inaccesible para la mayoría de los usuarios de
PCs. Muy pocos usuarios de PC pueden imaginar pagar lo que cuesta por ejemplo un Solaris.

Podrá emitir sus propios juicios de Linux y MS-DOS basados en sus expectativas y necesidades. Linux
no esta destinado a todo el mundo.

Este capitulo no presentara gran cantidad de detalles ni cubrirá temas muy avanzados. Esta pensado
para permitir al nuevo usuario de Linux comenzar a usar el sistema y situarlo en una posición en la que
pueda leer libros más generales sobre UNIX y entender las diferencias básicas entre otros sistemas
UNIX y Linux.

A primera vista, UNIX se parece a MS-DOS (después de todo, partes de MS-DOS fueron tomadas de
CP/M, el cual fue a su vez inspirado en UNIX incluso muchas de las novedades que Windows 95
pretende presentar son características de los sistemas UNIX). Pero, solo las características superficiales
de UNIX se parecen a MS-DOS.

Como ya dijimos, Linux es un sistema operativo multitarea y Multiusuario. Bajo UNIX, para que los
usuarios puedan identificarse en el sistema, deben registrarse (login), proceso que consta de dos pasos:
Introducir el nombre de usuario (login) (el nombre con que ser identificado por el sistema), y una palabra
clave o contraseña (password), la cual es su llave personal secreta para entrar en la cuenta. Como solo
usted conoce su palabra clave, nadie mas podrá logearse en el sistema con su nombre de usuario. Por
esto es muy importante tomarse unos minutos para elegir una palabra clave que no sea fácil de adivinar
o desencriptar, es común en los novatos usar palabras claves que tiene algo que ver con ellos, por
ejemplo el nombre de la novia, esposa, madre, hija, fecha de nacimiento, numero de documento, hasta el
nombre de su mascota, de esta manera los hackers usan diccionarios con nombres femeninos para
lograr adivinar claves de usuarios desprevenidos.
En los sistemas UNIX tradicionales, el administrador del sistema asignara el nombre de usuario y una
palabra clave inicial en el momento de crear la cuenta de usuario.

Además, cada sistema UNIX tiene un nombre del sistema (hostname. Este "hostname" le da nombre a la
maquina, además de carácter y encanto, por ejemplo la mía se llama Amankay, (que es el nombre de
una flor de la puna Jujeña) la anterior fue Newton y la anterior Leonardo. El nombre del sistema es usado
para identificar máquinas en una red, pero incluso aunque la máquina no esté en red, deberá tener un
nombre.

Antes de poder usar el sistema, deber crear una cuenta de usuario. Esto es necesario porque no es
buena idea usar la cuenta de root para los usos normales. La cuenta de root debería reservarse para el
uso de comandos privilegiados y para el mantenimiento del sistema.

Shells

La forma de comunicarse entre el S.O., el hardware y el usuario es un Shell, en Linux, el más difundido
es "bash" que significa "Bourne again shell" aunque existen varios shells para todos los gustos. En la
mayoría de las exploraciones en el mundo de UNIX, estar hablando con el sistema a través del uso de un
shell. Un shell es simplemente un programa que toma la entrada del usuario (ej. las ordenes que teclea)
y las traduce a instrucciones. Esto puede ser comparado con el [Link] de MS-DOS o el
4DOS para los más exquisitos, los cuales efectúan esencialmente la misma tarea. El shell es solo uno de
los interfaces con UNIX hay muchos interfaces posibles como el sistema X Windows, el cual le permite
ejecutar comandos usando el ratón y el teclado.

Antes de continuar, deberíamos ver como salir del sistema. Desde la línea de comandos usaremos la
orden "exit" para salir. Hay otras formas, pero esta es la más fácil.

Directorios

La mayoría de los sistemas UNIX tienen una distribución de ficheros estándar, de forma que recursos y
ficheros puedan ser fácilmente localizados. Esta distribución forma el árbol de directorios, el cual
comienza en el directorio "/", también conocido como "directorio raíz". Directamente por debajo de "/" hay
algunos subdirectorios importantes: /bin, /etc, /dev y /usr, entre otros. Estos a su vez contienen otros
directorios con ficheros de configuración n del sistema, programas, etc. En particular, cada usuario tiene
un directorio "home". Este es el directorio en el que el usuario guardara sus archivos. Usualmente, los
directorios home de los usuarios cuelgan de /home y son nombrados con el nombre del usuario al que
pertenecen.

El siguiente es un ejemplo de árbol de directorios en Linux.


/________bin
|__dev
|
|__etc
|
|__home _______juan
||
| |__pedro
|__
| lib
|__proc
|
|__tmp
|
|__usr _______X386
|
|__bin
|
|__emacs
|
|__
| etc
|
|__g++-include
|
|__include
|
|__lib
|
|__local_______
| | bin
||
| |__emacs
||
| |__etc
||
| |__lib
|
|__man
|
|
|__spool
|
|__src_______linux
|
|__tmp

Desde una consola de MS-DOS escribimos:


rawrite [imagen] a:

En caso de duda siempre existe un README que aclara la sintaxis del comando o bien en caso de
existir varias imágenes indica cual es la adecuada.

El Arranque de la instalación es de dos procedimientos: diskette y CD bootable

Antes de iniciar la instalación, es importante recordar que hay que cambiar la secuencia de arranque a la
opción más conveniente. Lo normal es decirle al ordenador que primero arranque el CD y que luego
arranque el sistema presente en el disco duro.

Para ello, entraremos en las opciones de la BIOS y luego en Advanced BIOS Features . Ahí
cambiaremos la secuencia de arranque para que primero arranque el CD-ROM (o el disquete) y luego el
disco duro.

Particiones propias de Linux y las soportadas.

El sistema de ficheros es la forma en la que un sistema operativo graba físicamente los datos en el disco
duro. El más conocido es el FAT32, que es el que usa Windows. Sus forma de organizar los datos
consiste en mantener dos tablas (FAT's) al principio del disco en el que se escriben los nombres de los
ficheros y la posición física de los mismo. De este modo, si el sistema operativo necesita abrir un fichero
consulta la FAT (File Allocation Table) y luego salta a la posición del disco que le ha indicado la tabla.
EXT2: es el sistema de ficheros "estándar" de Linux. Incluye muchas mejoras respecto al FAT de
Windows. En primer lugar, cada fichero o directorio contiene un campo específico en donde se le indican
los permisos. De este modo se asegura que ningún usuario que no tenga permiso para leer o escribir el
fichero lo haga de forma involuntaria. Pero la mayor ventaja que tiene sobre FAT32, es que los ficheros
se guardan físicamente de forma secuencial. Este es un grave problema que acusa el FAT: los ficheros
se van guardando a medida que el sistema encuentra espacios libres, de modo que un mismo fichero
puede estar fragmentado y repartido por todo el disco duro, obligando al cabezal del mismo a saltar
muchas veces para recuperarlo, perdiendo rendimiento del sistema. Esto no ocurre en Linux, por lo que
el sistema de ficheros siempre se mantiene desfragmentado.
EXT3: este es el nuevo sistema de ficheros que se perfila como sustituto al EXT2. Su forma de trabajo
es la misma que EXT2, con lo que se asegura su compatibilidad hacia atrás, y además se le añade un
sistema de "journaling". Esto significa que mientras el sistema operativo realiza acciones sobre el disco
duro escribe en un fichero especial qué ya ha realizado y ha de realizar aún. Esto es útil porque en caso
de desastre (apagón repentino) Linux sabe qué tareas le quedan por realizar, manteniendo
continuamente la integridad del sistema.
Reiserfs: Es un sistema de ficheros implementado partiendo de cero, pensando en la optimización y la
inclusión de "journaling". Es extremadamente rápido para ficheros pequeños y directorios con multitud de
entradas por la manera que tiene de optimizar los listados de las entradas de los directorios y los
ficheros. Se encuentra soportado directamente en el kernel oficial, por lo que es una alternativa muy
segura para el futuro y que siempre se va a seguir actualizando.
jfs: Es el sistema de fichero "journaling" de IBM. Posee características muy avanzadas, como
optimización del movimiento de las cabezas de los discos. No viene incluido por defecto en el kernel, por
lo que requiere parches y estar pendiente de actualizaciones por parte de IBM.
xfs: Es el sistema de fichero "journaling" de SGI (Sillicon Graphics). Es uno de los sistemas más
avanzados y muy probado ya que es el que viene con el Sistema Operativo Irix de SGI. Posee
capacidades para asegurar anchos de banda según cada aplicación, ACLs y atributos extendidos, etc.
No viene incluido por defecto en el kernel, por lo que requiere parches y estar pendiente de
actualizaciones por parte de SGI, aunque se está intentando integrar en el kernel oficial. Además tiene la
posibilidad de escribir y leer directamente sobre el disco duro, de modo que por ejemplo una base de
datos podrá utilizar su propio sistema de ficheros optimizado.
nfs: Sistema de ficheros por red tradicional de máquinas Unix, equivalente a smb en sistemas
Windows.
CODA ADFS: Sistemas de ficheros por red avanzados, con mayor seguridad, rendimiento y posibilidad
de desconexión para trabajo off-line.
Swap: tipo de partición en disco que Linux utiliza cuando sus recursos de memoria RAM son escasos.

Otros sistemas de ficheros soportados son: FAT, FAT32, NTFS (en desarrollo), Amiga FFS, Apple
Macintosh FS, BFS, EFS, Minix, OS/2, Samba, ... Como se puede observar fácilmente Linux es capaz de
manejar multitud de sistemas de ficheros por lo que su coexistencia con otros sistemas operativos está
asegurada.

Gestores de arranque: lilo y grub

El gestor de arranque es el programa que se encarga de decirle al ordenador qué tiene que hacer para
inicia Linux (o Windows). Además se usa para hacer arranques duales, es decir para seleccionar al
principio si queremos usar Linux o Windows, sin que ello repercuta en el funcionamiento de ambos.

Los dos gestores más populares son LILO (Linux Loader) y GRUB. Siendo grub más potente, está muy
difundido el uso de LILO pues es más sencillo.

Durante la instalación, normalmente, se preguntarán si se desean añadir otros sistemas operativos al


arranque, facilitando la labor.

Existen dos sitios donde pueden residir estos programas: el Master Boot Record (MBR) o en los primeros
sectores de la partición. Al arrancar el ordenador, lo que primero que hace es consultar el MBR para que
le diga qué tiene que hacer. En caso de que no encuentre nada, el ordenador salta automáticamente a
los primeros sectores del disco duro para tratar de cargar algún programa de arranque. Por tanto es
indiferente donde se instale el Lilo, aunque lo normal es que se haga en el MBR. Si luego se desinstala
Linux (grave error!!!!) se puede recuperar el MBR escribiendo desde la consola de MS-DOS:

fdisk /mbr

En caso de querer añadir un nuevo sistema operativo al arranque tras la instalación se ha de editar el
fichero /etc/[Link] y añadir las siguiente líneas:

other=/dev/hda1 <--- esto le indica al Lilo donde está el otro S.O.

label=dos <--- esto le dice qué nombre recibirá al arrancar

No hay que olvidar que antes de reiniciar el ordenador hay que ejecutar el comando "lilo". En caso de no
hacerlo nos encontraremos ante un grave problema, aunque sea solventable. Al ser un fichero crucial
para el sistema operativo sólo puede cambiarlo root, así que cuidado con lo que se hace.

Mandrake instala automáticamente el Lilo en el Master Boot Record, añadiendo todos los sistemas
operativos presentes en el ordenador.

Selección e instalación de paquetes

Durante la instalación, la distribución nos preguntará qué paquetes deseamos instalar. Esto
generalmente puede hacerse de dos formas: individualmente, paquete a paquete (lo que lo convierte en
una tarea larga y tediosa), o por grupos (ofimática, desarrollo, entornos gráficos, red...). Por supuesto, se
recomienda esta segunda opción.

Primer arranque: login gráfico

Al arrancar el sistema Linux, podemos elegir que el entorno gráfico se inicie automáticamente. Esto va a
ser útil si lo vamos a utilizar siempre, pues nos ahorramos un paso a ejecutar tras iniciar la sesión como
usuario.

Existen varios gestores que controlan la inicialización del modo gráfico: xdm, gdm, kdm...

Llegados a este punto, bastará con introducir como login el usuario que se creado durante la
instalación, y su password . Dado el caso, para tareas de configuración, también se puede hacer login
como root

Los entornos de escritorio KDE y GNOME: Análogas y diferencias

Un entorno de escritorio será todo aquello que haga más manejable el entorno gráfico del sistema. En un
principio, el entorno gráfico por excelencia en Linux era KDE. Sin embargo, algunas de las librerías que
se utilizaban en la programación de este sistema (llamadas QT), eran en parte propiedad de una
empresa llamada TrollTech. Como lo que se quería era un entorno de escritorio totalmente libre, se inició
el proyecto GNOME, basado en unas librerías completamente libres (GTK).

Actualmente, las librerías QT ya no tienen ninguna traba propietaria, por lo que KDE también es un
escritorio libre.

Aparte de estos dos mencionados, existen otros más o menos manejables, como IceWindowManager,
Window Maker, Blackbox, PAWN (Puto Amo Window Manager)...

El gestor de ventanas

Además de un entorno gráfico amigable, necesitamos algún tipo de herramienta que os permita mover,
redimensionar, minimizar, etc... cualquier ventana que abramos en el sistema. Los gestores de ventanas
son los que nos permiten realizar estas tareas. KDE utiliza su propio gestor de ventanas (kwin), pero
GNOME utiliza uno externo, como por ejemplo, Sawfish ó Enlightenment (entre los más conocidos).

Escritorios virtuales y multi-escritorios

Uno de los añadidos que un escritorio en Linux nos proporciona, son los escritorios virtuales. Esto
significa que pulsando alguna combinación de teclas, o mediante algún botón del entorno de escritorio,
cambiaremos a una nueva pantalla donde no habrá ninguna ventana abierta, o sólo las que hayamos
abierto anteriormente en ese lugar. El número de escritorios virtuales puede ser prácticamente cualquier
número X , lo que equivaldría (más o menos) a tener X monitores, cada uno con sus propios programas
abiertos.

Sistemas de Ficheros

Bajo la mayoría de los sistemas operativos, LINUX incluido, existe el concepto de fichero, el cual es un
conjunto de información al que se le ha asignado un nombre. En LINUX no hay un formato estándar para
los nombres de ficheros, como sólo hay en MS-DOS y otros sistemas operativos. En general estos
pueden contener cualquier caracter (excepto / ), y están limitados a 256 caracteres de longitud. Una
importante diferencia con MS-DOS es que los nombres no necesitan llevar extensión, que son los 3
caracteres separados del nombre por un punto. En cambio, se suele utilizar como símbolo identificativo
de su contenido. Otra diferencia importante con MS-DOS es que el LINUX es case sensitive ; esto
quiere decir que distingue entre mayúsculas y minúsculas, por lo que en LINUX [Link] y
[Link] son dos archivos distintos.

Por otro lado, como en MS-DOS, los directorios son colecciones de ficheros, y/o más directorios, y
también pueden tener cualquier nombre, con las mismas limitaciones que los ficheros.

Otro aspecto importante en LINUX, que lo diferencia de otros Sistemas Operativos como MS-DOS o
WINDOWS, es que para el sistema todo son ficheros. Desde un disco duro, una partición en un disco
duro, un puerto paralelo, una conexión a un sitio web, una placa Ethernet... Incluso los directorios son
archivos. Por ejemplo, para imprimir algo basta con que escribamos en el fichero que representa nuestro
puerto paralelo, /dev/lp0.

Permisos del Sistema y Política de Grupos

LINUX es un sistema multiusuario, bien accediendo localmente (desde un terminal local), o remotamente
(mediante una conexión remota). Entendemos por usuario a la persona o personas que poseen una
cuenta en la maquina, y por lo tanto conocen su login y contraseña de acceso. Por esto, varias personas
diferentes pueden ser el mismo usuario en la maquina, aunque eso no es muy común ni tiene mucho
sentido. También es posible que el mismo usuario acceda varias veces, y desde lugares distintos.

Como en un mismo sistema conviven varios usuarios, es importante implementar medidas que
garanticen su intimidad, y la seguridad de su información. Por este motivo, LINUX, así como la mayoría
de sistemas multiusuario, presenta un sistema de permisos de ficheros y directorios. Las tres
operaciones que se pueden hacer con un fichero o con un directorio son:

- leer

- ejecutar (si es un ejecutable o un directorio)

- escribir (esto incluye borrarlo)

Cada fichero tiene un propietario, que inicialmente es el usuario que lo ha creado, aunque después
puede modificarse. El propietario de un fichero es el que marca los permisos del mismo, fijando quien
puede acceder al fichero, y qué puede hacer con él. Esto es, si sólo permite que lo lean (y por lo tanto lo
copien), que lo ejecuten (si es un ejecutable, o un directorio para poder acceder a él), o que escriban en
él (o lo borren).

Generalmente hay muchos usuarios de un sistema que se encuentran en el mismo nivel de seguridad,
especialmente en las empresas y grupos de trabajo. Para no definir expresamente cada uno de los
usuarios que pueden acceder a determinado fichero, ni tampoco permitir que todo el mundo pueda
acceder a él, se definen los grupos de usuarios. Se crea un grupo formado por varios usuarios, y se le
permite a dicho grupo acceder al fichero. Por lo tanto, cada fichero pertenece a un usuario (su
propietario) y a un grupo, formado por varios usuarios que poseen los mismos privilegios sobre el fichero
en cuestión. Aparte de no tener que meter en cada fichero una lista de los usuarios que pueden acceder
a él, sino sólo un nombre de grupo, se gana en escalabilidad, ya que conforme se añaden nuevos
usuarios, sólo hay que añadirlos al grupo que nos interese, y no hay que redefinir los permisos del
fichero.

Por defecto el sistema crea un grupo con cada nombre de usuario, pero eso no suele ser muy útil.
Algunos grupos que si tienen sentido son los siguientes:

audio -> tienen permisos para escribir en los dispositivos de audio del sistema (/dev/dsp)

cdrom -> tienen permisos para escribir cdrom's, que requiere privilegios especiales

lp -> pueden escribir en el puerto paralelo, y por lo tanto imprimir

video -> tienen permisos de escritura en los dispositivos gráficos, para acceder directamente a ellos, sin
pedir permiso al sistema.

Por lo tanto cada fichero, tiene 3 campos de permisos, cada uno de ellos con 3 tipos de acceso distintos.
Los tres campos son:

- el propietario del fichero

- los miembros del grupo al que pertenece el fichero

- el resto de usuarios del sistema

Para cada uno de estos grupos, se pueden definir 3 permisos: lectura, escritura y ejecución. Obviamente,
un usuario solo puede definir los permisos de un fichero si es el propietario del mismo, y tiene permisos
de escritura sobre el mismo. Aunque parezca una tontería que un usuario no tenga permisos de escritura
en sus ficheros, es útil como medida de protección a borrados accidentales, y cuando necesite escribir
puede habilitarlo, ya que es el propietario.

En el entorno gráfico, para cambiar los permisos de un fichero basta con ver sus propiedades (botón
derecho del ratón sobre el fichero) en un Administrador de ficheros como Nautilus (GNOME) o Konqueror
(KDE).

Para finalizar el tema de los permisos, volver a hacer hincapié en que es peligroso manejar la máquina
bajo la figura de root, ya que tiene privilegios de escritura sobre casi todos los ficheros del sistema, y lo
mismo todos los programas que ejecutemos bajo su mando. El uso de permisos es la causa de que en
LINUX no haya virus, ya que un virus necesitaría entrar como un usuario en el sistema para hacer algo
de daño, y para corromper todo el sistema de forma irreversible, necesitaría hacerse root, lo que es muy
complicado por el sistema de claves. Pero si ejecutamos un archivo que haga algo pernicioso para el
sistema, mientras no sea como root, como mucho corromperá los datos de ese usuario y puede que de
su grupo. Pero esto no es nada irreversible, y sobre todo, es justo, porque paga el pato aquel que no
mira lo que ejecuta, y no el resto de los usuarios que no han hecho nada.

Entorno Gráfico
Consolas Virtuales

GNU/Linux es un sistema operativo multitarea que originariamente sólo tenía línea de comandos sobre
terminal de texto. Sin embargo, al contrario que otros sistemas operativos como MS-DOS, la interfaz de
comandos está separada del núcleo del sistema (el kernel), por lo que hay, distintos intérpretes de
comandos (shell) con distintas características. Además no estamos limitados a una sola terminal (un
lugar" donde se ejecuta un intérprete de comandos), sino que se nos proporcionan una serie de
terminales de texto virtuales que facilitan el trabajo en consola y permiten un uso efectivo de la multitarea
que nos proporciona el S.O. sin tener que recurrir al modo gráfico.

Comúnmente la configuración básica de cualquier distribución predefine 6 terminales de texto virtuales,


entre los que se puede conmutar mediante la secuencia de teclas:

Alt + F<1-6> , donde el número define la terminal virtual, o tty, a la que cambiaremos.

Los terminales gráficos se arrancan después de la última terminal virtual de la consola, comúnmente Alt
+ F7, hasta F12. Para conmutar de un terminal gráfico a uno de consola debe utilizarse la secuencia:

Ctrl + Alt + F<1-6>

Se pueden configurar el sistema para que use más terminales, pero si las 6 que tenemos por defecto se
nos quedan cortas y necesitamos más, lo más fácil es hacer uso del comando 'screen'.

Una vez familiarizados con la forma de cambiar entre los terminales ya podemos hacer login en el
sistema para comenzar a hacer uso de una shell.

Los tipos de shells: bash, sh, zsh, tcsh, ...

Una shell es un intérprete de comandos, una interfaz entre el usuario y GNU/Linux. Es algo que nos
provee de un entorno que nos permite introducir comandos en el sistema y que éste los reconozca. Linux
tiene diferentes tipos de Shells: Bourne (sh), Bourne Again SHell (BASH), Korn (ksh), C shell (csh)...

La shell Bourne es la que se utilizaba originalmente en los sistemas UNIX, y está disponible en todos los
sistemas UNIX existentes. Es muy adecuada para programación de shell (que ahora veremos lo que es)
pero no se comporta demasiado bien de cara al usuario.

La shell C se comporta mejor ante el usuario y tiene algunas características que no están presentes en
Bourne, como el autocompletado de línea, pero no es tan buena para programación. Su sintaxis es
parecida a la del lenguaje C.

La shell Korn unió lo mejor de las dos anteriores, manteniendo la compatibilidad con la primera.

Actualmente no se usan mucho las shells antes mencionadas, sino otras que son evolución de aquellas y
que tienen características de las tres. Estas son bash (Bourne again), pdksh (Public Domain Korn Shell)
y tcsh (una extensión de csh). La más utilizada en Linux, y en la que nos centraremos es la shell bash.

Con la shell también se pueden hacer algunos programas (incluso programas complicados). Por ejemplo:

#!/bin/sh
echo Dime tu nombre

read a

echo Tu nombre es $a

Aunque es una chorrada de programa, se ve que es bastante fácil hacer algo en una shell. Otro ejemplo
un poco más complicado:

#!/bin/sh

for a in hola esto es una prueba; do

echo $a

done

Este lenguaje también admite funciones, condicionales, bucles while... es decir, podemos hacer cosas
bastantes complicadas con este lenguaje.

Los primeros pasos:

Una vez que hayamos hecho login y se haya ejecutado la shell nos encontraremos algo similar a esto:

[usuario@maquina usuario]$

Bien, pero ... ¿Estamos seguros de quienes somos? ó ¿Dónde estamos? La primera pregunta nos la
responderá el comando 'whoami' imprimiendo por pantalla nuestro nombre de usuario. Mediante el
comando 'pwd' veremos por la pantalla del terminal el directorio en el que nos encontramos:

[usuario@maquina usuario]$ pwd

/home/usuario

Nos encontramos en nuestro directorio personal, ya que por defecto la shell nos posiciona ahí.
Observamos también que en los sistemas operativos basados en Unix, los directorios se separan
mediante el caracter '/' en vez del usado por Windows ('\').

Para cambiar de directorio se utiliza el comando 'cd' pasándole como argumento la ruta a la que
queremos cambiar:

[usuario@maquina usuario]$ cd /usr/bin

Si no se especifica ningún argumento nos enviará automáticamente al directorio personal


(/home/usuario), y si el argumento es - volveremos al directorio anterior.

Existen unas abreviaturas que se pueden especificar en la shell que internamente se expanden por el
valor real. Estas son:

. => El directorio actual

.. => El directorio padre al actual

~ => /home/usuario
~usuario => /home/usuario

~usuario2 => /home/usuario2

La mayoría de las shells de Linux, tienen una opción implícita que autocompleta tanto el nombre del
comando como de las rutas que se vayan pasando como argumentos. Simplemente pulsando el
tabulador se completará y en el caso de que haya varias coincidencias, las mostrará por pantalla
esperando a que se introduzca algún caracter más con el que poder seguir completando.

Para listar el contenido de un directorio se utiliza el comando 'ls' que mostrará por pantalla los archivos
presentes en el directorio en que le indiquemos (por defecto, mostrará los del directorio actual).
Dependiendo de la configuración que tengamos, puede mostrar un código de colores que nos será útil
para identificar más rápidamente la información que aparece por pantalla:

-Azul oscuro: directorio.

-Azul claro: enlace simbólico.

-Verde: archivo ejecutable.

-Violeta: archivo de imagen.

-Rojo: archivo comprimido

Estos son los colores por defecto, definidos en la variable LS_COLORS. Por tanto, pueden cambiarse al
gusto.

Algunos parámetros útiles que puede tomar son:

-l : Lista los archivos mostrando su tamaño, permisos y propietario.

-a : Lista los archivos cuyo nombre comience por un . . Este tipo de archivos ocultos son útiles cuando
tenemos archivos que queremos que estén en un determinado sitio pero no queremos que se muestren
al hacer un ls normal para mejorar la lectura de los elementos del directorio.

IMPORTANTE! En Linux hay diferencia entre mayúsculas y minúsculas, así que una entrada en el
directorio llamada COSA no es igual a Cosa ó cOsa , tened cuidado con ese tipo de cosas y en no
utilizar caracteres especiales de bash en los nombres de los ficheros ( '{' , '}' , '(' , ')' , '[' , ']' , ''' , ' ' , ''' , '\' ,
'<' , '>' , '|' , '&' ... ).

Para crear un directorio simplemente se hace con el comando 'mkdir' y pasándole como argumento el
nombre del directorio a crear. El comando opuesto es 'rmdir', pero atención, sólo borrará directorios
vacios. Para borrar directorios con contenido existe el comando 'rm' pero este únicamente borra ficheros
que recibe en los argumentos, a menos que se le pase como parámetro:

-r: recursivo. Le podemos pasar un directorio como argumento y borrará todo lo que haya dentro de ese
directorio. Si a su vez hay otro directorio dentro del directorio, hará lo mismo, y así ad infinitum .

Otro parámetro interesante es:

-f: no nos preguntará confirmación para borrar según qué archivos (archivos de sólo lectura, etc...).

Como se puede ver, la combinación rm -rf borrará todo lo que haya en un directorio que le indiquemos.
Este es uno de los peligros de utilizar un sistema Unix como root, dado que un rm -rf / borrará todo el
contenido del sistema.
En el aspecto de renombrar o mover ficheros se utiliza el comando 'mv' para ambas cosas. Si se desea
renombrar un fichero o directorio el primer parámetro del comando debe ser la entrada a renombrar y la
segunda el nombre deseado, asegurándose de que este no exista. Para mover simplemente especificar
en los argumentos los ficheros y directorios que se desean mover poniendo en último lugar el directorio
de destino para los mismos.

Copiar un fichero es igual de fácil, con el comando 'cp' especificando en los argumentos el fichero o
ficheros originales que se desean copiar dejando en último lugar el directorio de destino. Para crear una
copia de un fichero con un nuevo nombre se ha de poner como último argumento el nombre deseado
para la copia, teniendo en cuenta de que si ya existe una entrada llamada así, esta será sobreescrita.

Usando el comando 'touch' podemos crear un fichero vacio de nombre el especificado en el argumento.
Si deseamos crear un fichero que contenga varias palabras separadas por espacios habrá que
escaparlos con el caracter '\' porque el espacio es el caracter que se usa para separar los argumentos de
la línea de comandos. Veamos como hacerlo:

[usuario@maquina usuario]$ touch fichero\ vacio\ con\ varias\ palabras

Es muy útil utilizar las comillas o '' para los argumentos con varias palabras o con caracteres
especiales:

[usuario@maquina usuario]$ touch 'fichero de un proyecto'

Una cosa que existe en Unix y tiene mucha utilidad es la existencia de links . Un link o enlace es algo
que puede recordar un poco a un acceso directo de Windows pero mucho más potente y útil. Existen dos
tipos de enlaces:

- Duros: un enlace de este tipo no es más que otra entrada en el sistema de ficheros a una archivo. Es
decir, dos ficheros que apuntan a lo mismo en el disco duro, por tanto cuando modificamos cualquiera de
ellos realmente estaremos trabajando siempre con l os mismos datos. Para borrar un fichero enlazado
con links duros se deben borrar todos estos, de otro modo los datos del disco no desaparecerán. Se
crean con la orden:

[usuario@maquina usuario]$ ln fichero_orignal nombre_del_link

El link creado debe estar en la misma partición que el original.

- Simbólicos: es otro tipo de enlace que no apunta a los datos del disco duro que el fichero sobre el que
se hace sino que es un redireccionador a la entrada lógica original del sistema de ficheros, algo así como
un enlace a otro enlace, este último a datos del disco, de forma que todo lo que se pretenda hacer sobre
el enlace se hará sobre los datos apuntados por el fichero original. Si borramos el enlace simbólico nada
pasa con el fichero original y si borramos el fichero enlazado tendremos un enlace simbólico roto, ya que
no existirá el fichero al que apunta. Para crearlo, con esto vale:

[usuario@maquina usuario]$ ln -s fichero_original nombre_del_link

Para ver donde apunta un enlace simbólico, con la orden 'ls -l' sobre el enlace veremos el destino:

[usuario@maquina usuario]$ ls -l nombre_nombre

lrwxrwxrwx 1 usuario grupo 03 oct 15 22:13 nombre_nombre -> cuat_dia_3.txt

La l al principio del todo indica que la entrada es un enlace simbólico.

Ahora que ya hemos ejecutado unos cuantos comandos es interesante comentar la opción de historial de
la shell, que pulsando la flecha arriba nos permite visualizar comandos antiguos. Ejecutando el comando
'history' nos será mostrada por pantalla la lista de comandos antiguos.

Manejando ficheros

Ahora que ya nos movemos con facilidad por el sistema toca el momento de interactuar con los ficheros
de forma real. En Linux la extensión de un fichero es algo puramente explicativo, no tiene ningún valor
para el propio sistema, sólo para el usuario. Así, si queremos averiguar el tipo de un fichero utilizando el
comando 'file' lo sabremos:

[usuario@maquina usuario]$ file /usr/bin/perl

/usr/bin/perl: ELF 32-bit LSB executable, Intel 80386, version 1,

dynamically linked (uses shared libs), stripped

Si lo que queremos es visualizar el contenido de un fichero, utilizando el comando 'cat' nos será
mostrado todo por pantalla. Hay que tener cuidado de no utilizar 'cat' sobre ficheros binarios ya que se
nos llenara la pantalla de caracteres ilegibles y muy probablemente se quede la línea de comandos
diferente . Para arreglar esto, simplemente escribiendo 'reset' las cosas volverán a la normalidad.

Cuando los ficheros son largos 'cat' no es una buena solución, para lo que recomendamos el uso de
'more' que pagina el documento usando la pantalla entera y nos permite ir visualizándolo
progresivamente, pero no retroceder a páginas anteriores. El programa para visualizar texto mas común
es 'less' que nos da movilidad absoluta sobre el fichero, así como realizar búsquedas y otras opciones.

A la hora de escoger un editor de ficheros de texto tenemos varias alternativas, donde la elección de uno
u otro se basa más en el gusto del usuario. El más sencillo e intuitivo de todos posiblemente sea 'pico'
porque muestra en la parte inferior de la pantalla las secuencias de teclas útiles. También en el grupo de
los más elementales se encuentra 'joe', de funcionalidad muy similar a 'pico' pero de un manejo menos
intuitivo.

Entre los editores avanzados destacan 'vim' y 'emacs', también conocido como El piano por el gran
número de combinaciones de teclas que tiene para manejo avanzado de texto. Ambos implementan
resaltado de sintaxis con colores, muy útil para la programación. En 'vim' para mostrar la ayuda basta
con seguir la secuencia: ESC y escribir :help para visualizar una completa ayuda sobre el manejo del
editor. En 'emacs' y en no sabe.

Por otro lado, Linux presenta un gran número de pequeñas utilidades para el manejo de ficheros, entre
las que se encuentran:

- 'wc' : aplicado a un fichero cuenta el número de lineas, palabras y bytes (caracteres, si estamos ante un
fichero de texto).

- 'grep' : busca una expresión sobre el fichero al que se aplica.

- 'sed' : sustituye unas expresiones por otras.

- 'diff' : muestra las diferencias entre dos ficheros.

- 'sort' : imprime en la pantalla un fichero ordenado.

- 'uniq' : elimina lineas consecutivas repetidas.

- 'head' : muestra por pantalla las primeras lineas del fichero o ficheros especificados.

- 'tail' : muestra por pantalla las 10 últimas lineas del fichero al que se aplique.
Todas estas aplicaciones admiten varios parámetros que permiten especificar su funcionalidad. Para
listarlos simplemente pasando --help como argumento se imprimirán por pantalla. A primera vista puede
parecer que no tienen mucha utilidad por si solas, pero conectándolas unas con otras dan la posibilidad
de realizar tareas más complejas. Eso ya lo veremos más detenidamente en el apartado de
redireccionamiento y pipes.

Ahora que ya tenemos unas nociones básicas del manejo de ficheros surge el problema de cómo
buscarlos si no sabemos su localización concreta. Para ello Linux suele incorporar un sistema de base
de datos en el que se almacena una lista con todos los ficheros de la máquina, para hacer búsquedas de
forma rápida. Esta base de datos se actualiza mediante el comando 'updatedb' que emplea un cierto
tiempo en realizar el escáner de las particiones para luego poder realizar la búsqueda con el comando
'locate' pasándole como argumento el patrón que queremos buscar. Con 'locate -i' hacemos que ignore si
el patrón que pasamos como argumento está en mayúsculas o minúsculas. La mayoría de las
distribuciones implementan un servicio que actualiza la base de datos periódicamente, pero si queremos
forzar a que se actualice, deberemos ejecutar 'updatedb' con privilegios de administrador (root).

No obstante, cuando no se disponga de cuenta de administrador en una máquina y la base de datos no


haya sido actualizada últimamente siempre queda la opción de usar el comando 'find' que realiza una
búsqueda en tiempo real explorando todos los directorios. Este método es mucho mas lento que 'locate'
ya que la exploración a través del árbol de directorios de Linux es tediosa y además existe el agravante
de que al intentar entrar en directorios sobre los que no se tiene permisos el programa enviará mensajes
de error por pantalla. Pero tranquilos, ya veremos luego como evitarlos. Un ejemplo del uso del comando
'find' podría ser este:

[usuario@maquina usuario]$ find ~/ -name *mp3*

Para cualquier duda consulte [Link]

Comandos de Linux

El sistema Linux tiene una gran cantidad de sistemas de ayuda e información sobre comandos que se
pueden utilizar en cualquier momento:

Antes de comenzar es importante destacar que todos los nombres de ficheros y comandos son "case-
sensitive" (que hacen diferencia entre mayúsculas y minúsculas, a diferencia de sistemas operativos
como MS-DOS). Por ejemplo, el comando make es diferente a Make o MAKE. Lo mismo ocurre en el
caso de nombres de ficheros o directorios.

Cambio de directorio:

La orden para movernos por la estructura de directorios es cd, abreviación de "cambio de directorio". Hay
que destacar, que la mayoría de las ordenes UNIX mas usadas son de dos o tres letras.

La forma de uso de la orden cd es:

cd <directorio>

Donde <directorio> es el nombre del directorio al que queremos ir. Si usamos "cd" sin parámetros esto
nos llevará a nuestro directorio. Tenemos también dos punteros, uno al directorio padre ".." y otro a si
mismo "." Esto también fue copiado por DOS.

Consultar el directorio actual

Para saber en que directorio nos encontramos usaremos el comando "pwd"


Consultar el contenido de los directorios

Una vez que podemos navegar por nuestro árbol de directorio lo más importante es poder ver que
tenemos en cada uno. Para eso usaremos el comando "ls", ls vendría a ser "dir" del DOS, pero como
vemos más adelante es mucho mas poderoso como todos los comandos de Linux. Ls tiene muchos
parámetros que van a afectar su comportamiento, pero el mas usado sin duda ser "-l" que no mostrara
con mas detalle el contenido del directorio.

Consultar las páginas del manual

Es uno de los comandos que mas nos van a ayudar en el aprendizaje de Linux es "man" que siguiendo
con las comparaciones con el DOS vendría a ser el "help" con man podrá solicitar información de todos
los comandos e incluso algunos programas y aplicaciones tiene sus propias paginas de manual.

La forma de usarlo es:

man <comando>

Creación de directorios:

Para esto usaremos el comando "mkdir" como en DOS seguido del nombre del directorio a crear.

mkdir <nombre>

Copiado de archivos

La orden "cp" copia los ficheros listados en la línea de comandos al fichero o directorio pasado como
ultimo argumento.

cp <origen> <destinod>

Mover archivos

Tanto para mover como para renombrar archivos o directorios usaremos el comando "mv" de idéntica
manera a "cp" solo que en este caso no se preservará el origen.

mv <origen> <destino>

Borrado de archivos

Para borrar se usa "rm" que viene de remove. Se usa con un parámetro que es el nombre del fichero a
borrar o una lista de ellos. También lo podemos usar para borrar directorios completos con el parámetro
"-r" y hay que ser muy prudente y cuidadoso con este comando ya que podemos borrar todo lo que
contenga ese directorio hasta perder alguna información de algún subdirectorio y no poder salvarla.

rm <nombre de archivo o directorio>

Mirando los ficheros

Las ordenes "more", "cat" y "less" son usadas para ver el contenido de ficheros. More y less muestran el
fichero pantalla a pantalla mientras que cat lo muestra entero de una vez.

more <archivo>
less <archivo>
cat <archivo>
El sistema de ficheros y la jerarquía de directorios.

Primero cambie al directorio raíz (cd /) y ejecute ls -F. Probablemente vera estos directorios:

bin, dev, etc, home, install, lib, mnt, proc, root, tmp, user, usr, y var.

La distribución de directorios y archivos es Unix es muy ordenada y distinta que en DOS, veamos para
que usamos cada directorio.

/bin
es la abreviación de "binaries", o ejecutables. Es donde residen la mayoría de los programas esenciales
del sistema.

/dev
Los "ficheros" en /dev son conocidos como controladores de dispositivo (device drivers)_son usados para
acceder a los dispositivos del sistema y recursos, como discos duros, modems, memoria, etc

/etc
contiene una serie de ficheros de configuración del sistema. Estos incluyen /etc/passwd (la base de datos
de usuarios), /etc/rc (guiones de inicialización del sistema), etc.

/sbin
se usa para almacenar programas esenciales del sistema, que usara el administrador del sistema.

/var
contiene directorios que a menudo cambian su tamaño o tienden a crecer. Muchos de estos directorios
solían residir en /usr, por ejemplo en /var/adm encontraremos varios ficheros de interés para el
administrador del sistema, específicamente históricos del sistema, los cuales recogen errores o
problemas con el sistema.

/usr/src
contiene el código fuente (programas por compilar) de varios programas de su sistema. El mas
importante es /usr/src/Linux, el cual contiene el código fuente del kernel de Linux.

/usr/local
es el directorio donde normalmente pondremos nuestras aplicaciones.

/usr/include
contiene los ficheros de cabecera para el compilador de C. Estos ficheros (la mayoría de los cuales
terminan en .h, de "header") declaran estructuras de datos, subrutinas y constantes usados en la
escritura de programas en C. Los ficheros que se encuentran en /usr/include/sys son generalmente
usados en la programación de en UNIX a nivel de sistema. Si esta familiarizado con el lenguaje de
programación C, aquí encontrara los ficheros de cabecera como stdio.h, el cual declara funciones como
printf().

/usr/bin
es el deposito real de programas del sistema UNIX. Contiene la mayoría de los programas que no se
encuentran en otras partes como /bin.

/usr/X11R6
contiene todos los ejecutables de X Window, ficheros de configuración y de soporte.

/usr
es un directorio muy importante. Contienen una serie de subdirectorios que contienen a su vez algunos
de los mas importantes y útiles programas y ficheros de configuración usados en el sistema.
/proc
es un "sistema de ficheros virtual". Los ficheros que contiene realmente residen en memoria, no en un
disco. Hacen referencia a varios procesos que corren en el sistema, y le permiten obtener información
acerca de qué programas y procesos están en ejecución.

/lib
contiene las imagines de las librerías compartidas. Estos ficheros contienen código que compartirían
muchos programas.

/home
contiene los directorios "home" de los usuarios. Por ejemplo, /home/juan es el directorio del usuario
"juan".

[Link]

Administración básica (hay que ejecutar estos comandos como root):

En primer lugar debemos hacer login como root en el sistema, bien mediante la entrada normal al
sistema, o una vez que ya estamos conectados como un usuario, ejecutando el comando 'su' que nos
pedirá la contraseña de administrador, para convertir nuestra sesión actual en una con derechos totales
sobre la máquina.

A continuación vamos a listar unos cuantos comandos para configurar algunas de las tareas básicas de
administración del sistema:

- 'adduser': añade un nuevo usuario al sistema. Es un programa interactivo y te va preguntando lo que


necesita saber sobre el nuevo usuario. Sí, ya no tienes excusa para crearle una cuenta a tu mamá, papá
o hermanito :)

- 'deluser': borra usuario :)

- 'addgroup': añade un nuevo grupo.

- 'delgroup': borra el grupo de trabajo :)

Para modificar los grupos a la antigua usanza, simplemente con editar el fichero /etc/group podremos
añadir y quitar usuarios de grupos, respetando que cada línea tenga el formato:

grupo:x:UID:usuario1,usuario2,usuario3

- 'passwd': cambia tu contraseña de login (cada usuario se puede cambiar la contraseña a si mismo, y el
root se la puede cambiar a todo el mundo).

- 'drakconf': herramienta específica de Mandrake que cuenta con utilidades muy intuitivas para una
configuración global y básica de la máquina.

- 'lsmod': lista por pantalla los módulos cargados.

- 'modprobe': intenta cargar el módulo que se le pase como argumento.

- 'rmmod': borra de la memoria el módulo que se le pase como argumento.

Si alguno aún no tiene muy claro qué es eso de un módulo, no es más que un driver o controlador, para
un cierto dispositivo. Linux incorpora la mayoría de los módulos en las fuentes del núcleo, permitiendo
tener un núcleo modularizado o con los controladores compilados en el mismo. Los módulos que
tenemos instalados se encuentran en:
/lib/modules/VERSION/kernel/drivers/

Donde VERSION es la versión del kernel que estamos usando. Eso lo podemos averiguar mediante el
comando 'uname -a' que da cierta información básica de nuestro sistema Linux por pantalla.

- 'mount': permite montar dispositivos de hardware en el sistema de ficheros. Tiene tres modos de
funcionamiento, uno de ellos con sintaxis mas corta, en la que especificando el directorio que se quiere
montar lee el resto de la información del fichero /etc/fstab

( 'man fstab' para ver la sintaxis del archivo). El segundo modo es especificando directamente las
opciones de montado en la línea de comandos:

[root@maquina root]$ mount -t tipo_de_sistema_de_ficheros /dev/XXX /punto_de_montaje

Y en último lugar, si no se pasan argumentos simplemente imprime por pantalla los dispositivos
montados.

- 'umount': desmonta dispositivos. Simplemente con pasar en los argumentos el directorio a desmontar la
acción se realizará automáticamente.

- 'reboot': reinicia la máquina.

- 'halt': apaga la máquina.

- 'shutdown': es un programa que gestiona el apagado y reinicio de la máquina. Ejecute 'man shutdown'
para más información.

Puede ser útil comentar la existencia del sistema de ficheros virtual /proc, donde podemos conseguir
información sobre nuestro propio ordenador. Un sistema de ficheros virtual no es más que una
implementación de algún aspecto de la máquina en forma de sistema de ficheros, permitiendo la
transparencia al uso. A parte de /proc también está /dev/ que contiene entradas a los dispositivos de
hardware que tengamos.

- /proc/cpuinfo: información sobre nuestra CPU.

- /proc/kcore: representación de la memoria RAM. Por mucho que parezca que ocupa, tranquilos, no es
espacio en el disco físico, estamos en un sistema de ficheros virtual :)

- /proc/meminfo: cosas de la memoria.

- /proc/modules: muestra los módulos cargados actualmente.

- /proc/mounts: info de qué está o no montado.

- /proc/pci: lista los dispositivos pci que tengamos con información que puede resultar útil a la hora de
configurar algunas cosas.

- /proc/etc... : mas información...

No te confundas pensando que son ficheros lo que vez, no es mas que una representación virtual que
hace el núcleo de Linux, para permitir al usuario conocer el estado real de cada cosa. El tener este tipo
de representación puede ser interesante si usamos pipes con más comandos para realizar funciones
más complejas. Un ejemplo:

[usuario@maquina usuario]$ cat /proc/cpuinfo | grep -i mhz | sed -e


's/.*: /Mi procesador es de /' | mail -s

Este comando mandara un mail al amigo pepe diciéndole en el asunto la pregunta que vemos y en el
cuerpo del mensaje la cadena Mi procesador es de XXX donde XXX será lo que venga en /proc/cpuinfo

Para instalar/desinstalar software ya es un asunto muy concreto de la distribución que se use y de su


sistema de paquetes. Así RedHat y sus hijas , Mandrake, Suse, etc.. utilizan RPM s, que se gestionan
mediante el comando 'rpm'. Las distribuciones basadas en Debian utilizan paquetes DEB y su gestor
'dpkg' , pero además presentan una utilidad para la automatización de la
instalación/desinstalación/actualización de programas llamada APT ('apt-get')

Se me ha olvidado la password de root, ¿que hago?

Lo primero, no te preocupes demasiado, porque la solución es muy fácil. Solo tienes que, en el arranque
del ordenador, pasarle un parámetro al núcleo que cargaremos con el LILO. Para sacar la línea de
comandos del LILO basta con pulsar ESC y luego si la imagen de Linux se llama Linux pues poner
Linux single . Eso arranca lo mínimo del sistema y te pide la password de root. Puedes meter lo que
quieras, y eso quedara grabado como la password de root. Reinicia el sistema, y a seguir trabajando.

Si se te olvida la password de cualquier otro usuario, más fácil todavía, como se ha comentado antes, el
root puede cambiar la password de cualquier usuario que haya olvidado su contraseña sin más que
poner 'passwd usuario_despistao .

Existen numerosas páginas sobre documentación de Linux. Se puede visitar la página oficial del paquete
en cuestión o visitar en donde están muchos manuales traducidos al español.

[Link]

[Link]

[Link]

[Link]

[Link]

[Link]

[Link]

[Link]

[Link]

También podría gustarte