Logo Studenta

TOMO1-LINUX

¡Este material tiene más páginas!

Vista previa del material en texto

UTN - FRC LINUX Cátedra: Sistemas Operativos 
 
 
Ing. Allende – Ing. Serna - 1 - 
 
 
 
 
 
Prologo 
 
 
 
 
 
Aprender implica esfuerzo. Esta es la noción que se ha ido perdiendo. 
Que aprender es un trabajo, una tarea nada sencilla que demanda 
sacrificios. Que aprender supone que cada persona emprenda un 
esfuerzo individual destinado a modificarse a sí misma, por lo general 
con ayuda de otros. Allí interviene el docente, que con su 
conocimiento y experiencia guía al alumno a esa exploración y, sobre 
todo, lo interesa en emprenderla. 
 
Afirma un proverbio chino. “Los maestros abren la puerta, tú debes 
entrar por ti mismo”. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
UTN - FRC LINUX Cátedra: Sistemas Operativos 
 
 
Ing. Allende – Ing. Serna - 2 - 
Introducción 
 
 
En un primer momento nos propusimos confeccionar un apunte netamente practico, con 
actividades de laboratorio autocontenidas, es decir actividades resueltas y explicadas paso a 
paso. Pero a medida que fuimos avanzando en su desarrollo, sentimos la necesidad de 
complementar esas actividades con fundamentos teóricos, de cómo Linux administra los recursos 
de un sistema informático. 
 
El presente material es una guía Teórica-Práctica que contiene los conceptos teóricos 
propios de Linux y a su vez relaciona y refuerza los conceptos teóricos de los Sistemas 
Operativos en general. Cada tema es tratado conceptualmente y en forma practica por lo que se 
hace deseable disponer de al menos una PC para seguir las actividades que se van planteando. 
 
Los temas tratados en este trabajo han sido desarrollados con un nivel mínimo y 
homogéneo de profundidad, de forma tal que el alumno cuente con las bases necesarias para 
introducirse en el fascinante mundo de Linux y le sea posible la investigación posterior de los 
temas que sean de su interés. 
 
La organización de su contenido esta dividido en capítulos según el tema. Los capítulos 
contienen temas diagramados para desarrollar aproximadamente en una clase de laboratorio. Al 
final de cada capítulo hay actividades para reforzar la teoría y/o actividades practicas de 
laboratorio. Estas actividades integran los conceptos vistos en temas anteriores, están resueltas y 
acompañadas de una breve explicación conceptual. 
 
Además de las actividades de cada capítulo, se anexa una guía de ejercicios de practica 
libre, también resuelta, cuyo fin es reforzar los conceptos desarrollados, estas actividades se 
encuentran bajo el titulo de Prácticos Integradores. 
 
Al realizar este trabajo no pensamos que resultaría una tarea tan ardua, ya que hemos 
dedicado muchas horas de trabajo e investigación con el fin de lograr un material lo mas completo 
posible y en un lenguaje entendible para el alumno. Es por ello que la labor terminada nos han 
dejado la grata sensación de haber cumplido nuestros objetivos. 
 
Es nuestro compromiso agregar en la siguiente edición algunos temas que creemos son 
importantes de tratar pero, pero como el tiempo es tirano no pudimos incluirlos en la presente 
edición. Está de mas decir que serán bienvenidas todas las sugerencias y/o aportes que los 
docente y alumnos nos hagan llegar. 
 
 
 
 
 
 
 
 
 
 
 
 
 
UTN - FRC LINUX Cátedra: Sistemas Operativos 
 
 
Ing. Allende – Ing. Serna - 3 - 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1 
 
 
LINUX 
Primeros conceptos 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
UTN - FRC LINUX Cátedra: Sistemas Operativos 
 
 
Ing. Allende – Ing. Serna - 4 - 
 
Que es Linux? 
 
LINUX es un sistema operativo gratuito y de libre distribución. Una de cuyas mayores 
ventajas es su portabilidad a diferentes tipos de computadores, por lo que existen versiones de 
LINUX para casi todos los tipos de computadores, desde PC y Mac hasta estaciones de trabajo y 
supercomputadores. 
Al contrario que otros sistemas operativos, LINUX 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 costo) han hecho de este sistema 
operativo una opción para 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. 
 
 
Historia 
 
La aparición de LINUX en el mundo de la informática fue una evolución de la cultura de 
Unix. Este se desarrolló a mediado de los ’70 cuando los miniordenadores y los grandes sistemas 
dominaban el mundo corporativo. El problema histórico de Unix ha sido su inaccesibilidad a los 
programadores y desarrolladores que querían trabajar con él fuera de los grandes sistemas de 
ordenadores. Aunque posteriormente aparecieron versiones de Unix para PC, las primeras 
versiones comerciales costaban mas que el PC en el que se debían ejecutar. Esto facilitó el 
nacimiento de LINUX, de la mano de Linus Torvalds, un estudiante de la universidad finlandesa de 
Helsinki, quien, en 1991, se abocó a la tarea de reemplazar a Minix, un clon de Unix de pequeñas 
proporciones y finalidad académica, desarrollado años antes por Andrew Tannenbaun. 
En un principio Linus Torvalds escribió todo LINUX en Assembler , pero luego, llegada la 
hora de escribir algunos drivers, comenzó a utilizar C, con lo que notó una importante aceleración 
en los tiempos de desarrollo. 
A fines de Agosto de 1991, Torbalds ya tenía una precaria versión 00.1 de Linux, que era 
capaz de montar disquetes y contaba con un pequeño sistema de archivos, pero no fue anunciada 
como oficial ya que necesitaba de Minix para compilarla. En Octubre del ’91 fue anunciada 
oficialmente la versión 0.02, esta versión podía ejecutar las utilidades bash, gcc, gnu-make, gnu-
sed, y compress. Esta versión no era muy usable. 
A medida que avanzaba en su desarrollo, Torvalds fue dejando el código fuente de las 
sucesivas versiones del kernel (núcleo) y utilidades de Linux a disponibilidad de los usuarios de 
Internet. Este fue sin duda un gran acierto, ya que hizo posible que una multitud de 
desarrolladores de todo el mundo se familiarizaran con el código, lo cual significó un gran aporte 
de sugerencias, evolucionando luego hacia el desarrollo distribuido de software, que ha permitido 
a Linux alcanzar un alto nivel de desarrollo y madurez, así también como un amplio grado de 
aceptación. 
Aunque el Linux actual se ha desarrollado con el aporte de programadores del mundo, 
Torvalds aún mantiene el control sobre los cambios en la parte básica del sistema operativo, el 
núcleo. 
 
UTN - FRC LINUX Cátedra: Sistemas Operativos 
 
 
Ing. Allende – Ing. Serna - 5 - 
Esta es la mascota oficial de Linux, que fue elegida por el creador, para representar el 
sistema operativo que él había creado. Hoy en día todo el mundo asocia a este simpático pingüino 
con el sistema operativo Linux. 
 
 
Características 
 
Actualmente, Linux posee todas las características que pueden encontrarse en cualquier 
sistema Unix moderno: 
 
Multitarea real: La palabra multitarea describe la capacidad de ejecutar muchos programas al 
mismo tiempo sin detener la ejecución de cada aplicación. La multitarea es una virtud codiciada 
por muchos sistemas operativos, pero lograda por muy pocos. Casi todos los que dicen serlo lo 
son a medias; en cambio, la multitarea que usa LINUX administra los recursos garantizando que 
todos los procesos en ejecución, incluidos los que corren en background, tengansu tiempo de 
procesador. 
 
Multiusuario: LINUX es un sistema operativo multitarea y, obviamente, debe ser multiusuario, es 
decir que permite a distintas personas acceder al sistema compartiendo los recursos que el 
Administrador del Sistema (superusuario, root) le asigne de acuerdo con su jerarquía, dándole 
además a cada uno la privacidad y protección necesarias. 
 
Soporta consolas virtuales: lo que permite tener más de una sesión abierta en la consola de 
texto y conmutar entre ellas fácilmente. 
Soporta los estándares POSIX, BSD, IEEE y System V. 
 
Opera con todos los sistemas de ficheros estándar, como FAT de DOS, VFAT de Windows, 
OS2/FS, IS09660 (CD-ROM), Minix y otros. 
 
Sistema Operativo de Red: Su protocolo es TCP/IP (incluido en el kernel) y acepta todas la 
placas de red, SLIP, PPP para acceso serial a TCP/IP, PLIP para conexiones en paralelo, NFS 
Sistema de Archivos de Red, Telnet, NNTP, SMTP, IPX, AppleTalk. Por medio de la utilización del 
paquete Samba, Linux puede interactuar con servidores Windows NT y estaciones Windows For 
Workgroups y Windows95, para acceder desde Linux a recursos compartidos desde maquinas 
Windows (directorios e impresoras), y viceversa. El kernel incluye soporte para IPX, lo que le 
permite funcionar como ruteador en redes Novell. 
 
Direccionamiento de 32 bits reales en una PC y de 64 en una Alpha. Su kernel utiliza las 
característica del modo protegido de los micros 386 y superiores. 
 
Soporte completo de hardware, multimedia, módems, impresoras, placas de video, monitores, 
teclados, mouse, etc. 
 
Poderoso entorno gráfico con innumerables sistemas de ventanas. Los más populares son 
FWVM, GNOME, KDE, CDE, Enlightenment, Afterstep, NextLevel, @rM, etc. 
G.N.U.: si bien Linus Torvalds es el titular del derecho de autor de LINUX, todo, incluido el kernel 
con sus fuentes, está bajo licencia GNU. Esta licencia permite que todo el software desarrollado 
bajo este concepto sea de libre distribución, de modo que se ofrece software de calidad al público 
en general sin que los programadores pierdan sus derechos de autor y dejando abierta la 
posibilidad para que cualquier otro programador pueda ampliar o modificar el programa. 
 
Librerías compartidas: shared libraries, gracias a esta característica, no es necesario que las 
rutinas contenidas en librerías estándar se carguen más de una vez en memoria, ya que cualquier 
programa que se encuentre en tiempo de ejecución puede acceder a ellas. De esta manera, los 
binarios (ejecutables) de LINUX son de menor tamaño y permiten ahorrar espacio en disco y 
memoria. 
UTN - FRC LINUX Cátedra: Sistemas Operativos 
 
 
Ing. Allende – Ing. Serna - 6 - 
 
Carga por demanda: en la mayoría de los sistemas operativos, cada nuevo proceso (aplicación) 
que se lanza demanda memoria y recursos, y cuando se termina la RAM, automáticamente se 
comienza a hacer uso de la memoria virtual. Esto no ocurre en LINUX, puesto que su 
administración inteligente de memoria pasa a memoria virtual cualquier proceso que se encuentre 
activo pero no en uso, con lo que se garantiza RAM para las aplicaciones activas y en uso. 
Administración de memoria: todos los procesos tienen garantizada una zona protegida de 
memoria para su ejecución, sin que el mal funcionamiento de una aplicación cuelgue todo el 
equipo. 
 
Aplicaciones: gracias a la licencia GNU, el caudal de aplicaciones disponibles para LINUX crece 
a un ritmo vertiginoso, especialmente en Internet. Podemos decir que existe software para casi 
todas las necesidades. La única limitación para los usuarios de habla hispana es el idioma, ya 
que es muy difícil encontrar software traducido o de origen latino para LINUX. 
 
Herramientas de Desarrollo: LINUX es un sistema operativo hecho y pensado por 
programadores para programadores. A partir de esto, múltiples lenguajes de programación están 
disponibles bajo Linux. Sin duda el principal de ellos es GNU C/C++, pero también es posible 
desarrollar en Java, Objective-C, Pascal, LISP, BASIC, Perl, Ada, Eiffel, FORTRAN, Forth, Prolog, 
Oberon, Simula, Modula-2 y Modula-3, Smalltalk, y algunos otros. También, existen varios 
motores de bases de datos que pueden utilizarse bajo Linux; algunos de ellos son motores 
relacionales (tales como mBase, Thypoon, MiniSQL, Ingres y Postgres), y otros orientados a 
objetos (tal como LINCKS). La mayoría de ellos son de carácter experimental o académico, por lo 
que no igualan las prestaciones de los motores de base de datos comerciales, en especial las 
relacionadas con performace; sin embargo, el hecho de que su costo sea nulo hace que sea una 
opción a tener en cuenta al desarrollar un servidor de Intranet de pequeñas proporciones. 
 
 Seguridad: En lo referente a seguridad, puede mencionarse que el kernel de Linux tiene el 
soporte necesario para construir firewalls basados en filtrado de paquetes; también existe una 
versión para Linux de SOCKS, software de firewalling muy popular en los ambientes Unix. 
Convivencia: Linux es capaz de convivir en el mismo disco duro con otros sistemas 
operativos tales como DOS, Windows u OS/2, permitiendo la selección en el arranque del 
sistema operativo a bootear. Además de soportar su sistema de archivos nativo (ext2fs), 
Linux tiene soporte para acceder en modo de lectura/escritura a sistemas de archivo FAT 
(DOS) y VFAT (Windows95) y en modo de solo lectura a sistemas de archivo NTFS 
(Windows NT). 
 
Sitios en Internet 
• Linux Home Page: http://www.linux.org 
• Grupo de Usuarios Linux de Argentina: http://www.linux.org.ar 
• Edición Infomagic: http://www.infomagic.com 
• Distribucion RedHat Linux: http://www.redhat.com 
• HOW-TOs: los instructivos pueden obtenerse de los siguientes URLs 
ftp://ftp.funet.fi/pub/OS/Linux/doc/HOWTO - ftp://tsx-11.mit.edu/pub/linux/docs/HOWTO 
ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO 
• Linux Documentation Project: serie de libros sobre Linux; pueden obtenerse de 
ftp://sunsite.unc.edu/pub/Linux/docs/LDP 
UTN - FRC LINUX Cátedra: Sistemas Operativos 
 
 
Ing. Allende – Ing. Serna - 7 - 
Requerimientos del sistema 
 
Linux tiene menos requisitos de hardware, para realizar más funciones, que Windows 98 o 
NT estándar. Por ej., un 486 a 100MHz y 16 Mb de RAM puede ser utilizada como una estación 
de trabajo. Este sistema es capaz de ejecutar X Window , acceder a Internet y actuar como 
servidor de una red local. 
 Si le interesa utilizar el sistema Linux con mayores prestaciones deberá contar con los 
siguientes componentes: 
• Una CPU de la familia de los Pentium, mínimo de 133MHz. 
• 32 Mbytes de RAM son suficientes para el funcionamiento de una estación normal. Pero 
con 64 Mb obtendremos una clara diferencia en el rendimiento general del sistema. 
• Disco duro de 2GB, los discos grandes ofrecen mejores prestaciones. 
• Una tarjeta de video para la que existan controladores disponibles. 
 
 X Window® puede funcionar con tan solo 4 MB de RAM, pero su desempeño será mucho 
más lento. Algunas aplicaciones para X Window® pueden necesitar 16 MB, 32 MB o 64 MB de 
RAM, como es el caso de Netscape Communicator 4.7. 
Si desea instalar Linux en su PC con las suficientes aplicaciones para ser totalmente 
funcional y productivo y contar con el espacio necesario para instalar un paquete de oficina (como 
StarOffice 5.1) y trabajar con sus archivos, es recomendable contar con al menos 1.2 GB de 
espacio en disco, al menos 32 MB de RAM y un microprocesador AMD K6, K6-II, K6-III, Pentium, 
Pentium MMX, Pentium II, Pentium III, o Cyrix MII . 
 Si usted posee hardware casi obsoleto tenga en cuenta que se puede ejecutar Linux en un 
386 con sólo 4Mb de RAM, es decir que instalaremos un Linux mínimo. Sin embargo una máquina 
así tendrá las siguientes limitaciones: 
• No podrá ejecutar la interfaz gráfica ( X- Window System). 
• Habrá un número reducido de programas en multitarea. 
• El bajo rendimiento evitaráel uso del sistema para determinadas tareas críticas. Ej: como 
servidor de red o de correo. 
No obstante, esta mínima configuración nos permitirá utilizar el sistema como terminal de 
un servidor Linux o Unix y como servidor de bajo rendimiento para servicios como DNS 
(Domain Name Server) o servidor de comprobación para una red pequeña. 
 
 
Arquitectura 
 
En la arquitectura de Linux podemos identificar un núcleo o kernel y sobre él una capa de 
shell o interfaz de usuario. 
El kernel es la parte del sistema operativo mas cercana al hardware del computador y se 
considera como el corazón del sistema. Dentro de él podemos distinguir los siguientes módulos: 
 
§ Gestión de procesos 
§ Gestión de archivos 
§ Gestión de memoria 
§ Gestión de Entrada –Salida 
§ Interfaz de llamadas al sistema 
 
La interfaz de llamadas al sistema recibe los pedidos de los programas de usuario o de 
programas de biblioteca. En los cepos el S.O. determina si un error producido en uno de estos 
procesos es fatal y dependerá del diseño del S.O. la acción que se lleve a cabo. El Subsistema 
de control de procesos se encarga de la interrupciones, la planificación de procesos, la 
comunicación entre los procesos y la gestión de memoria. El Subsistema de Archivos intercambia 
los datos entre la memoria y los dispositivos externos. Control de Hardware, son rutinas primitivas 
que interactúan directamente con el hardware. 
UTN - FRC LINUX Cátedra: Sistemas Operativos 
 
 
Ing. Allende – Ing. Serna - 8 - 
No todas las funciones de un determinado módulo deben formar parte fija del kernel, sino 
que pueden ser cargados como módulos en tiempos de ejecución. Durante la configuración del 
kernel es cuando se determina cuales de ellas se incorporan en forma fija al mismo y cuáles como 
módulo. 
Los módulos del kernel se guardan en lib/modules/<versión> (donde versión corresponde a 
la versión actual del kernel). 
Siempre que sea posible se debe aprovechar la posibilidad de usar módulos. Las funciones 
del kernel que no se necesitan durante el arranque de la computadora, se deben tratar como 
módulos, de este modo se asegura que el kernel no crezca demasiado, y que ni la BIOS ni ningún 
gestor de arranque, tenga problemas al cargar el kernel. 
Un ejemplo claro de las funciones que siempre tienen que formar parte del kernel, es el 
driver del disco duro, el soporte del sistema de archivos ext2, mientras que el soporte de isofs, 
msdos o sound siempre se deberían compilar como módulos. 
 Esto permite que cada modulo pida servicios al núcleo del sistema quien cargará en 
memoria las rutinas o módulos necesarios para determinadas tareas. 
 
Fig. 1. Diagrama de bloques del núcleo de un sistema UNIX-LINUX [Stallings] 
 
 
Distribuciones 
 
 Una distribución es un conjunto de utilerías, herramientas y programas que facilitan el 
trabajo con el sistema. Las distribuciones se pueden diseñar a partir de diferentes versiones del 
núcleo, pueden incluir conjuntos diferentes de aplicaciones, utilidades y controladores, y pueden 
ofrecer distintos procedimientos de instalación y actualización. 
Actualmente son varias las distribuciones de Linux más difundidas, entre ellas podemos 
mencionar Debian, Slackware, Suse, RedHat, Mandrake, Conectiva, Caldera, Ututo (desarrollo 
argentino). El único elemento común entre ellas es el kernel. 
Programa de Usuario
cepos Bibliotecas
Nivel de Usuario
Nivel del Núcleo
Comunicación 
entre procesos
Subsistemas
de Control de Planificador
Procesos
Gestión de 
Memoria
Caracteres Bloques
Nivel del Núcleo
Nivel del Hardware
Control de Hardware
Hardware
Interfaz de llamada al sistema
Subsistemas de Archivos
Cache de Buffers
Controladores de Dispositivos
UTN - FRC LINUX Cátedra: Sistemas Operativos 
 
 
Ing. Allende – Ing. Serna - 9 - 
 
Versiones del Kernel 
 
Existen dos versiones del Linux kernel: 
Versión de producción: La versión de producción, es la versión estable hasta el momento. Esta 
versión es el resultado final de las versiones de desarrollo o experimentales. 
Cuando el equipo de desarrollo del kernel experimental, decide que ha conseguido un 
kernel estable y con la suficiente calidad, se lanza una nueva versión de producción o estable. 
Esta versión es la que se debería utilizar para un uso normal del sistema, ya que son las versiones 
consideradas mas estables y libres de fallos en el momento de su lanzamiento. 
Versión de desarrollo: Esta versión es experimental y es la que utilizan los desarrolladores para 
programar, comprobar y verificar nuevas características, correcciones, etc. Estos núcleos suelen 
ser inestables y no se deberían usar, a no ser que sepas lo que haces. 
Como interpretar los números de las versiones: 
• Las versiones del kernel se numeran con 3 números, de la siguiente forma: XX.YY.ZZ 
• XX: Indica la serie principal del kernel. Hasta el momento solo existen la 1 y 2. Este 
numero cambia cuando la manera de funcionamiento del kernel ha sufrido un cambio muy 
importante. 
• YY: Indica si la versión es de desarrollo o de producción. Un numero impar, significa que 
es de desarrollo, uno par, que es de producción. 
ZZ: Indica nuevas versiones dentro de una versión, en las que lo único que se ha 
modificado, son fallos de programación /bugs. 
Unos ejemplos nos ayudaran a entenderlo mejor: 
• ej1: versión del kernel 2.0.0: Kernel de la serie 2 (XX=2), versión de producción 0 (YY=0 
par), primera versión de 2.0 (ZZ=0) 
• ej2: versión del kernel 2.0.1: Kernel de la serie 2, versión 0, en el que se han corregido 
errores de programación presentes en la versión 2.0.0 (ZZ=1) 
• ej3: versión del kernel 2.1.100: versión 100 del kernel de desarrollo 2.1. 
 
Tipos de Shell 
 
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 se 
denominan shell. 
El trabajo con Linux (por defecto) no se realiza de una forma gráfica, sino introduciendo 
comandos de forma manual. 
El shell es capaz de interpretar una gran gama de comandos y sentencias. Permite 
construir muchos programas y comandos, llamados shellscripts, que nos da la posibilidad de 
automatizar diversas tareas. 
Existen muchos tipos de shells orientados a caracteres (modo texto). A éstos shells los 
encontramos como archivos ejecutables en el directorio /bin. Los shells más utilizados son 
• ash: A shell 
• csh: C shell 
• tcsh: una extención al C shell 
• ksh: Korn Shell 
UTN - FRC LINUX Cátedra: Sistemas Operativos 
 
 
Ing. Allende – Ing. Serna - 10 - 
• bsh: Bourne Shell 
• bash: Bourne Again Shell 
El carácter indicativo de Bourne y Korn shell es el signo $. El signo % se refiere a C shell, 
estando reservado el símbolo # para la cuenta de administrador. El más utilizados por las 
distintas distribuciones Linux, es bash. Toma las facilidades de csh y ksh. Ofrece entre otras 
posibilidades las siguientes: 
 
Completamiento durante la escritura. 
Al teclear uno o varios caracteres se puede pulsar TAB con el objetivo de que en caso de 
que pueda completarse de forma unívoca un comando, nombre de fichero o una variable 
(en dependencia del contexto), se realice el completamiento de forma autómatica (se 
escriba el resto de la palabra). 
 
Historial de comandos. 
Esta es una facilidad de muchos otros shells que permite el movimiento (con las teclas de 
cursor arriba y abajo) a través de los últimos N comandos ejecutados, en la sesión actual 
o en las anteriores. N por defecto es 1000, pero puede modificarse. 
 
Estructuras de control 
 if, for, while, select y case 
 
Definición de funciones y alias para comandos 
Las funciones permiten definir subrutinas y los alias, asociar nombres a comandos con 
ciertas opciones y argumentos de forma más nemotécnica o abreviada. 
 
 El usuario puede cambiar el shellasignado por defecto simplemente tipeando el nombre de 
éste, por ejemplo: 
$ csh <Enter> 
% < Aparece el prompt % de C shell.> 
 
Interfaces 
 
Una vez instalado e inicializado el sistema operativo Linux, se dispone de dos vías 
fundamentales de interacción: una de texto conocida como consola o terminal y una gráfica. 
Para muchas personas el hecho de tener que introducir los comandos de forma manual les 
puede parecer intimidante y dificultoso, por lo que, casi todas las distribuciones más recientes 
incluyen el sistema X Window , el cual es el encargado de controlar y manejar la interfaz de 
usuario en forma gráfica. 
Para el caso de Linux se utiliza una implementación de X Window con código abierto (open 
source) denominada XFree86 que también está disponible para otros sistemas tipo Unix. 
La arquitectura de un sistema X es del tipo cliente-servidor. El servidor se encarga de 
tomar la entrada de los usuarios y hacerla llegar a las aplicaciones clientes, además de recibir y 
redireccionar las salidas de estas aplicaciones. Por lo general el servidor X se ejecuta en la misma 
estación que las aplicaciones clientes, pero la posibilidad más atractiva y útil de este tipo de 
servicio es el poder ejecutar aplicaciones clientes en máquinas remotas e interactuar con ellas en 
otra máquina que cuente con un servidor X. De esta forma se puede configurar terminales X de 
pocas disponibilidades en hardware pero que ejecuten un servidor X capaz de servir aplicaciones 
gráficas que se ejecutan remotamente en otra máquina más potente. También existe la posibilidad 
de que desde una única estación de trabajo con un servidor X se interactúe con aplicaciones 
gráficas que se ejecutan realmente en distintas máquinas . 
UTN - FRC LINUX Cátedra: Sistemas Operativos 
 
 
Ing. Allende – Ing. Serna - 11 - 
Actividades 1 
 
1. Enumere las características principales del SO Linux. 
 
2. El núcleo del sistema LINUX, se denomina: 
 
a. Shell b. BIOS c. Kernel d. File System e. Ninguna 
 
3. Marque cuales de los siguientes son shells de Linux: 
 
a. msh b. ash c. bsh d. bash e. csh f. xsh g. ksh h. fsh
 
 
4. En comparación con otros S.O. con Linux se pueden realizar más funciones con menos 
requerimientos de hardware. 
 
Verdadero Falso 
 
5. Cuales son las interfaces posibles de Linux? 
 
 
 
Actividad 2 
 
1. Un linux totalmente funcional y productivo (interfaz gráfica , staroffice, etc) requiere como 
mínimo el siguiente hardware: 
a. 512 Mbyte de disco 
b. 1,2 Gb de disco 
c. 2 Gb de disco 
d. Procesador 386 
e. 32Mb de RAM 
f. 4 Mb de RAM 
g. procesador Pentium o superior 
h. 16 Mb de RAM 
 
2. Los módulos del Kernel en el directorio /lib/modules/<versión> V ó F 
 
3. Explique a que hace referencia <versión> , del punto anterior. 
 
4. Todas las funciones de un determinado módulo deben formar parte fija del kernel. V ó F 
 
5. Las siguientes son distribuciones de Linux: 
a. RedHat 
b. Conectiva 
c. Karatte 
d. Caldera 
e. AutoLink 
f. Suse 
UTN - FRC LINUX Cátedra: Sistemas Operativos 
 
 
Ing. Allende – Ing. Serna - 12 - 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2 
 
Entrada al Sistema 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
UTN - FRC LINUX Cátedra: Sistemas Operativos 
 
 
Ing. Allende – Ing. Serna - 13 - 
 
El concepto de arranque en Linux 
 
 Al encender la computadora, luego de realizar los chequeos de rutina, se carga el kernel 
desde el disco rígido. El Kernel toma el mando de todo el hardware, lee los valores 
predeterminados de la BIOS e inicializa las interfaces elementales de la placa base. Acto seguido 
realiza la carga del Files-system, es decir que monta la partición raíz al directorio /. 
El Kernel establece sus tablas y realiza una serie de procesos internos antes de llamar al 
proceso init . Estos procesos internos son los que tienen PID (identificador de proceso) negativo. 
 El proceso init tiene PID igual a uno, y lo podemos considerar como el padre de todos los 
procesos. Es el que realiza realmente la inicialización del sistema. Como lo ejecuta directamente 
el kernel, init no puede ser interrumpido ni aún por la señal 9, que se utiliza para interrumpir 
cualquier proceso. 
 Init lee el fichero de configuración /etc/inittab desde donde ejecuta diferentes procesos. 
En cada terminal virtual, init ejecuta un proceso /etc/getty, que dispone la terminal para que el 
usuario pueda conectarse. Para ello getty arranca el proceso login. 
 
Desde el archivo de configuración inittab, init ejecuta los procesos rc. Existen varios rc 
ubicados en /etc. Estos procesos ejecutan comandos de inicialización como por ejemplo montar 
sistemas de archivos, inicializar el espacio de intercambio (swap), configurar la red y arrancar los 
demonios; es decir, lleva al sistema a un entado en el que puede recibir ordenes de los usuarios. 
Por ejemplo, /etc/rc.d/init.d/network arranca las interfaces de red. 
 
Sencillamente el archivo /etc/sysconfig/init controla cómo el sistema aparecerá y funcionará 
durante el momento de arranque. 
Se usan los siguientes valores: 
 
♦ BOOTUP=<value>, donde <value> es uno de los siguientes: 
w BOOTUP=color significa el color estándar del despliegue al momento de arranque, 
donde el éxito o falla de dispositivos y servicios al iniciarse es mostrado en diferentes 
colores. 
w BOOTUP=verbose es un tipo de despliegue viejo, que provee de más información que 
el simple mensaje de éxito o falla. 
w Cualquier otra cosa significa un nuevo despliegue, pero sin el formato ANSI. 
♦ RES_COL=<value>, donde <value> es el número de la columna de la pantalla para 
comenzar las etiquetas de estado. Predeterminado a 60. 
♦ MOVE_TO_COL=<value>, donde <value> mueve el cursor al valor en la línea RES_COL a 
través del comando echo -en. 
♦ SETCOLOR_SUCCESS=<value>, donde <value> coloca el color a un color que indica el 
éxito a través del comando echo -en. El color predeterminado es verde. 
♦ SETCOLOR_FAILURE=<value>, donde <value> configura el color a un color que indica la 
falla a través del comando echo -en. El color predeterminado es rojo. 
♦ SETCOLOR_WARNING=<value>, donde <value> coloca el color para indicar advertencia a 
través del comando echo -en. Por defecto el color es amarillo. 
♦ SETCOLOR_NORMAL=<value>, donde <value> reconfigura el color a "normal" a través de 
echo. 
♦ LOGLEVEL=<value>, donde <value> configura el nivel de conexión de la consola inicial 
para el kernel. El valor por defecto es 3; 8 significa cualquier cosa (incluyendo depuración); 
1 significa pánico del kernel. El demonio syslogd ignora esta configuración una vez que se 
ha arrancado. 
♦ PROMPT=<value>, donde <value> es uno de los siguientes valores boleanos: 
w yes — Activa la verificación de claves para el modo interactivo. 
w no — Desactiva la verificación de claves para el modo interactivo. 
 
UTN - FRC LINUX Cátedra: Sistemas Operativos 
 
 
Ing. Allende – Ing. Serna - 14 - 
En inittab también se especifica el nivel de ejecución (Runlevel) del sistema. El Runlevel 
estándar, en el cual arranca el sistema, está en el archivo /etc/inittab, en initdefault, y dependerá 
de la distribución que se haya instalado (en el caso de de Red Hat 6.2 el nivel es por defecto es 5) 
 
Existen siete niveles de ejecución, a saber: 
 
Runlevel Descripción 
0 Halt (Do NOT set initdefault to this) 
1 Single User Mode 
2 Multiuser without NFS 
3 Full Multiuser mode 
4 Unused 
5 X11 
6 Reboot (Do NOT set initdfault to this) 
 
Se puede cambiar a otro Runlevel, mediante la orden init y el nivel correspondiente: 
 $ init 1 
 
 Si los usuarios quieren ingresar directamente al entorno gráfico X Window, se puede 
cambiar el 
Runlevel a: 
 $ init 5 
 
 Al realizar un cambio de Runlevel, se ejecutan losprogramas de parada del Runlevel 
actual, por lo que los procesos que se estaban ejecutando finalizan, luego se inicializan los 
programas de arranque del nuevo Runlevel. 
 En el Runlevel 1 el sistema se inicia en modo monousuario, en donde la máquina no tiene 
recursos de red, y solo admite un único usuario. Este modo de trabajo es muy útil cuando el 
supervisor (usuario root) necesita realizar tareas de mantenimiento, sin tener que preocuparse de 
que pueda haber otros usuarios realizando tareas. 
En algunas versiones cuando sucede una fallo general de sistema éste se reinicia 
automáticamente en modo monousuario. 
 
 
Cierre del sistema 
 
 Antes de apagar la máquina (servidor) deberá ejecutar el comando shutdown, que envía 
un aviso de cierre del sistema a los usuarios que están conectados, y envía una señal a los 
procesos activos, dándoles tiempo para almacenar sus datos. Cumplido éste tiempo los mata con 
la orden kill. 
 No es conveniente apagar la máquina sin la ejecución de ésta orden pues debemos dar 
tiempo al núcleo del sistema operativo de guardar en el disco toda la información que está en 
memoria, como puede ser, archivos abiertos y actualizados. Linux también mueve y actualiza 
archivos básicos del sistema por lo que al apagar directamente la máquina podrá dañar éstos 
archivos y el sistema Linux tendrá problemas luego para ejecutarse. 
 La estructura de la orden de cierre es la siguiente: 
 
 shutdown [-t segundos ] [ -opciones] tiempo [mensaje de aviso ] 
 
 El mensaje de aviso de cierre del sistema comienza por “Broadcast Message …” a todos 
los usuarios conectados. Luego por defecto, shutdow hace una pausa de 60 segundos antes de 
continuar con el proceso de desconexión. Podemos cambiar este intervalo de tiempo con la 
opción –t y número de seguntos de espera: 
 
 # /sbin/shutdown -t180 
UTN - FRC LINUX Cátedra: Sistemas Operativos 
 
 
Ing. Allende – Ing. Serna - 15 - 
Es decir que esperará 3 minutos para que los usuarios cierren sus aplicaciones y graben 
sus datos. Cabe aclarar que ésta órden es ejecutada por el usuario supervisor, quién utiliza su 
clave para ejecutar éste proceso. 
La página man para shutdown tiene una lista completa de opciones, pero las dos más 
usadas son: 
 
# /sbin/shutdown -h now 
# /sbin/shutdown -r now 
 
Después de apagar todo, la opción -h detendrá la máquina, y la opción -r la reiniciará. 
Los usuarios no root pueden usar los comandos reboot y halt para apagar el equipo 
mientras se está en niveles de ejecución 1 hasta 5. Sin embargo, no todos los sistemas 
operativos Linux soportan esta característica. Si la computadora no se apaga, tenga cuidado de 
no apagar la computadora hasta que aparezca un mensaje indicando que el sistema ha sido 
detenido. Si no espera por este mensaje puede significar que no todas las particiones de discos 
duros han sido desmontadas, y puede llevar a un sistema de archivos corrupto. 
 
 
Inicio de sesión 
 
Para comenzar a trabajar con el sistema operativo es necesario abrir una sesión de 
trabajo, para ello deberá introducir el nombre de usuario y contraseña, las cuales lee y verifica el 
programa login. De esta manera el sistema proporciona seguridad, ya que lleva la cuenta de 
quién es el dueño de los archivos y quién tiene acceso a ellos. Dependiendo de la configuración, 
la pantalla que aparecerá puede ser en modo gráfico o en modo texto. 
 El comando login es el que pide el nombre de usuario (username) con el cual el SO 
identifica una cuenta de usuario. Luego pide la palabra clave, la cual no se visualiza en pantalla. 
Login toma el username y verifica su existencia en el archivo /etc/password. La clave se verifica 
contra el archivo /etc/shadow. 
 
Login: username <Enter> 
Password: 
 
Cuando el usuario introduce la contraseña no habrá eco desde el sistema, por lo que hay 
que ser cuidadoso a la hora de teclearla. 
 
 Una vez que el sistema acepta al nuevo usuario, aparecerá una serie de mensajes en 
pantalla dependiendo de la configuración del sistema, por último se mostrará el indicativo del shell, 
el signo $ (para bash). El usuario comienza su sesión en un directorio de trabajo que le es 
propio, donde él es el dueño, generalmente /home/nombre de usuario. 
 
 
Cierre de sesion 
 
 Cerrar la sesión es muy importante porque, varios usuarios estar compartiendo los 
recursos del sistema. Este lleva la pista del usuario que termina su sesión, cierra los archivos del 
usuario y finaliza los procesos activos. Si éstos procesos quedan funcionando, provocan una 
carga innecesaria en el sistema y perjudican a otros usuarios. 
 Para cerrar la sesión desde el indicativo de comandos, teclee: 
 $ logout 
quién, una vez que cierra la sesión, llama a login. También puede utilizar el comando exit o 
teclear 
ctrl. d. 
UTN - FRC LINUX Cátedra: Sistemas Operativos 
 
 
Ing. Allende – Ing. Serna - 16 - 
 
Terminales Virtuales 
 
Al igual que Unix, Linux ofrece el mecanismo de consolas de texto o terminales virtuales. 
Este consiste en que a partir de una entrada (el teclado) y con una salida (el monitor) se simulen 
varias terminales, donde el mismo, o distintos usuarios puedan conectarse indistintamente. De 
esta forma, es posible tener más de una sesión abierta en la misma máquina y trabajar en ellas 
indistintamente. Este mecanismo también facilita la característica multiusuario del sistema Linux, 
pues las diferentes conexiones se pueden establecer con diferentes usuarios. 
 Se puede acceder a las terminales virtuales tecleando Crtl+ALT+F1, Crtl+ALT+F2, 
Crtl+ALT+F3, Crtl+ALT+F4, Crtl+ALT+F5, Crtl+ALT+F6. En cada una de ellas se debe loguear un 
usuario. 
Estando en modo texto podemos presionar Crtl+ALT+F7 que nos conduce al entorno 
gráfico Xwindow, desde dónde podemos abrir consolas virtuales con las teclas Alt+F1 a Alt+F6 en 
este caso el sistema no solicita abrir una nueva sesión de trabajo con el comando login. 
 Es posible abrir terminales xterm desde Xwindow con ALT+F2 y ejecutando el comando 
xterm. 
 
 
Formato de la línea de comandos 
 
 Antes de conocer los comandos de Linux su formato, se hace necesario saber primero 
¿Qué es un comando?. 
 Para linux, un comando es cualquier archivo ejecutable . Por lo que cada usuario puede 
construir archivos con una estructura especial que le permita ser ejecutados, y añadirlo a su lista 
de comandos. 
Linux utiliza un formato sencillo para la línea de comandos , en donde la mayoría de ellos 
está formado por sólo dos letras. El formato general es: 
 
 Comando [-opciones ] argumento1 argumento2 
 
• El nombre del comando es siempre necesario. 
• Los comandos siempre van escritos en letra minúscula y la mayoría de las opciones 
también. 
• Las opciones son caracteres o adverbios que siempre van precedidos de un guión. 
• Los argumentos pueden o no ser necesarios, sin embargo los nombres de archivos 
que especifique pueden ser rutas de acceso relativas o absolutas. Por ejemplo: ls 
../../dev 
• En los argumentos podemos utilizar metacaracteres, como son * y ?. 
 
 
$ ls -a –color=yes /usr/conf* 
 
La orden anterior lista todos los archivos, ocultos y no oculto, cuyo nombre comience con 
las letras conf, diferenciando con colores los distintos tipos de archivos. 
 
 
No olvide que los nombres de los archivos de Linux incluidos los comandos distinguen las 
mayúsculas de las minúsculas. El sistema ordena alfabéticamente las mayúsculas antes que las 
minúsculas. 
 
UTN - FRC LINUX Cátedra: Sistemas Operativos 
 
 
Ing. Allende – Ing. Serna - 17 - 
Actividad 1 
 
1. Abra una sesión de trabajo con un nombre de usuario que le asigne su administrador. En este 
ejemplo utilizaremos el username usuarioxx 
 
 login: usuarioxx 
 password: 
 
A continuación aparecerá el prompt del sistema que dependerá del shell que utilice el usuario. 
 
2. Tipee el comando who que le permitiráver que usuarios han iniciado una sesión con el 
sistema. 
 
La salida de este comando nos muestra, en la segunda columna, la terminal virtual (archivo 
especial de dispositivo) en el cual esta trabajando el usuarioxx 
 
3. Abra otra sesión de trabajo con el username usuarioyy 
Ctrl.+Alt+F2 
login: usuarioyy 
password: 
Ejecute el comando who nuevamente . 
 
Cuántos usuarios informa el sistema que están conectados? _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
 
Puede distinguir en que terminales esta trabajando cada usuario? _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
 
4. Diga qué es una terminal virtual. 
 
 
Actividad 2 
 
1. Regrese al entorno grafico con Ctrl.+Alt+F7 y abra una consola virtual con Alt+F1, y otra con 
Alt+F2 y ejecute el siguiente comando en la consola activa: 
 
ls -R /home 
 
2. Ejecute en la consola numero 1 el siguiente comando 
 
ls -R /etc 
 
En cada una de las consolas virtuales esta ejecutándose una tarea distinta, observe que 
ambas están siendo atendidas por el microprocesador en un pseudoparalelismo, por lo que 
estamos frente a un ejemplo claro de multitarea. Puede alternar de una consola a otra con 
el simple movimiento del mouse 
 
3. Ejecute el comando who y podrá observar que usuarioyy esta activo en varias consolas. 
Identifique en cuantas está activo y en cuales. 
 
4. Cambie al shell de C. 
 csh 
UTN - FRC LINUX Cátedra: Sistemas Operativos 
 
 
Ing. Allende – Ing. Serna - 18 - 
Actividad 3 
 
1. Que función cumple el proceso getty? 
a) Inicializa la terminal 
b) Inicializa los drivers 
c) Determina el runlevel 
 
2. El Runlevel por defecto es: 
a) Monousuario 
b) Multiusuario con red y Xwindow 
c) Multiusuario sin red 
 
3. El proceso shutdown efectúa: 
a) Cierre de sesión 
b) Termina los procesos y cierra archivos 
c) Cierra archivos solamente 
 
4. Cual es la función del comando login? 
 
5. Explique la diferencia entre los comandos shutdown y logout. 
 
6. Explique cual es la estructura de la línea de comandos. 
 
7. Al realizar un cambio de Runlevel no es necesario dar de baja a los procesos que se están 
ejecutando. V ó F 
 
8. Al iniciarse una sesión de trabajo, que datos requiere el comando login, y que archivos utiliza 
para validar los mismo? 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
UTN - FRC LINUX Cátedra: Sistemas Operativos 
 
 
Ing. Allende – Ing. Serna - 19 - 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3 
 
Conociendo el Sistema de Archivos 
(File System) 
 
 
UTN - FRC LINUX Cátedra: Sistemas Operativos 
 
 
Ing. Allende – Ing. Serna - 20 - 
El Sistema de Archivos 
 
Una de las principales funciones de un Sistema Operativo es la administración del 
almacenamiento de la información, para lo cual es necesario contar con un “Sistema de Archivos” 
o “File System”. 
Con este término se hace referencia, por un lado, a los mecanismos y estructuras que el 
sistema operativo utiliza para organizar la información en medios físicos tales como discos y 
diskettes (aspecto físico del sistema de archivos), y por otro a la visión que es ofrecida al usuario 
para permitir la manipulación de la información almacenada (una abstracción, o perspectiva lógica 
del sistema de archivos). 
 
El File System de Linux 
 
En Linux (como en cualquier Sistema Operativo) se puede diferenciar el sistema de 
archivos que está almacenado en las particiones del disco y otros dispositivos, y el sistema de 
archivos tal y como lo presenta al usuario un equipo ejecutando Linux como software de base. En 
Linux se monta un sistema de archivos de disco en el sistema de archivos del equipo en 
funcionamiento. 
Un disco duro no es más que un gran espacio sobre el que se puede escribir unos y ceros. 
Un sistema de archivos impone cierta estructura en ello, y hace que parezca que hay archivos 
dentro de directorios, y directorios dentro de directorios. Cada archivo se representa por un i-nodo, 
que contiene información de a quién pertenece el archivo, cuándo se creó y dónde encontrar su 
contenido. Los directorios también se representan por medio de i-nodos, pero estos contienen 
información sobre dónde encontrar los i-nodos de los archivos que están en el directorio. 
Por ejemplo, si el sistema quiere leer /home/maría/imagen1.jpg primero busca el i-nodo del 
directorio raíz ”/ “, luego busca el i-nodo del directorio home en el contenido de “/”, luego busca el 
i-nodo del directorio maría en el contenido de /home, luego el i-nodo de imagen1.jpg que le dirá 
qué bloques del disco leer. 
 La facultad que tienen los directorios de poder contener, a su vez, otros directorios 
(denominados subdirectorios) permite una organización o estructura jerárquica con la forma de un 
árbol invertido. El directorio inicial de esa jerarquía se denomina directorio raíz y se simboliza con 
una barra de división (/). 
 En Linux la palabra raíz se utiliza para denominar dos conceptos. Uno es el usuario raíz 
(user root) la persona con control absoluto en la administración del sistema. El otro es el concepto 
de directorio raíz: un directorio específico que se considera la base del sistema de archivos. 
 Cada file system pertenece a una clase o tipo que define la característica administrativa. 
Así como Windows 9x, usa FAT, y Windows NT hace lo suyo con NTFS, el LINUX en particular 
adopta el sistema de archivo Ext2 . Aparte con este sistema de archivos Linux puede manejar los 
antiguos minix y ext y otros sistemas no propios de Linux como los sistemas Fat de MS-DOS y 
Windows y el sistema iso9660 de los CD-Rom. 
 
Características de Ext2 (Extended File System 2) 
 
• El ext2 es un sistema de archivos mucho más avanzado que el MS-DOS, con soporte de 
corrección y detección de errores, compresión de archivos, mayor tolerancia a la 
fragmentación de archivos y con tiempos de respuesta muy superiores, aunque a un coste 
superior de utilización de memoria. 
• El ext2 tiene una unidad similar al Cluster, llamada bloque, y que es, por lo general de 1K, 
especificable por el usuario e independiente del tamaño de la partición, lo cual asegura un 
buen aprovechamiento del espacio libre con archivos pequeños. 
• El ext2 tiene soporte para detección de un sistema de archivos desmontado incorrectamente 
cuando el sistema se apaga de forma errónea, y capacidad para autorecuperarlo en caso de 
fallo accidental. 
• El ext2 mantiene información de la última vez que se montó y se accedió al volumen (sistema 
de archivos), el número de veces que se ha montado dicho volumen desde la última 
UTN - FRC LINUX Cátedra: Sistemas Operativos 
 
 
Ing. Allende – Ing. Serna - 21 - 
comprobación automática, y así como la fecha en la que se comprobó su integridad por última 
vez. 
• El ext2 permite asignar un porcentaje del disco duro que se reserva para el uso de usuarios 
con un "uid" (identificación de usuario) y "gid" (identifcación de grupo) específicos. 
 
 
Organización de los directorios 
 
Se denomina “root file system” al sistema de archivos que contiene al sistema operativo y 
los directorios y archivos que se distribuyen con el mismo. 
En todas las distribuciones de Linux (incluso con las distintas versiones), todo parte del 
directorio raíz ( / ) del que “cuelgan” los demás directorios. Los más importantes se enumeran a 
continuación, explicando lo que contienen: 
 
/bin: contiene los archivos ejecutables básicos que constituyen las herramientas elementales para 
trabajar 
/lib: contiene las librerías de los lenguajes instalados como por ejemplo el lenguaje C. 
/etc: contiene todos los archivos de configuración de la mayoría de los programas, así como los 
scripts de inicio del sistema. 
/dev: contiene los archivos que permiten acceder a los dispositivos (hardware) del sistema. 
/usr: contiene una gran cantidad de software que se emplea para ejecutar los programas que 
demandan los usuarios. Es para archivosque puedan ser compartidos en todo el 
sistema(red). Es recomendable que este directorio tenga su propia partición y sea montable 
en sólo lectura. 
/var: contiene los archivos de datos variables. Esto incluye archivos y directorios spool, datos de 
administración, de registro y archivos temporales. 
/tmp: se usa para almacenar archivos que permanecerán temporalmente en el sistema. 
/mnt: se usa como raíz de los directorios destinados a trabajar como puntos de montaje de los 
distintos file system que se montan en el sistema, por ejemplo CD-ROMs y disquetes. 
/home: se usa como directorio raíz de los directorios privados de los usuarios. Cada usuario 
normalmente tiene asignado un directorio que lleva su nombre, donde tiene todos los 
permisos que le posibilitan realizar casi todas las operaciones con archivos y sub-directorios. 
/proc: es un directorio virtual que se crea en la memoria, donde se organiza cierta información -
relativa a la ejecución de los procesos- que maneja el sistema en el momento actual. 
/sbin: contiene los archivos ejecutables para el supervisor o root 
/boot: Contiene los archivos necesario para el arranque del sistema, sin embargo su existencia es 
opcional pues estos archivos podrá esta en el directorio raíz. 
 
 Linux le permitirá obtener un listado de los archivos de casi cualquier directorio (excepto de 
aquellos que no tienen permiso para ser accedidos). 
Para visualizar el contenido de un directorio utilizamos el comando ls 
Por Ej. 
# ls / 
bin lib etc dev 
usr var tmp mnt 
home proc sbin 
 
La ejecución de este comando nos muestra el contenido del directorio raíz que mencionamos 
anteriormente. 
 
Ahora obtengamos un listado de los archivos del directorio usr que esta dentro de “/ ” 
$ ls /usr 
bin X11R6 include lib 
local games sbin 
 
Como vemos este directorio contiene a su vez otro árbol de directorios propio donde: 
UTN - FRC LINUX Cátedra: Sistemas Operativos 
 
 
Ing. Allende – Ing. Serna - 22 - 
 
/usr/ bin : contiene archivos binarios que no son parte de la distribución base 
/usr / X11R6 : contiene los archivos de la implementación de las X Window de la Free86 
/usr / include : contiene las cabeceras de las librerías 
/usr / lib : contiene las librerías 
/usr / local : es un subdirectorio para programas adicionales 
/usr / games : obviamente juegos 
/usr / sbin : subdirectorio semejante a /sbin 
 
 La estructura jerárquica que posee el sistema de archivos tiene la ventaja de permitir 
organizar los archivos en grupos comunes lógicamente o de naturaleza similar. Los archivos 
relacionados entre sí, residen juntos en el mismo directorio. 
 
Directorio de conexión o Home Directory 
 
 El shell de inicio de sesión del usuario tiene un directorio de inicio de sesión con el 
nombre de usuario, que se encuentra por debajo /home. Por ejemplo si tenemos los siguientes 
usuarios: ana, luis, maría, por debajo de /home tendremos 3 subdirectorios de esta forma: 
 
/home/ ana 
/home/ luis 
/home/ maría 
 
 Desde el punto de vista de la navegación por el sistema de archivos, estos directorios son 
idénticos al resto, pero son importantes porque al iniciar su sesión, cada usuario es ubicado en 
ese punto del file system, luego el usuario podrá desplazarse por los demas directorios, de 
acuerdo a los permisos que le hayan otorgado. 
 
Directorio de trabajo 
 
 Un directorio de trabajo, es el directorio que tiene activo un proceso en un momento 
determinado, es un atributo de un proceso, no de una persona ni de un programa. 
 
Antes de comenzar a desplazarse por los directorios y subdirectorios del sistema de archivos, 
desearíamos conocer donde nos encontramos, para ello existe el comando pwd, que nos indica 
en que directorio se encuentra un usuario en ese momento. 
Por ej. 
$ pwd 
/home/maría/ 
 
Trayectorias o rutas de acceso 
 
 Una trayectoria o ruta de acceso no es más que un camino capaz de designar la ubicación 
de un archivo o directorio en el que estamos trabajando. 
 Se pueden clasificar en trayectorias (rutas de acceso) absolutas o relativas. 
Las trayectorias absolutas comienzan siempre en el directorio raíz (comenzarán con el símbolo 
“/”) y continúa con los directorios que hay que recorrer hasta llegar al archivo buscado, con el 
símbolo “/ “ entre los componentes de la ruta. 
 Si se desea ejecutar el programa C++ que se encuentra en el subdirectorio /usr/bin se 
deberá definir la trayectoria absoluta del archivo en cuestión . 
 
$ /usr/bin/c++ 
 
 Otra forma de ejecutar el archivo C++ es cambiar de directorio de trabajo y luego ejecutar 
el programa. Para ello existe el comando cd que nos permite desplazarnos o cambiar de un 
directorio a otro. Finalmente la secuencia de comandos será la siguiente: 
UTN - FRC LINUX Cátedra: Sistemas Operativos 
 
 
Ing. Allende – Ing. Serna - 23 - 
$ cd usr/bin 
$ c++ 
 
 El uso habitual de estas rutas de acceso absolutas hace que el trabajo sea bastante 
tedioso, por lo que surge el concepto de trayectoria relativa. 
 
Observe que al ejecutar el comando pwd se muestra por pantalla la trayectoria absoluta al 
directorio donde está ubicado el usuario. 
 
 Una trayectoria relativa comienza en un directorio distinto del raíz, utilizando el directorio 
de trabajo como punto de partida para especificar el archivo o directorio. 
 También existen directorios considerados como especiales, que son los directorios ( . ) y 
( . . ). Cuando se crea un directorio, dentro de este se crean automáticamente dos directorios: el 
directorio punto ( . ) , que representa al directorio actual y el directorio punto-punto ( . . ) que 
representa al directorio padre del directorio actual. Ambos pueden usarse para designar a sus 
directorios equivalentes al formar parte de una trayectoria. 
 Veamos un ejemplo en el siguiente grafico 
 
 
 
 
 
 
 
 
 
 
 
 
Para referirnos al archivo Nota utilizamos la siguiente trayectoria absoluta: 
 
$ home/maría/Nota 
 
Para utilizar la trayectoria relativa debemos tener en cuenta nuestro directorio de trabajo. 
 
Si el directorio de trabajo es maría se designa: 
$ Nota ó $ . / Nota 
 
Si el directorio de trabajo fuese luis se designa 
 
$ ../maria/Nota 
 
Donde indicamos el directorio padre de nuestro directorio de trabajo (home) y luego el directorio 
(maría) donde se encuentra el archivo Nota 
 
Cuando ejecutamos un comando sólo con su nombre, podríamos pensar que el archivo ejecutable 
está en nuestro directorio de trabajo. Sin embargo el sistema busca el archivo en la lista de 
directorios que están definidos como rutas de acceso predeterminada (PATH). Este tema se 
ampliará en el capitulo que trata sobre Variables del shell. 
 
Recorriendo el File System 
 
 A partir de ahora se hará una breve recorrida a algunos componentes del File System o 
directorio raíz para ello utilizaremos el comando ls con la opción –l que nos muestra un listado 
extendido del contenido de un directorio. 
 / 
homedev bin 
ana luis maría 
texto datos Nota archivo 
UTN - FRC LINUX Cátedra: Sistemas Operativos 
 
 
Ing. Allende – Ing. Serna - 24 - 
$ ls – l / 
Y obtenemos lo siguiente: 
drwxr-xr-x 2 root root 4096 May 10 2002 bin 
drwxr-xr-x 3 root root 1024 May 10 2002 boot 
drwxr-xr-x 7 root root 36864 May 10 2002 dev 
drwxr-xr-x 43 root root 4096 May 10 2002 etc 
drwxr-xr-x 6 root root 4096 Feb 6 1996 home 
 . . . . . . . 
 Para ver el contenido de un directorio en particular, podemos cambiarnos de directorio con 
el comando cd o bien ejecutar el comando ls (desde nuestrodirectorio de trabajo) colocando la 
trayectoria del directorio deseado como argumento. 
 
Por ejemplo, si deseamos ver el contenido del directorio bin, tecleamos: 
$ cd /bin 
$ ls 
o bien 
$ ls /bin 
y obtendremos: 
cat chgrp chmod chown cp date 
dd df dmesg echo ed false 
gzip gunzip kill in login mkdir 
more mount mv ps pwd rm 
rmdir sh su tar true . . . . . 
 
El directorio /bin contiene los archivos binarios de comandos que pueden ser utilizados por todos 
los usuarios y el administrador del sistema, pero que son requeridos en el modo mono-usuario 
(single-user mode) puede también contener comandos que son utilizados indirectamente por 
algunos scripts. 
Todos los binarios utilizables sólo por root, tales como daemons, init, getty, update, etc.,estarán 
localizados en /sbin. 
Dentro de /bin no hay subdirectorios. 
 
$ ls /boot 
 
Este directorio contiene todo para arrancar excepto los archivos de configuración y el 
instalador de mapas. En su sentido más sencillo /boot es para cualquier cosa que se utiliza antes 
de que el kernel ejecute init. Ésto incluye sectores maestros de arranque (master boot sectors) 
guardados, archivos de mapeo de sectores y cualquier otra cosa que no es editada directamente a 
mano. El kernel de Linux puede estar localizado en / ó en /boot. Si está localizado en “/ “ 
recomendamos usar el nombre VMLINUX[versión] o VMLINUZ[versión], nombres que han sido 
usados en paquetes fuentes del kernel de Linux recientes. 
 
$ ls /home 
 
Es una localización sugerida (Opcional) para los directorios de los usuarios, aun así, 
recomendamos que todas las distribuciones Linux usen este lugar como la localización por 
defecto de esos directorios. 
En sistemas pequeños, cada directorio de usuario es uno de los subdirectorios debajo de 
/home, por ejemplo /home/maría, /home/ana, etc. En sistemas grandes es útil subdividir los 
directorios home. La subdivisión puede ser llevada a cabo utilizando subdirectorios tales como 
/home/docentes, /home/estudiantes, etc. 
 
UTN - FRC LINUX Cátedra: Sistemas Operativos 
 
 
Ing. Allende – Ing. Serna - 25 - 
Actividad 1 
 
1. Cuál es el tipo de File System en Linux, y cual es la estructura que utiliza? 
 
2. En Linux, los comandos básicos de ejecución del sistema se encuentran en : 
a. /bin b. /dev c. /etc d. /lib e. Ninguna 
 
3. En Linux, los periféricos se manejan a través de archivos especiales ubicados en: 
a. /bin b. /dev c. /etc d. /lib e. Ninguna 
 
4. Explicar el concepto de directorio de trabajo. 
 
 
 
Actividad 2 
 
1. Mostrar el contenido del directorio raiz. Identifique algunos de sus directorios. 
ls / 
2. Igual al anterior pero acceder con camino relativo. 
ls ../.. 
3. Mostrar el contenido del directorio /dev 
ls /dev 
 
/dev es el directorio de los dispositivos. Los archivos en /dev son conocidos como los 
controladores de dispositivos (device drivers) que son usados para acceder a los dispositivos 
del sistema y recursos como discos duros, impresoras, memoria, etc. Contendrá un archivo 
por cada dispositivo que el kernel de Linux puede soportar. También contiene un script 
llamado MAKEDEV el cual puede crear dispositivos cuando se necesiten. 
 
4. Muestre nuevamente el contenido de /dev, pero utilice la trayectoria relativa desde su 
directorio de trabajo. 
ls ../../dev] (en el caso que su home directory sea el directorio de login) 
 
5. Cambiar al directorio /etc y mostrar su contenido en forma extendida 
 cd /etc 
 ls – l 
 
/etc Contiene archivos y directorios de configuración de sistema local de máquina. Algunos 
de ellos son: 
X11 : Archivos deconfiguracion para el x11. Este directorio es necesario para 
permitir el control local si /usr se monta sólo-lectura. Los archivos que deben ir 
en este directorio incluyen Xconfig (y/o XF86Config) y Xmodmap. 
skel : Esqueletos de configuracion de usuarios, que le son dados por defecto cuando un 
nuevo usuario recibe una cuenta. 
 
6. Teclear en su terminal el comando necesario para determinar cual es su directorio de trabajo y 
escriba la respuesta. pwd __________________________ 
 
7. Es el directorio de inicio de sesión? _____ 
 
8. El archivo cat (manual del comando de igual nombre) se encuentra en el subdirectorio man1 
dentro del directorio man que a su vez depende /usr, cual es la trayectoria absoluta para llegar 
a éste archivo?__________________________________________ 
 
UTN - FRC LINUX Cátedra: Sistemas Operativos 
 
 
Ing. Allende – Ing. Serna - 26 - 
9. Y cual es la trayectoria relativa, si su directorio de trabajo es /usr/bin/? 
Actividad 3 
 
1. Dar 4 trayectorias distintas al archivo /etc/group. Indique en cada caso el directorio de trabajo. 
 
2. Mencionar que archivos contienen los directorios /bin y /sbin. Explique las diferencias. 
 
3. Mostrar el contenido del directorio donde Linux archiva los drivers. 
 
4. Acceder al directorio /boot y analizar su contenido. 
 
5. Definir y diferenciar directorio de trabajo y Home directory. 
 
6. La posibilidad que brinda el file system de nombrar a más de un archivo con el mismo nombre 
simbolico (por ejemplo proc-linux) esta dada por: 
 
a. la tabla de asignación de archivos 
b. la estructura jerarquica de archivos 
c. los archivos . y .. 
d. los Runlevel 
 
 
 
UTN - FRC LINUX Cátedra: Sistemas Operativos 
 
 
Ing. Allende – Ing. Serna - 27 - 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4 
 
Manejo de Archivos 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
UTN - FRC LINUX Cátedra: Sistemas Operativos 
 
 
Ing. Allende – Ing. Serna - 28 - 
Desde el punto de vista del sistema, un archivo no es más que una secuencia de bytes ya 
no identificado con un nombre simbólico sino un número i-nodo que permite su localización en 
disco. 
Desde el punto de vista del usuario, los archivos existen para guardar información y luego 
poder recuperarla. El usuario le otorga a éstos un nombre simbólico para poder designarlos. Linux 
dispone de un numeroso conjunto de utilidades para manipular archivos (individualmente o en 
grupos) tipeando comandos en una terminal. A través de esta modalidad de trabajo es posible 
alcanzar un alto nivel de flexibilidad y versatilidad para realizar operaciones de cualquier grado de 
complejidad. 
En este capítulo veremos cómo utilizar los comandos básicos para la manipulación de 
archivos y directorios por ejemplo crear y borrar, mostrar el contenido, copiar y mover archivos 
dentro del File System y además cómo Linux permite compartir los archivos. Pero para tratar estos 
temas es necesario introducir antes el concepto de redireccionamiento que es de gran utilidad 
para el uso eficiente de los comandos. 
 
 
Archivos 
 
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, 
Todos los archivos de Linux tienen un nombre, el cual debe cumplir 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 recomendable 
emplear los caracteres con significado especial en Linux, que son los siguientes: = \ ^ ~ ' " 
` * ; - ? [ ] ( ) !& ~ < >. Para emplear archivos con estos caracteres o espacios hay que 
introducir el nombre del archivo entre comillas. 
• Se pueden utilizar números exclusivamentesi así se desea. Cabe aclarar que Linux es 
sensible a las letras mayúsculas y minúsculas por lo tanto se consideran diferentes, y no 
es lo mismo el nombre archivo nota.txt que Nota.txt ó nota.Txt 
 
En LINUX existen los siguientes tipos de archivos : 
 - archivo común o regular 
 d directorio 
 b archivo especial de bloque 
 c archivo especial de carácter 
 l archivo enlazado 
 
Regulares son aquellos que pueden contener cualquier tipo de información, desde una 
imagen, un texto, un sonido, etc. 
Directorios (o carpetas), es un archivo especial que agrupa otros archivos de una forma 
estructurada. 
Especiales, son la base sobre la que se asienta Linux, puesto que representan los 
dispositivos o periféricos 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. 
Enlazados: Los enlaces le permiten dar a un único archivo múltiples nombres, existen 
enlaces duros y enlaces simbólicos. 
 
 
UTN - FRC LINUX Cátedra: Sistemas Operativos 
 
 
Ing. Allende – Ing. Serna - 29 - 
 Implantación de archivos (i-nodo) 
 
 Al momento de crear un nuevo archivo el sistema le otorga a éste un número que es fijo y 
único: el i-nodo. Crea a su vez una entrada en la tabla de directorio donde va a estar ubicado el 
archivo. Esta entrada de directorio en Linux consta del nombre del archivo y de un número 
denominado i-nodo, que es único para cada archivo. Es la ficha administrativa o estructura que 
contiene los datos que permiten administrar al archivo. Este i-nodo contiene los atributos de 
archivo o sub-directorio y los punteros que permiten localizar en orden cada uno de los bloques 
del archivo o sub-directorio en el disco. 
 
 Bytes 2 14 
 
 
 
 Número de 
 nodo-i 
 Fig. 2 . Una entrada de directorio en Linux [Tanenbaum] 
 
 Podemos visualizar la tabla de directorio con la opción –i del comando ls, de la siguiente 
manera: 
 $ls -i / 
 45689 bin 
 45692 boot 
 : : 
 : : 
 El sistema de archivos para abrir un archivo (de cualquier tipo) toma el nombre y localiza 
sus bloques en disco. 
 Supongamos que queremos leer el archivo texto creado en nuestro subdirectorio de 
usuario : 
 /home/usuarioxx/texto 
 El Sistema de archivo localiza el i-nodo del directorio raíz, que se encuentra en un lugar fijo 
del disco, cuando accede a este i-nodo lee su contenido y determina la ubicación del i-nodo del 
suddirectorio home y busca en él la ubicación del siguiente componente que es usuarioxx. Lee el 
i-nodo de este archivo y lo mantiene en memoria hasta cerrar el archivo. El sistema operativo lleva 
un control de las operaciones posibles de dicho archivo mediante atributos adicionales que se 
suman a los del i-nodo. 
Fig. 3. Pasos en la búsqueda de /home/usuarioxx/texto [Tanenbaum] 
 
 Nombre de archivo 
El nodo-i 6 
corresponde a 
/home
El nodo-i 26 
corresponde a 
/home/usuarioxx
1 * modo 6 * modo 26 *
1 ** tamaño 1 ** tamaño 6 **
4 bin tiempo 19 dick tiempo 64 grants
7 dev 30 erik 92 books
14 lib 132 51 jim 406 60 texto
9 usr 26 usuarioxx 81 monix
6 home 45 bal 17 src
8 tmp
El nodo-i 6 indica 
que /home está 
en el bloque 132
El nodo-i 26 indica 
que 
/home/usuarioxx 
está en el bloque 
406
El bloque 406 es para el 
directorio 
/home/usuarioxx
/home/usuarioxx/texto 
corresponde al nodo-i 60
La búsqueda por 
resultado en el nodo-
i 6
Directorio raíz El bloque 132 es el 
directorio /home
/home/usuarioxx 
corresponde al 
nodo-i 26
UTN - FRC LINUX Cátedra: Sistemas Operativos 
 
 
Ing. Allende – Ing. Serna - 30 - 
El i-nodo en disco contiene los siguientes campos : 
1. UID del propietario. El UID es un numero que le asigna el sistema operativo a cada usuario 
cuando este se registra en el sistema. Cada usuario para poder trabajar en la terminal (o 
computadora ) debe registrarse en el sistema. Cada archivo tiene un propietari , que es el 
usuario que creo el archivo. 
2. El GID del grupo asociado al archivo. El GID es un número que el sistema operativo le 
asigna a un grupo de usuarios. Todo usuario pertenece por lo menos a un grupo de usuarios, 
normalmente definido por el administrador del sistema. También cada archivo “pertenece” a 
un grupo. El administrador del sistema es un usuario que tiene una jerarquía especial que le 
permite realizar operaciones que normalmente no están permitidas a usuarios normales. Dicho 
administrador se llama root en el sistema operativo LINUX. 
3. Tipo de archivo. Ya mencionamos los distintos tipos de archivos. Cuando el i-nodo no tiene 
asignado ningún archivo, el tipo se define como tipo 0 . De esa forma se reconoce cuando un 
i-nodo esta libre. 
4. Protección rwx. Protección rwx para el propietario del archivo; protección rwx para los 
integrantes del grupo del archivo; protección rwx para el resto de los usuarios. Los archivos se 
protegen contra lectura (r) ; contra escritura (w) y contra ejecución (x). 
5. Fecha y hora del ultimo acceso al archivo. 
6. Fecha y hora de la ultima modificación ( o creación ) del archivo. 
7. Fecha y hora de la ultima modificación del i-nodo. 
8. Numero de enlaces (links). Pueden haber varios nombres (enlaces) asociados con un mismo 
i-nodo. En otras palabras varios nombres de archivos comparten el mismo archivo físico. 
9. Punteros a los bloques del archivo. Son números de 32 bits que permiten localizar a un bloque 
físico del disco que contiene información del archivo. 
10. Tamaño del archivo en bytes. 
 
Algunos de estos campos pueden ser vistos con la orden ls –l (listado extendido) 
 
$ ls –l / 
drwxr-xr-x 2 root root 4096 may 2 13:42 bin 
drwxr-xr-x 3 root root 1024 may 2 13:43 boot 
 : : : 
 
Este comando muestra en formato largo o extendido la información de los archivos del directorio 
raíz. Estos son algunos de los atributos del archivo, de izquierda a derecha: 
 
Tipo de archivo: 
 - archivo comun 
 d directorio 
 b archivo especial de bloque 
 c archivo especial de carácter 
 l archivo enlazado 
Permisos: son nueve caracteres, donde la 1ra. terna rwx (lectura, escritura y ejecución) 
pertenecen al dueño del archivo, la 2da. terna son los permisos del grupo y la 3ra. son para los 
otros usuarios. 
Enlace: este campo es numérico e indica la cantidad de enlaces que tiene el archivo. 
Nombre del dueño del archivo 
Nombre del Grupo 
Tamaño del archivo: información dada en bytes. 
Fecha y hora : de modificación del archivo 
 
Redireccionamiento de E/S 
 
 Cada vez que se ejecuta un shell, se abren los ficheros stdin, stdout y stderr. El archivo 
stdin está asociado al teclado, tiene 0 como descriptor de archivo y representa a la entrada 
estandar de cualquier comando. Por ejemplo, los comandos cat, write y mail permiten que el 
UTN - FRC LINUX Cátedra: Sistemas Operativos 
 
 
Ing. Allende – Ing. Serna - 31 - 
usuario introduzca por teclado las líneas de datos, y esperan a que se les indique con <ctrl..d > 
que la carga a finalizado. Estos comandos toman la entrada de datos del archivo stdin. 
 Mediante la redirección de entrada se puede indicar a un comando que tome como entrada 
los datos de un archivo determinado distinto a stdin, utilizando el símbolo < y el nombre del 
archivo de entrada. 
Por ejemplo: 
 
 $ mail nom-usuario < mensaje 
 
donde nom-usuario es el nombre del destinatario de los datos contenidos en el archivo mensaje. 
La redirecciónde entrada no produce modificaciones en el fichero que se utiliza como entrada. 
 Los comandos envían su salida por defecto a la salida estandar, la pantalla, es decir al 
archivo stdout asociado a ella. El descriptor de éste archivo es 1. La redirección de salida permite 
recoger la información que presenta un comando en pantalla y almacenarla en un archivo. Para 
indicar la redirección de salida se utilizan los símbolos > y >>. 
 Al utilizar el símbolo > el archivo de salida se sobrescribe con los nuevos datos; en el caso 
que el archivo no exista, se crea con la misma orden. 
 
 $ ls / > dire 
 
el comando ls lista el contenido del directorio raiz, sin embargo la salida no aparecerá por pantalla 
sino que se redirecciona al archivo dire, que sino existe, se crea con la misma operación. 
 Al utilizar >>, redireccionamos la salida a un archivo determinado y si éste no existe se 
crea. Si el archivo existe, los nuevos datos redireccionados se añaden al final del archivo sin 
dañar las líneas del archivo que ya existían. 
 
 $ ls /dev >> dire 
 
con el símbolo >>, agregamos al final del archivo dire un listado de los archivos del directorio 
/dev. 
 stderr es un fichero estándar que recibe los mensajes de error, tiene asociado el descriptor 2. 
Cuando el shell no puede ejecutar un comando muestra un mensaje de error por la pantalla, si 
necesitamos redireccionar los mensajes de error tendremos que insertar en la línea de comandos 
el descriptor 2 del archivo sterr acompañado por > o >>, como sigue: 
 
 $ cp 2> fichero.err 
 
como al comando cp no le hemos pasado como argumento el nombre del archivo a copiar, 
generará un mensaje de error que en vez de mostrarse por pantalla, se redirecciona al archivo 
fichero.err. Si visualizamos el archivo creado fichero.err obtendremos la siguiente salida: 
$ cat fichero.err 
 cp : faltan argumentos (ficheros) 
 pruebe cp – help’para mas información 
 
Crear archivos - cat 
 
La forma más sencilla de crear un archivo es utilizando el comando cat, que también nos 
permite ver el contenido un archivo y concatenar archivos, pero lo que nos interesa es que cat 
junto con el concepto de redireccionamiento, nos permite crear archivos de la siguiente forma: 
 
 $ cat > nom-archivo 
 
El comando cat toma datos de la entrada estandar (el teclado) y los redirecciona (los 
guarda) a un archivo. En éste caso el usuario puede tipear todas las líneas necesarias y 
UTN - FRC LINUX Cátedra: Sistemas Operativos 
 
 
Ing. Allende – Ing. Serna - 32 - 
justificarlas con la tecla <Enter>, pero una vez justificadas, no podrá regresar a corregir lo escrito. 
Para grabar los datos y regresar al shell pulse ctrl.d. 
Por ejemplo: 
Si necesitamos crear el archivo materias, que tenga el nombre de las materias que 
estamos cursando : 
 
$ cat > materias 
 
deberemos ingresar: 
> Sistemas Operativos 
> Química 
> Estadística 
ctrl.. d 
 
Esta información ha quedado guardada en el archivo materias en nuestro directorio. 
 
El concepto de redireccionamiento es muy importante pues nos permite crear un archivo 
con la salida que genere cualquier comando, provocando que la salida de éste ya no sea enviada 
a la salida estándar sino a un determinado archivo. Así por ejemplo podríamos querer crear un 
archivo con todos los comandos que están en /bin: 
 
$ ls /bin > comandos 
 
 el comando ls debe mostrar por pantalla un listado de los archivos del directorio /bin. Sin embargo 
con la línea de comando anterior, el shell devuelve sólo el prompt. Pero si ejecuta la orden ls 
podrá ver al archivo comandos formando parte del listado: 
 $ ls 
 materias comandos 
 
 
Borrar Archivos - rm 
 
 Para borrar un archivo utilice el comando rm de la siguiente manera: 
 
 $ rm nom-archivo 
 
al ejecutar este comando, borramos en la tabla del directorio la entrada correspondiente a nom-
archivo. El argumento puede incluir una lista de archivo a borrar o puede también utilizar 
metacaracteres (consultar el Apéndice 1). Por ejemplo: 
 
 $ rm materias comandos 
esta orden borra dos archivos, materias y comandos, que están en el directorio actual. 
 
Opciones de rm: 
 
-i pide al usuario que confirme la eliminación del archivo. 
-f borra el archivo sin tener en cuenta los permisos del archivo. 
-r se utiliza para borrar el contenido de un directorio en forma recursiva, incluso borra el 
directorio dado como argumento. 
 
 
Crear Directorios - mkdir 
 
Para crear un directorio se utiliza el comando mkdir . 
 
UTN - FRC LINUX Cátedra: Sistemas Operativos 
 
 
Ing. Allende – Ing. Serna - 33 - 
 $ mkdir directorio-nuevo 
 
Crea el directorio directorio-nuevo por debajo del directorio actual o de trabajo. 
Si queremos crear un directorio, como subdirectorio de otro específico, debemos tipear la ruta 
absoluta o relativa del directorio nuevo. 
 
 $ mkdir /home/ana/directorio-nuevo 
 
Sólo podemos pasarle como argumento al comando mkdir el nombre de un directorio. Para crear 
otros directorios deberá utilizar nuevamente el comando mkdir. 
 
 
Borrar Directorios - rmdir 
 
Si lo que deseamos es eliminar el directorio tenemos que emplear el comando rmdir. 
 
 $ rmdir directorio-nuevo 
 
Para poder eliminar un directorio éste debe estar vacío. Por lo tanto la tarea previa a la eliminación 
de cualquier directorio, es eliminar todos los archivos que éste contiene. 
Sin embargo podemos eliminar un directorio y subdirectorios con el comando rm –r, pues borra en 
forma recursiva desde el directorio que se dio como argumento. Supongamos que listados es un 
directorio que necesitamos borrar, pero no está vacío, por lo que debemos tipear: 
 
 $rm –r listados 
esta orden borra todos los archivos y subdirectorios que contiene listados, incluso borra el 
mismo directorio listados. 
 
 Es conveniente prestar mucha atención antes de ejecutar el comando rm y rm ∗ 
 
 
Mostrar Archivos 
 
 El sistema operativo Linux nos permite utilizar más de un comando para leer el contenido 
de un archivo, ya sea , en forma completa, paginado o ver sólo partes del archivo. 
Los archivos de configuración y de instrucciones son de texto por lo que resulta interesante 
acceder a ésta información. 
Los comandos que trataremos en esta sección son : cat, more, less, head y tail. 
 
cat 
 La forma más sencilla de ver un archivo es con el comando cat. Muestra el contenido de 
todos los archivos que se le dé como argumento. Por ejemplo: 
 
 $cat datos practico 
 
suponiendo que datos y practico son archivos del directorio de trabajo, cat muestra por pantalla en 
forma secuencial el contenido de ambos archivos. 
 Es posible también, con este mismo comando concatenar archivos, simplemente 
redireccionando la salida secuencial del ejemplo anterior a un tercer archivo: 
 
 $cat datos practico > salida 
 así podemos concatenar dos o más archivos y guardarlos en un archivo de salida, sin que esto 
produzca modificaciones en los archivos tomados como argumento. 
 
 
UTN - FRC LINUX Cátedra: Sistemas Operativos 
 
 
Ing. Allende – Ing. Serna - 34 - 
more 
 Uno de los problemas que presenta la utilización del comando cat es que produce la 
visualización completa del archivo, sin pausas, por lo que si éste es demasiado largo sólo 
podremos ver las últimas 20 líneas. El comando more nos permite ver el contenido de un archivo, 
página por página. Por defecto en cada página muestra 21 líneas. La línea de comandos para 
more es la siguiente: 
 $ more [-n° de líneas p/página] nom-archivos 
 
 $more - 15 datos 
 
por supuesto también a more podemos darle como argumento el nombre de más de un archivo, y 
los mostrará en forma secuencial. 
Una vez que el comando more nos esta mostrando el contenido de un archivo, tenemos opción a 
ejecutar algunos comandos: 
 
- barra espaciadora: avanza a la

Continuar navegando