Apuntes Linux CUAED

40
INTRODUCCIÓN AL SISTEMA OPERATIVO GNU/Linux CAPÍTULO 1. HISTORIA DE UNIX Unix es un sistema operativo portable, multitarea y multiusuario; desarrollado en principio por un grupo de empleados de los laboratorios Bell de AT&T, entre los que figuran Ken Thompson, Dennis Ritchie y Douglas McIlroy. El sistema operativo UNIX comienza en 1969 como un proyecto de investigación de AT&T Bell Labs. Es descendiente de MULTICS, un proyecto de sistema operativo sumamente ambicioso iniciado por un conjunto de empresas que nunca vio la luz. En 1976 aparece la Versión 6 , disponible en forma gratuita para las Universidades. La versión 7, ampliamente distribuida, aparece en 1979; es la base de la mayoría de las versiones de UNIX. costaba $100 dlls. para universidades y $21000 dlls. para otros. Luego de esta versión AT&T creó el grupo USG (UNIX Support Group), luego este grupo se separó de AT&T con el nombre USL (UNIX System Laboratories) para desarrollar UNIX como producto comercial. Los grupos Bell Labs y USG continuaron desarrollando UNIX en direcciones divergentes. USL sacó al mercado las versiones System III y System V, ampliamente difundidas. En 1992 AT&T vendió sus operaciones en UNIX a Novell quien sacó un producto llamado UnixWare, el cual no resultó muy popular. El UNIX de Berkeley comenzó en 1977, cuando el CSRG (Computer Systems Research Group) de la Universidad de California en Berkeley licenció el código de la versión V6 de AT&T. Las versiones de Berkeley llamadas BSD (Berkeley Software Distribution) comenzaron en 1977 con 1BSD (para PDP-11) y culminaron en 1993 con la versión 4.4 BSD. El propósito último de Berkeley era eliminar todo el código original de AT&T, pero perdió sus fuentes de financiamiento antes de culminar su propósito. Al disolverse, el CSRG lanzó su última versión de código propio, llamada 4.4BSD-Lite (liviana). La mayoría de los UNIX de la rama BSD tienen como antecedente esta versión. Superadas varias querellas de licencias entre BSD y AT&T, desde hace unos años los fabricantes pueden tomar el código fuente público de AT&T, BSD o ambos para comenzar a partir de ellos sus propios desarrollos. Esto ha originado un sin número de variantes. La clasificación por el origen, AT&T o BSD, se va perdiendo al combinar los fabricantes lo mejor de ambas. Si bien esto ha originado bastante confusión, en el correr de los años la variedad de líneas de investigación ha permitido decantar soluciones eficientes, robustas y elegantes, a más de asegurar la permanencia del sistema operativo sin riesgo alguno de monopolio o propiedad. El desarrollo más reciente ha sido el advenimiento de Linux, a partir de un núcleo (kernel) diseñado por Linus Torvalds, un estudiante graduado de la Universidad de Helsinki, Finlandia, en 1991. A este núcleo se agregan una cantidad de productos complementarios, fundamentalmente de GNU, un proyecto de desarrollo de UNIX libre de costo. Sostenido por una extensa comunidad de empresas, desarrolladores, voluntarios y entusiastas, Linux es hoy un sistema operativo completo, de calidad profesional, usado en producción y soportado como sistema operativo primario por muchos proveedores. Muchas empresas grandes como Oracle han portado sus productos a Linux.

Transcript of Apuntes Linux CUAED

INTRODUCCIÓN AL SISTEMA OPERATIVO GNU/Linux

CAPÍTULO 1. HISTORIA DE UNIX

Unix es un sistema operativo portable, multitarea y multiusuario; desarrollado en principio por un grupo de empleados de los laboratorios Bell de AT&T, entre los que figuran Ken Thompson, Dennis Ritchie y Douglas McIlroy.

El sistema operativo UNIX comienza en 1969 como un proyecto de investigación de AT&T Bell Labs. Es descendiente de MULTICS, un proyecto de sistema operativo sumamente ambicioso iniciado por un conjunto de empresas que nunca vio la luz. En 1976 aparece la Versión 6 , disponible en forma gratuita para las Universidades. La versión 7, ampliamente distribuida, aparece en 1979; es la base de la mayoría de las versiones de UNIX. costaba $100 dlls. para universidades y $21000 dlls. para otros. Luego de esta versión AT&T creó el grupo USG (UNIX Support Group), luego este grupo se separó de AT&T con el nombre USL (UNIX System Laboratories) para desarrollar UNIX como producto comercial. Los grupos Bell Labs y USG continuaron desarrollando UNIX en direcciones divergentes. USL sacó al mercado las versiones System III y System V, ampliamente difundidas. En 1992 AT&T vendió sus operaciones en UNIX a Novell quien sacó un producto llamado UnixWare, el cual no resultó muy popular. El UNIX de Berkeley comenzó en 1977, cuando el CSRG (Computer Systems Research Group) de la Universidad de California en Berkeley licenció el código de la versión V6 de AT&T. Las versiones de Berkeley llamadas BSD (Berkeley Software Distribution) comenzaron en 1977 con 1BSD (para PDP-11) y culminaron en 1993 con la versión 4.4 BSD. El propósito último de Berkeley era eliminar todo el código original de AT&T, pero perdió sus fuentes de financiamiento antes de culminar su propósito. Al disolverse, el CSRG lanzó su última versión de código propio, llamada 4.4BSD-Lite (liviana). La mayoría de los UNIX de la rama BSD tienen como antecedente esta versión. Superadas varias querellas de licencias entre BSD y AT&T, desde hace unos años los fabricantes pueden tomar el código fuente público de AT&T, BSD o ambos para comenzar a partir de ellos sus propios desarrollos. Esto ha originado un sin número de variantes. La clasificación por el origen, AT&T o BSD, se va perdiendo al combinar los fabricantes lo mejor de ambas. Si bien esto ha originado bastante confusión, en el correr de los años la variedad de líneas de investigación ha permitido decantar soluciones eficientes, robustas y elegantes, a más de asegurar la permanencia del sistema operativo sin riesgo alguno de monopolio o propiedad. El desarrollo más reciente ha sido el advenimiento de Linux, a partir de un núcleo (kernel) diseñado por Linus Torvalds, un estudiante graduado de la Universidad de Helsinki, Finlandia, en 1991. A este núcleo se agregan una cantidad de productos complementarios, fundamentalmente de GNU, un proyecto de desarrollo de UNIX libre de costo. Sostenido por una extensa comunidad de empresas, desarrolladores, voluntarios y entusiastas, Linux es hoy un sistema operativo completo, de calidad profesional, usado en producción y soportado como sistema operativo primario por muchos proveedores. Muchas empresas grandes como Oracle han portado sus productos a Linux.

Ahora que ya sabemos que es Unix y su historia, estamos preparados para definir a GNU/Linux. ¿Que es GNU/Linux? GNU/Linux es un clon del sistema operativo Unix, escrito desde cero por el finlandes Linus Torvalds con la asistencia de un pequeno grupo de hackers esparcidos por la red1 . Entre sus principales características se encuentra la implantación del estardar POSIX. Estrictamente, GNU/Linux se refiere al nucleo o kernel. En un sentido más amplio, comprende el nucleo del sistema operativo más un conjunto de programas que permiten compilar lenguajes de programacion,editar texto, interpretar comandos, manejar archivos y discos, acceder a otras maquinas, establecer co municaciones telefonicas, enviar y recibir correo electronico, manejar las colas de impresion y un sinfi de tareas más. Algunos de estos programas pueden haber sido desarrollados por los propios usuarios. Lo que en un principio no era más que un proyecto personal de un joven que se creía el mejor programador del mundo , termino siendo uno de los mejores sistemas operativos; usado ampliamente en todo el mundo, desde instituciones educativas hasta comerciales, pasando por gubernamentales. Las versiones iniciales fueron distribuidas en código fuente por el propio Linus, para que otras personas pudieran entender su proyecto y sobretodo para que lo ayudaran. Linus trabajo activamente hasta la version 0.96, tras ello, se sumaron al proyecto más programadores y se formo un grupo de desarrollo amplio (Linux Developers) que continua siendo dirigido por el; pero como el mismo lo reconoce, su labor es más la de un “router” del grupo que la del desarrollo en si.

1.1 ESTRUCTURA DEL SISTEMA OPERATIVO. Concepto de Sistema Operativo: Un sistema operativo es un programa o conjunto de programas de computadora destinado a permitir una gestión eficaz de sus recursos. (Hardware y Software). Cuando hablamos de sistemas operativos tenemos que tener bien en claro los siguientes conceptos, los cuales son la base de cualquier sistema operativo:

• Procesos • Llamadas al sistema • Archivos

Procesos Todo el software ejecutable de la computadora se organiza en varios procesos. Un proceso es tan solo un programa en ejecución , consta del programa ejecutable, sus datos y pila. Los estados en los que un proceso se puede encontrar son:

• En ejecución (proceso corriendo).

• Listo (no existe cpu disponible para el) • Bloqueado (proceso detenido).

Llamadas al Sistema Las llamadas al sistema son el conjunto de operaciones o servicios que el sistema operativo ofrece a los procesos que se ejecutan en modo usuario para que puedan acceder a sus recursos. Estas llamadas permiten realizar operaciones sobre los archivos tales como (apertura, lectura, escritura), sobre los procesos (creación, comunicación, eliminación), o sobre la red (envío y recepción de mensajes).

Archivos Concepto: Un archivo es un conjunto de caracteres o bytes. La estructura del sistema de archivos es jerárquica, es decir una gráfica dirigida o, vista de otro modo, una estructura arbórea. Los tipos de Archivos que tenemos en GNU/Linux son:

• Archivos Regulares: contienen una secuencia de bytes que corresponden generalmente a código o datos. Ellos pueden ser accedidos utilizando las llamadas al sistema estándares de E/S.

• Archivos Tipo Directorios: están almacenados en el disco con un formato especial y forman la columna vertebral del sistema de archivos. Este tipo de archivo solamente puede ser referenciado a través de las llamadas al sistema específicas para directorios.

• Archivos Especiales: son archivos asociados con dispositivos periféricos, tales como impresoras o discos; o con mecanismos de comunicación entre procesos, tales como pipes o sockets. Este tipo de archivo puede ser también accedido mediante las llamadas al sistema estándares de E/S.

Componentes de un Sistema Operativo Un sistema operativo está formado por varios programas que en conjunto presentan al usuario una vista integrada del sistema, los componentes principales de un sistema operativo son los siguientes módulos:

• Administrador de procesos. (scheduler) • Administrador de E/S. • Administrador de la Memoria. • Manejo del Sistema de Archivos.

1.2 CARACTERÍSTICAS DEL SISTEMA OPERATIVO GNU/Linux

• Reutiliza el software, a través de la combinación de comandos simples en aplicaciones complejas. • Portable: el mismo sistema operativo corre en un espectro de máquinas que van desde notebooks a supercomputadoras. • Flexible: se adapta a muchas aplicaciones diferentes. • Potente: dispone de muchos comandos y servicios ya incorporados. • Multiusuario: atiende a muchas personas simultáneamente. • Multitarea: hace muchas cosas a la vez. • Elegante: sus comandos son breves, coherentes, específicos para cada tarea y muy eficientes. • Orientado a redes. • Dispone de un estándar (POSIX) que debe cumplir todo sistema operativo que pretenda ser GNU/Linux, lo que asegura una

evolución predecible. • Tiene muchas herramientas de software (compiladores, editores, utilitarios para muchas tareas).

1.3 OBJETIVOS, FILOSOFÍA, VENTAJAS Y DESVENTAJAS DE GNU/Linux Objetivos de GNU/Linux

• Crear un sistema interactivo de tiempo compartido diseñado por programadores y para programadores, destinado a usuarios calificados.

• Que fuera sencillo, elegante, escueto y consistente. • Que permitiera resolver problemas complejos combinando un número reducido de comandos básicos.

Filosofía del sistema GNU/Linux

• Comandos cortos, simples, específicos y muy eficientes, que "hacen una sola cosa pero la hacen muy bien". • Entrada y salida estandarizadas que permiten la interconexión de comandos. Esto se llama entubamiento ("pipelining"): la

salida de un comando es tomada por el siguiente como entrada.

Ventajas de GNU/Linux

• Multiusuario. • Multitarea. • Soporta acceso remoto. • Soporte nativo de TCP/IP (Fácil conexión a Internet y otras redes). • Contiene xFree86, que es una interfaz gráfica de usuario basada en los estándares de X-Windows, y también es gratuita. • Al instalar el sistema operativo, también se tiene la posibilidad de instalar varios programas, tales como: hojas de cálculo,

bases de datos, procesadores de texto, varios lenguajes de programación, paquetes de telecomunicaciones y juegos. • Cumple los estándares POSIX y de Sistemas Abiertos, esto es que tiene la capacidad de comunicarse con sistemas distintos

a él. • Existe mucha documentación sobre éste.

Desventajas de GNU/Linux

• Carencia de soporte técnico. • No ofrece mucha seguridad. • Problemas de hardware, no soporta todas las plataformas, y no es compatible con algunas marcas específicas. • No existe un control de calidad al momento de elaborar software para GNU/Linux, pues muchas veces las aplicaciones se

hacen y se liberan sin control alguno. • Es poco probable que aplicaciones para DOS y OS/2, se ejecuten correctamente bajo GNU/Linux. • No hay forma segura de instalarlo sin reparticionar el disco duro. • El reparticionar el disco duro, implica borrar toda la información del mismo y después restablecerla. • Se requiere experiencia y conocimiento del sistema para administrarlo, pues como es un sistema por línea de comandos,

estos poseen muchas opciones y en ocasiones es difícil realizar algunas tareas, que en otros sistemas operativos de red son triviales.

CAPÍTULO 2. INICIAR UNA SESIÓN EN GNU/Linux 2.1 ELEMENTOS BÁSICOS DE LA CUENTA DE UN USUARIO

GNU/Linux es un sistema operativo multitarea y multiusuario, por lo que se deben establecer ciertos mecanismos de acceso para proteger los datos de cada usuario y que puedan ser compartidos en caso necesario. GNU/Linux posee un mecanismo de permisos asociados a cada archivo. Este mecanismo permite que los archivos y directorios pertenezcan a un usuario en particular. También permite que los archivos sean compartidos entre usuarios y grupos de usuarios. El comportamiento por defecto en la mayoría de los sistemas es que todos los usuarios pueden leer los archivos de otro usuario, pero no pueden modificarlos o borrarlos. Cada usuario (perteneciente a un grupo de usuarios) tiene asociado un nombre, una palabra clave o password, un directorio propio (home) y un shell de inicio:

• Nombre: Identificación del usuario cuando entra en la máquina (login). • Clave: Palabra oculta que solo conoce el usuario. • UID, GID: Números de identificación de usuario y grupo, respectivamente. • Directorio propio (home): Directorio inicial donde se situara el usuario al entrar en el sistema. • Shell de inicio: Primer proceso que se arranca una vez dentro del sistema.

Existen diferentes categorías de usuarios en función de sus privilegios:

• Superusuario o root (UID=0): Es el administrador del sistema. Tiene todos los privilegios. • Usuarios normales: El resto de usuarios que pertenecen a distintos grupos, los cuales pueden tener una serie de propiedades

comunes. • Usuarios especiales: Asignados a tareas especificas por el sistema, generalmente de información o manejo de aplicaciones

ya instaladas de uso común a usuarios externos o internos.

2.2 ENTRADA AL SISTEMA Who.-muestra los usuarios que están actualmente en el sistema. Indica identificador de usuario, terminal en que está conectado, fecha y hora de ingreso al sistema. La sintaxis del comando es: who [opcion(es)] [archivo] [am i] Opciones del comando: -H nos muestra las cabeceras de las columnas -u nos muestra el tiempo que estuvo inactivo el terminal. -q muestra el número total de usuarios conectados. -r indica el nivel de ejecución en que se encuentra el sistema. who am i .- da información sobre el usuario que está trabajando, indicando su máquina y nombre de usuario, terminal, fecha y hora. Id .- proporciona la identificación del usuario invocante, dando el nombre de usuario y su número (UID), nombre de grupo primario y su número (GID), nombres de otros grupos a los cuales pertenece (si los hay) y sus números. La sintaxis del comando es: id [opcion(es)] [nombre_de_usuario] ls.-lista archivos del directorio actual. Sintaxis: ls [opciones] [archivo...] Opciones: -a Lista todos los archivos, incluyendo aquellos que comienzan con un «.». -d Lista el nombre del directorio en vez de los archivos contenidos en él. -l Lista los archivos con mucho mas detalle, especificando para cada archivo sus permisos, el número de enlaces rígidos, el nombre del propietario, el grupo al que pertenece, el tamaño en bytes, y la fecha de modificación. -r Invierte el orden de listado de los archivos. -s Muestra el tamaño de cada archivo en bloques de 1024 bytes a la izquierda del nombre. -t Lista los archivos ordenados por el tiempo de modificación en vez de ordenarlos alfabéticamente. -A Lista todos los archivos excepto el «.» y el «..». -R Lista los contenidos de todos los directorios recursivamente. -S Ordena el listado por el tamaño de los archivos. Uname.- Indica nombre y versión del sistema operativo. Usado con la opción -a muestra toda la información. Sintaxis: uname [opcion] Opciones: -r Muestra la versión completa del kernel del sistema. Hostname.-Es un alias o nombre que un administrador asigna a un equipo para identificarlo. TTY – Sirve para comprobar el estado actual de la terminal y para cambiar la configuración de la misma. Al ejecutarlo nos aparecerá algo como esto: /dev/pts/0 STTY – Permite fijar las opciones de una terminal. Sintaxis: stty [opciones]

-a Ver cuáles son las teclas programadas para cada función

2.3 CAMBIO DE CONTRASEÑA La contraseña es un elemento de acceso que asegura la identificación en el sistema de un usuario; Cuando el usuario desea cambiar su password, esto se hace por medio del comando passwd Passwd.-Este comando permite cambiar el password de acceso a una cuenta dentro de un sistema GNU/Linux. Para cambiar la contraseña en GNU/Linux se recomienda utilizar claves que incluyan números y símbolos como @, #, $, &. Pasos para cambiar el password de un usuario en GNU/Linux: 1.-Teclear el Comando Passwd 2.-Teclea tu Password Actual 3.-Teclea tu nuevo Password 4.-Vuelve a Teclear tu nuevo Password

2.4 SALIDA DEL SISTEMA Para salir del sistema existen los siguientes comandos: Comando exit.- termina la sesión con GNU/Linux. Las teclas Ctrl-D también terminan la sesión. Logout.- Es un comando que al igual que exit y CTRL-D, nos sirve para salir y terminar la sesión en nuestro sistema.

CAPÍTULO 3. COMANDOS BÁSICOS 3.1 SINTAXIS DE UN COMANDO

La estructura general de un comando en Linux es la siguiente: $ comando [ -opciones ] [ argumentos ]

• nombre.- Es el nombre del comando. • opciones o banderas.- controlan la forma en que actúa el comando; van precedidas por el signo - (menos). • argumentos son comúnmente nombres de archivos o nombres de login de usuarios.

3.2 COMANDO ls Este comando sirve para listar archivos.

Su sintaxis es: ls [opciones] [archivo...] Si se ejecuta ls sin argumentos, dará como resultado un listado de todos los archivos (incluyendo directorios) del directorio donde el usuario está posicionado. Sus opciones son: -a Lista todos los archivos, incluyendo aquellos que comienzan con un «.». -d Lista el nombre del directorio en vez de los archivos contenidos en él. -l Lista los archivos con mucho mas detalle, especificando para cada archivo sus permisos, el número de enlaces rígidos, el nombre del propietario, el grupo al que pertenece, el tamaño en bytes, y la fecha de modificación. -r Invierte el orden de listado de los archivos. -s Muestra el tamaño de cada archivo en bloques de 1024 bytes a la izquierda del nombre. -t Lista los archivos ordenados por el tiempo de modificación en vez de ordenarlos alfabéticamente. -A Lista todos los archivos excepto el «.» y el «..». -R Lista los contenidos de todos los directorios recursivamente. -S Ordena el listado por el tamaño de los archivos. Ejemplos: ls -la lista todos los archivos (ocultos y visibles) del directorio actual de manera detallada. ls -R lista todos los archivos de los directorios contenidos en el directorio actual recursivamente. 3.3 COMANDO cd Este comando se usa para cambiar de directorio. Generalmente cuando el usuario inicia una sesión, el directorio donde comienza es su directorio personal. De ahí uno puede moverse a los diferentes directorios donde se tenga acceso usando este comando.

Su sintaxis es la siguiente: cd directorio Ejemplos:

cd /etc/rc.d cambia del directorio actual al directorio /etc/rc.d 3.4 COMANDO cp

Este comando se utiliza para copiar archivos.

Su sintaxis es la siguiente: cp [opciones] archivo-origen camino-destino

cp [opciones] archivos-origen... directorio-destino Entre las opciones más relevantes, se tiene: -f Borrar los archivos de destino ya existentes. -p Preservar los permisos, el usuario y el grupo del archivo a copiar. -R Copia directorios recursivamente. -v Da información en pantalla sobre los archivos que se van copiando. -i Pregunta si sobreescribir archivos regulares destino existentes. Ejemplos: cp archivo1 archivo2 copia el archivo1 al archivo2 cp -R directorio1 directorio2 copia un directorio y todo su contenido del directorio1 al directorio2 3.5 COMANDO mkdir El comando mkdir (make directory) se utiliza para crear nuevos directorios. Su sintaxis es: mkdir [opciones] directorio... Sus opciones son las que siguen: -m modo (Establece los permisos de los directorios creados.) -p (Crea los directorios padre que falten para cada argumento directorio) Ejemplos: mdkir usuarios crea el directorio llamado usuarios

3.6 COMANDO rm

El comando rm sirve para eliminar o borrar archivos. rm [opciones] archivo... Opciones: -f (No imprimir mensajes de error, ni pedir al usuario una confirmación por cada archivo que se vaya a borrar.). -r (Borrar los contenidos de directorios recursivamente.) -v (Muestra el nombre de cada archivo eliminado.)

Ejemplos: rm archivo1 borra el archivo1 rm -r directorio1 borrar el directorio1 COMANDO rmdir El comando rmdir (remove directory) se utiliza para borrar un directorio; pero antes de utilizar este comando se deben de borrar todos los ficheros que contenga (incluidos los ficheros invisibles), es decir, el directorio que se va a borrar tiene que estar vacío. Ejemplo: rmdir alumnos borra el directorio vacio alumnos

3.7 COMANDO more

Este comando nos sirve como una utilidad de página. Un ejemplo en particular de cuando nos sirve este comando es, cuando la salida de un ls es demasiado larga, o la salida de dmesg o algún otro archivo con bastante información como los logs del sistema. Esto es porque los comandos no saben encajonar o dividir la información para ir viéndola por partes.

Su sintaxis es: more [opciones] [file ...] Algunas de sus opciones son: -num especifica el número de líneas mostradas por pantalla -d mostará un prompt al usuario con el siguiente mensaje “[Presiona la barra espaciadora para continuar, 'q' para salir.]” y desplegará “[Presiona 'h' para instrucciones]”. Sonará una campana cada que se presione un tecla desconocida. -f muestra el contenido por páginas. +/ especifica una cadena que será buscada antes de que el archivo ser desplegado. +num comienza en la linea especificada Ejemplos: more +2000 /var/spool/mail/root muestra el conternido del archivo '/var/spool/mail/root' a partir de la línea 2000. ps -fea | grep more muestra la salida del comando ps listando los procesos actuales del sistema por página. more -30 /var/spool/mail/root muestra el contenido del archivo '/var/spool/mail/root' por página de 30 líneas cada una.

3.8 COMANDO date

Este comando tiene dos funciones: una es la de mostrar en pantalla la fecha del sistema (en varios formatos), la otra es la función de configurar la hora del sistema, pero para que esta funcionalidad se cumpla, se debe ejecutar el comando desde una sesión de root.

La sintaxis de este comando es:

date [opción...] [+FORMAT] date [opción] [MMDDhhmm[[CC]AA][.ss]]

FORMAT controla el formato con que se mostrará la fecha, algunas de las opciones de este argumento son:

• %a (Día de la semana abreviado) • %A (Día de la semana completo) • %b (Nombre del mes abreviado) • %B (Nombre del mes completo) • %d (Día del mes) • %m (Número de mes) • %H (Hora, en formato 24h) • %M (Minutos) • %S (Segundos).

Ejemplos: date +%d muestra el dia del mes actual date +%a-%b muestra el dia de la semana y el mes actual abreviados y separados por un guión. 3.9 COMANDO mv El comando mv mueve o renombra archivos o directorios.

Su sintaxis es: mv [opciones] origen destino Llamemos destino al archivo o directorio al cual se va a mover un archivo o directorio especificado. Si destino existe, mv pregunta al usuario si quiere reemplazar el archivo o directorio. Cuando tanto origen como destino están en el mismo sistema de archivos, sólo el nombre se cambia; el propietario, permisos y marcas de tiempo permanecen intactos. Cuando están en sistemas de archivos diferentes, el archivo origen se copia con el nuevo nombre (destino) y luego se borra. mv copiará el tiempo de modificación, el tiempo de acceso, el identificador del propietario y del grupo y los permisos. Sus opciones son: -f, --force Borra los archivos de destino existentes sin preguntar nunca al usuario. -i, --interactive Pregunta si se desean sobreescribir archivos de destino regulares existentes. Si la respuesta no es afirmativa, se pasa al siguiente archivo sin efectuar la operación. -u, --update No mueve un archivo que tenga un destino existente con el mismo tiempo de modificación o más reciente. -v, --verbose Muestra el nombre de cada archivo antes de moverlo. Ejemplos: mv bitacora instalacion renombra el archivo llamado bitacora a instalacion dentro del directorio actual. mv -i bitacora instalacion renombra el archivo llamado bitacora al archivo existente instalacion preguntando si se desea sobreescribir el archivo. 3.10 COMANDO tar El comando tar copia archivo(s) o directorio ha un archivo comprimido, es decir, a un archivo que contenga todos los archivos especificados o bien, desempaqueta todos los archivos agrupados en él.

Su sintaxis es: tar [opciones] destino origen1...origenN Llamemos destino al archivo o directorio en el cual se comprimiran los archivos (origen) especificados. Las opciones mas usadas son: -c --create crea un nuevo archivo empaquetado -t –list lista el contenido del archivo empaquetado -x --extract --get extrae los arhivos de un archivo empaquetado -f, --file F usa un archivo para empaquetar -j, --bzip2 usa un archivo para empaquetar con formato bz2 -v, --verbose lista el proceso de empaquetado en pantalla -z, --gzip, --gunzip comprime los archivos especificados Ejemplos: tar -cvf empaquetado.tar archivo1 archivo 2 directorio1 empaqueta los archivos archivo1, archivo2 y el directorio1 en un archivo empaquetado llamado empaquetado.tar tar -xvf empaquetado.tar desempaqueta el contenido del archivo empaquetado.tar tar -cvzf empaquetado.tar.gz archivo1 archivo 2 empaqueta y comprime los archivos archivo1 y archivo2 en un archivo llamado empaquetado.tar.gz tar -xvzf empaquetado.tar.gz desempaqueta y descomprime el contenido del archivo llamado empaquetado.tar.gz 3.11 COMANDO cat Este comando concatena archivos o muestra el contenido de un archivo en la salida estandar.

Su sintaxis es: cat [opciones] [archivo...] Algunas de sus opciones son: -A, --show-all equivalente al la combinación de -vET -b, --number-nonblank numera las líneas del archivo sin contar saltos de línea. -e equivalente a la combinación de -vE -E, --show-ends muestra el signo de '$' al final de cada línea -n, --number numera todas las lineas del archivo -t equivalente a la combinación de -vT

-T, --show-tabs muestra los tabuladores contenidos en el achivo con ^I -u (ignorado) --help muestra la ayuda del comando y sale --version muestra información de la version del comando y sale Ejemplos: cat -A /var/spool/mail/root muestra el contenido del archivo '/var/spool/mail/root' colocando el signo de '$' al final de cada linea. cat -nb /var/spool/mail/root muestra el contenido del archivo '/var/spool/mail/root' numerando solamente las líneas que no contienen saltos de línea.

3.12 COMANDO ps El comando ps muestra los procesos que se encuentran activos. Por default, ps selecciona todos los procesos activos asociados al identificador del usuario actual (EUID) y asociado a la misma terminal que invocó. Despliega el identificador del proceso (PID), la terminal asocia con el proceso (TTY), el tiempo de CPU acumulado en el fomato [dd-]hh:mm:ss y el nombre ejecutable del proceso (CMD) .

Su sintaxis es: ps [opciones] Algunas de sus opciones son: -A seleciona todos los procesos. Identico a la opción -e. -a selecciona y muestra todos los procesos excepto los no asociados con la terminal -C cmdlist selecciona los procesos dados por el nombre del proceso ejecutable. -G grplist selecciona los procesos de acuerdo al identicador de grupo (RGID) indicado. Identifica el grupo del usuario quien creó el proceso. -U userlist selecciona los procesos de acuerdo al identificador del usuario (EUID)quien hace uso del proceso. Ejemplos: ps -U admin muestra los procesos asociados al usuario admin ps -fea muestra todos los procesos actuales con todas sus características: UID,PID,TTY,TIME,etc. 3.13 COMANDO grep Este comando muestra la líneas coincidentes con el patrón de búsqueda. Busca el archivo especificado y muestra las líneas que contienen el patrón dado.

Su sintaxis es: grep [opciones] [patrón] archivo Algunas de sus opciones son:

-e PATTERN, --regexp=PATTERN muestra las lineas que contienen el patrón especificado. Esta opcion se usa especialmente para patrones que comienzan con un guión '-'. -R, -r, --recursive lee todos los archivos bajo los directorios de manera recursiva. Ejemplos: grep -e -mail /var/spool/mail/root muestra todas las líneas contenidas en el archivo '/var/spool/mail/root' que contengan el patrón -mail grep mail* /var/spool/mail/root muestra todas las líneas contenidas en el archivo '/var/spool/mail/root' que contengan una palabra que comience con mail. 3.14 COMANDO find El comando find, realiza búsquedas de archivos jerárquicamente. El comando find busca en un árbol de directorios el nombre del archivo especificado en cada uno de ellos, evaluando la expresion de izquierda a derecha, entregando la ruta completa de la ubicación del archivo a directorio especificado.

Su sintaxis es: find [ruta] [test] [expresion] Algunos de los tests son: -amin n archivos que han sido accesados n minutos atrás. -atime n archivos que fueron accesados n-24 horas atrás. -cmin n archivos que cambiaron su estado n minutos atrás -ctime n archivos que cambiaron n-24 horas atrás. -mmin n archivos que moficaron su contenido n minutos atrás. -mtime n archivos que fueron modificados n*24 horas atrás. -name patron archivos cuyo nombre coincide con el patrón especificado. -size n[cwbkMG] archivos con n unidades de espacio ocupados. Los siguientes sufijos pueden ser usados: ‘b’ por bloques de 512-bytes (opcion por default) ‘c’ por bytes ‘w’ por palabras de 2 bytes ‘k’ por Kilobytes (unidades de 1024 bytes) ‘M’ por Megabytes (unidades de 1048576 bytes) ‘G’ por Gigabytes (unidades de 1073741824 bytes) Ejemplos: find -size 6M lista todos los archivos a partir del directorio actual con un peso aproximado de 6 Megas. find / -name calificaciones -print lista todos los archivos encontrados en el sistema que se llamen calificaciones.

3.15 COMANDO zip El comando zip comprime y empaqueta archivos y directorios.

Su sintaxis es: zip [opciones] [archivos...] Algunos de sus comandos son: -b path usa la ruta especificada para crear el archivo zip -d borra los archivos especificados desde el archivo zip. Por ejemplo:

zip -d alumnos.zip alumnos/calificaciones/juan alumnos/fotos/\* borrará el achivo alumnos/calificaciones/juan y todos los archivos dentro de alumnos/fotos contenidos en el archivo comprimido alumnos.zip. -r comprime todos los archivos y caperta recursivamente. Ejemplos: zip -r cursos.zip cursos comprime todos los archivos y directorios contenidos en cursos dentro de un archivo llamado cursos.zip zip pruebas.zip examen1.doc usuarios.txt promedios.xls comprime los archivos examen1.doc usuarios.txt promedios.xls dentro del archivo pruebas.zip 3.16 COMANDO unzip El comando unzip lista, comprueba y extrae archivos comprimidos en un archivo zip dentro del directorio actual.

Su sintaxis es: unzip [-Z] [-cflptTuvz[abjnoqsCKLMVWX$/:]] archivo[ .zip] [archivo(s) ...] [-x xarchivo(s) ...] [-d exdir]

archivo[.zip] nombre del archivo que contendrá los archivos comprimidos en zip. [archivo(s)] parámetro opcional que especifica una lista de archivos a comprimir [-x xarchivo(s)] parámetro opcional que especifica una lista de archivo a ser excluidos de la compresion. [-d exdir] parámetro opcional que especifica el directorio donde se extraerán los archivos comprimidos. -f actualiza los archivos existentes, por ejemplo, extrae aquellos archivos que existen en disco y que son más recientes que la copia en disco. -l lista los archivos contenidos el en zip. -v lista los archivos contenidos en el zip de forma detallada. Ejemplos: unzip Bitacoras.zip -d /tmp extrae los archivos contenidos en Bitacoras.zip dentro de la ruta /tmp unzip Bitacoras.zip extrae los archivos contenidos en Bitacoras.zip dentro del directorio actual

Comando du. Función: Informa el espacio que ocupa un archivo.

Sintaxis: du [-opciones] [argumentos] Opciones: -h (Formato humano) convierte los valores obtenidos a megabytes. -s Genera un total por cada argumento. Ejemplos: Para calcular el espacio que ocupan dos directorios: du -hs directorio1 directorio2 Calculo del espacio que ocupa el directorio actual: du -hs Identificación de archivos en el direcotrio actual ordenándolos de menor a mayor por tamaño: du -hs * | sort –n

Comando man. Función: muestra el manual, paginado con el comando more, para el comando que se le indique como argumento, está ordenado por secciones: función del comando, sintaxis, opciones, ejemplos, comando relacionados.

Sintaxis: man [comando] Comando df. Función: Informa el uso de disco.

Sintaxis: df [-opciones] [sistema de archivos] Opciones: -h (Formato humano) convierte los valores obtenidos a megabytes. Salida:

• Primera columna: Sistema de archivos, dispositivo asociado al sistema de archivos. • Segunda columna: Tamaño del sistema de archivos. • Tercera columna: Espacio ocupado del sistema de archivos. • Cuarta columna: Espacio disponible en el sistema de archivos. • Quinta columna: Nivel de saturación del sistema de archivos expresado procentualmente. • Última columna: Punto de montaje para el dispositivo asociado al sistema de archivos.

Comando su. Función: Permite el acceso a un shell con privilegios de otro usuario. Idealmente, los permisos en el sistema se configuran de modo que este comando solicite autentificación a través de contraseña.

Sintaxis: su [-opción] [-usuario] [argumento]...

Opciones: -c permite invocar un comando con privilegios de otro usuario. -l, - invoca un shell para el nuevo usuario indicado como argumento. Ejemplos: Para invocar un shell con privilegios del usuario “administrador” su – administrador Para ejecutar un comando con privilegios de otro usuario: su - root -c df

Comando tail. Función: Por omisión muestra las últimas 10 líneas del archivo que recibe de la entrada estándar.

Sintaxis: tail [-#] archivo Opciones:

-c, --bytes=n

Obtiene los últimos “n” bytes de un archivo.

-n Extrae las últimas “n” líneas de un archivo.

-f Abre en forma interactiva un archivo, muestra las últimas 10 líneas y mantiene abierto el archivo, imprimiendo cada nueva línea que se le agrega.

Ejemplos: Análisis interactivo de una bitácora de aplicación: tail -f /var/log/apache.log Revisión de las últimas 5000 líneas de un archivo: tail -5000 archivo | more Comando useradd. Función: Crea un nuevo usuario en el sistema.

Sintaxis: useradd [-opciones] login Opciones: -d Permite indicar el directorio hogar para el nuevo usuario. -m Crea el directorio hogar para el usuario. -s Define el shell que atenderá por omisión al usuario. -u Indica el número identificador del usuario en el sistema. -g Indica el número identificador del grupo del usuario en el sistema. Combinación de opciones: useradd -d /home/usuario1 -m -s /bin/bash -u 504 -g 503 usuario1

Comando adduser

Función: Crea un nuevo usuario en el sistema de forma interactiva.

Comando uname. Función: Informa sobre las características del sistema.

Sintaxis: uname [-opciones] Opciones: -s Sistema operativo. -p Tipo de procesador. -r Versión del kernel. -a Imprime toda la información. Comando wall. Función: Envía mensajes a todas las terminales del sistema.

Sintaxis: wall mensaje Para enviar el mensaje usamos la combinación de teclas ^D Ejemplo: wall El sistema se apagará en 10 minutos ^D

CAPÍTULO 4. DISTRIBUCIÓN DE LA INFORMACIÓN. 4.1 SISTEMAS DE ARCHIVOS (/etc, /var, /bin, /sbin, /tmp, /lib, /dev, etc) GNU/Linux es un sistema operativo en el que la organización de los archivos es jerárquica, organizada en directorios, presentando una estructura en forma de árbol, en donde los directorios son ramas y los archivos hojas. El directorio raíz (/) es el directorio principal, del que cuelgan subdirectorios, de los que a su vez cuelgan otros directorios o subdirectorios. Un sistema de archivos es equivalente a una unidad lógica en MSDOS, pero mientras en DOS se referencia automáticamente con una unidad (por ejemplo c: ), en GNU/Linux es necesario montarla (hacerla accesible).

¿Cómo montar un sistema de archivos en GNU/Linux?

Montar un sistema de archivos consiste en asignar un directorio, o punto de montaje, a la unidad lógica. El montaje de un sistema de archivos se realiza con el comando mount, y el desmontaje con el comando umount. Ambas tareas solo son realizables, en principio, por root.

• mount Dispositivo Directorio Monta el Dispositivo en el directorio especificado. • mount Muestra los dispositivos montados. • umount Directorio Desmonta el Directorio especificado.

Entre los sistemas de archivos más comunes en GNU/Linux tenemos:

• /: Sistema de archivos raíz.

• /home : Sistema de archivos para ubicación de los directorios de usuario.

• /tmp : Sistema de archivos para temporales. Puede estar ubicado en memoria RAM (disco RAM), con lo que el acceso será más rápido.

• /usr : Sistema de archivos para archivos ejecutables, documentación, referencia.

• /var : Sistema de archivos para logs, auxiliares, archivos que crecen.

Entre los directorios más comunes en GNU/Linux tenemos:

• / : directorio raíz. De él cuelgan todos los demás directorios.

• /bin : archivos ejecutables, comandos de usuario.

• /cdrom : punto de montaje de CD.

• /dev : archivos de dispositivos (discos, terminales, etc.).

• /etc : archivos de configuración, administración e información del sistema.

• /floppy : punto de montaje de disquetes.

• /home : archivos de usuarios.

• /lib : archivos de bibliotecas de desarrollo y material de apoyo.

• /lost+found : archivos perdidos.

• /mnt : punto de montaje de dispositivos externos.

• /sbin: archivos ejecutables de administración.

• /tmp : Archivos temporales o zona de trabajo de algunos programas GNU/Linux.

• /usr : archivos ejecutables, documentación, referencia.

• /var : archivos logs y auxiliares.

4.2 NAVEGACIÓN EN LOS SISTEMAS DE ARCHIVOS

El sistema de archivos de GNU/Linux es un sistema jerárquico en el cual podemos movernos dentro de él, a través de sus directorios y archivos. Comandos Útiles para Navegar dentro del Sistema de Archivos de GNU/Linux

• Crear un Directorio: mkdir {nombre del directorio}.

• Posicionarnos dentro de un directorio cd {nombre del directorio}.

• Moverse de un directorio a otro cd {nombre del directorio}.

• Para saber en que lugar del árbol de directorios estamos utilizamos el comando: pwd

Trayectoria

La trayectoria (path) de un archivo o directorio indica cómo llegar a éste a partir de un directorio dado. Ruta Absoluta: es el camino absoluto que muestra toda la ruta para llegar a un archivo o directorio

• Ejemplo: /home/documentos/Carta.txt Aquí tenemos toda la ruta para llegar a nuestro archivo Carta.txt, que está dentro del directorio documentos, el cual a su vez esta dentro del directorio home. Ruta Relativa: es el camino relativo que muestra solo parte de la ruta para llegar a un archivo o directorio.

• Ejemplo: /documentos/Carta.txt

Directorios Especiales:

Todos los directorios contienen dos directorios especiales en GNU/Linux:

• El directorio actual, representado por el punto .

• El directorio padre representado por dos puntos ..

Un ejemplo en donde utilizamos los directorios especiales es el siguiente: Estando en el directorio /home/alumnos se puede acceder a Carta.txt con solo teclear /home/documentos/Carta.txt (path absoluto) o bien tecleando ../documentos/Carta.txt (path relativo).

Directorio Hogar y Directorio de Trabajo de los Usuarios en GNU/Linux:

Cada vez que se crea una cuenta para un usuario nuevo, se le asigna un directorio (el directorio hogar). El directorio hogar (home directory o login directory) es el directorio donde está el usuario cuando se conecta al sistema. /home Al directorio donde en un momento dado se encuentra el usuario se le llama el directorio de trabajo (working directory o current directory).

¿Cómo regresarse al directorio home?

La manera más sencilla para regresar al directorio home es simplemente usando el comando cd sin ningún argumento.

PRÁCTICA 1. Conectarse al servidor y crear los siguientes directorios: RutaRelativa

RutaAbsoluta 2. Cambiarse al directorio “RutaAbsoluta” utilizando el siguiente comando:

cd RutaAbsoluta 3. Ejecutar el comando PWD:

pwd 4. Verifica la salida del comando. Lo que ves es la ruta absoluta del directorio. 5. Cambiate al directorio “RutaRelativa” que creaste, utilizando el siguiente comando:

cd ../RutaRelativa 6. Ahora te encuentras dentro del directorio “RutaRelativa” y te cambiaste a él haciendo uso de una ruta relativa (../RutaRelativa). 7. Puedes verificar el contenido del directorio padre haciendo uso de rutas relativas. Ejecuta el siguiente comando:

ls –l ..

CAPÍTULO 5. ATRIBUTOS DE LOS ARCHIVOS

5.1 TIPOS DE ARCHIVOS

• Archivos Ordinarios: Son un conjunto de datos almacenados en memoria secundaria.

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

• Archivos especiales: Son la base sobre la que se asienta LINUX, puesto que representan los dispositivos conectados a un computadora (Impresoras, Discos magnéticos, Disquetes Cintas magnéticas, Terminales, etc.). Hay dos tipos de archivos especiales:

o En Modo Bloque: aquellos que contienen bloques de bytes. Por ejemplo los discos duros o los disquetes.

o En Modo Carácter: aquellos que permiten el acceso a los dispositivos como secuencias o flujos continuos de bytes. Por ejemplo una terminal o una impresora.

• FIFO o PIPES Es similar a un archivo ordinario. La diferencia es que cuando se lee un dato de el, se borra y ya no podrá ser leído. También se conocen como tuberías con nombre (named pipes).

• Enlaces o Ligas (Rígidos y Simbólicos)

o Enlace rígido: No es una clase de archivo, sólo un segundo nombre. Se usa generalmente cuando dos usuarios necesitan compartir la información de un archivo de forma consistente.

o Enlace simbólico: Un enlace simbólico es un archivo que sólo contiene el nombre de otro archivo, de tal modo que pueden emplearse para asignar mas de un nombre a un archivo o directorio.

Los enlaces o ligas de ambos tipos finalmente son archivos y se pueden tratar como tal, borrarlos, cambiarles los permisos, etc. Sin embargo, es conveniente aclarar que si se crea y después borra una liga tanto rígida como simbólica el archivo origen no será afectado; para el caso de que se borre el archivo origen la liga dura sigue existiendo, pero en el caso de la liga simbólica si se borra el archivo origen esta también deja de existir.

5.2 COMANDOS PARA CONOCER Y CAMBIAR LOS ATRIBUTOS D E UN ARCHIVO 5.2.1 COMANDO ls

$ ls [opciones][archivo(s)] : permite ver los archivos que hay en un directorio. Opciones:

• -a (para ver archivos ocultos). • -F (se identifican los tipos de archivos menos los de dispositivos). • -R (muestra el contenido de los directorios recursivamente). • -l (indica los archivos que se quieren visualizar en formato largo: una línea completa por cada

archivo).

Ejemplo de la utilización del comando ls con la opción –l: $ ls –l total 1 -rw-r--r-- 1 prueba usuarios 170 mar 26 18:17 README

El formato de esta opción es el siguiente:

<-rw-r--r-->< 1>< prueba>< usuarios>< 170>< mar 26 18:17>< README>

< modo>< enlaces>< propietario>< grupo>< tamaño>< fecha>< nombre> < modo>Es un conjunto de 10 caracteres, el primero de ellos indican el tipo de archivo del que se trata y los siguientes 9 los permisos del archivo. Los permisos se explicán más adelante, el tipo de archivo puede ser:

• - archivo regular • d directorio • l enlace simbólico • b dispositivos de modo bloque • e dispositivos de modo carácter

< enlaces> indica el número de enlaces de tipo Liga Dura que tiene el archivo. Indica por tanto desde cuantos sitios se puede acceder a ese archivo. Si el archivo es de tipo directorio, este campo es el número de subdirectorios+2. < propietario> contiene el nombre del dueño del archivo. < grupo> indica el grupo al que pertenece el propietario. < tamaño> indica el tamaño del archivo en bytes. < fecha> indica la fecha y hora de creación o de última actualización del archivo. < nombre> indica el nombre del archivo por el que le identificamos en el sistema.

5.2.2 Comando ln Este comando sirve para establecer enlaces entre archivos. Un enlace puede ser rígido o simbólico

• Enlace rígido es aquel en el cual se puede dar otro nombre a un mismo archivo (únicamente para el mismo sistema de archivos, por ejemplo en /home).

• Enlace simbólico es aquel en el cual se pueden enlazar directorios y archivos aún de diferentes sistemas de archivos.

La sintaxis del comando ln es: ln [opciones] origen [destino] ln [opciones] origen... directorio Sus opciones son: -d (Permite al super-usuario hacer enlaces rígidos a directorios). -s (Crear enlace simbólico). -f (Borrar los archivos de destino que ya existen). Ejemplo de la utilización del comando ln para crear un enlace simbólico: $ ln -s mbox correo Si hacemos un listado largo a través del comando ls –l veremos algo como lo siguiente: lrwxrwxrwx 1 usuario grupo 4 abr 1 14:07 correo -> mbox la liga correo está apuntando al archivo mbox

5.3 PERMISOS DE LOS ARCHIVOS Y DIRECTORIOS EN GNU/Linux En GNU/Linux hay tres tipos de usuarios que pueden acceder a un archivo: propietario, grupo y resto de usuarios. Cada uno de ellos puede tener los tres tipos de permisos que hay sobre archivos: lectura (r), escritura (w) y ejecución (x). Los usuarios se clasifican como:

• Usuario (u): El propietario del fichero. • Grupo (g): El grupo al que pertenece el fichero. • Otros (o): El resto de los usuarios del sistema

Los permisos se clasifican como:

• Leer (read = r) • Escribir (write = w) • Ejecutar (execute = x)

Acceso Archivo Directorio

r Ver el contenido Listar el contenido

w Modificar el contenido Crear/eliminar archivos

x Ejecutar Entrar en el directorio

Modo Octal Existe otra manera en que se pueden especificar los permisos de archivos: los bits r, w y x tienen asignados un numero, proveniente de la notación binaria que se utiliza para almacenarlos como bits propiamente tal:

Read= 4

Write= 2

eXecute= 1

Ahora es posible utilizar números, que son la suma de los distintos bits de permisos. La combinación de bits encendidos o apagados en cada grupo da ocho posibles combinaciones de valores, es decir la suma de los bits encendidos:

--- = 0 no se tiene nungún permiso

--x = 1 solo permiso de ejecución

-w- = 2 solo permiso de escritura

-wx = 3 permisos de escritura y ejecución

r-- = 4 solo permiso de lectura

r-x = 5 permisos de lectura y ejecución

rw- = 6 permisos de lectura y escritura

rwx = 7 todos los permisos establecidos, lectura, escritura y ejecución

Cuando se combinan los permisos del usuario, grupo y otros, se obtienen un número de tres cifras que conforman los permisos del archivo o del directorio. Ejemplo: Si deseamos otorgar sólo permiso de lectura, el código a utilizar es el 4. Si deseamos otorgar sólo permiso de lectura y ejecución, el código es el 5. Si deseamos otorgar sólo permiso de lectura y escritura, el código es el 6. Si deseamos otorgar todos los permisos, el código es el 7. Si deseamos quitar todos los permisos, el código es el 0.

Cuando se crea un directorio, los permisos asignados son, rwxr-xr-x, o sea:

• Usuario: leer, escribir y ejecutar • Grupo: leer y ejecutar • Otros: leer y ejecutar

Cuando se crea un archivo, los permisos asignados son, rw-r--r--, o sea:

• Usuario: leer y escribir • Grupo: leer • Otros: leer

5.3.1 MODIFICACIÓN DE PERMISOS

Para cambiar los permisos de un archivo o directorio, se utiliza el comando chmod (CHange MODe, cambiar modo). Es necesario ser el usuario propietario del archivo, o root, para cambiar sus permisos.

La sintaxis del comando chmod es la siguiente:

#chmod [opciones] permiso nombre_archivo_o_directorio Opciones: -R cambiar los permisos a los archivos y directorios de manera recursiva. Un ejemplo de chmod se muestra a continuacion: # chmod u-x,g+w,o+rw archivo Este comando elimina el permiso de ejecución para el usuario, coloca el bit de acceso a escritura para el grupo y da a todos los demás acceso de lectura y escritura. Con el modo octal, es posible utilizar números, que son la suma de los distintos bits de permisos. Por lo tanto el comando chmod ahora se convierte en:

chmod xyz archivo donde x, y y z son números que representan los permisos del usuario, grupo y otros, respectivamente. Cada número es la suma de los permisos a colocar y se calculan como se indicó anteriormente. Ejemplo de chmod con modo octal: # chmod 644 archivo 6 = 4 + 2 = rw 4 = r 4 = r 5.3.2 MODIFICACIÓN DE PROPIETARIO Y GRUPO Para cambiar el dueño del archivo se utiliza el comando chown (CHange OWNer, cambiar propietario). Al igual que en el caso anterior, es necesario ser el usuario propietario o root para poder hacer esto:

La sintaxis del comando chown es la siguiente: # chown nuevo_usuario[.nuevo_grupo] nombre_archivo Ejemplo de la utilización del comando chown:

# chown jperez constancia Lo que asigna a jperez como propietario del archivo constancia. Para cambiar el grupo, se utiliza el comando chgrp (CHange GRouP, cambiar grupo); igual, es necesario ser el propietario del archivo, o ser root.

Sintaxis: # chgrp [opciones] nuevo_grupo [archivo1]…[archivo2] Opciones: -R cambia de forma recursiva la propiedad de los directorios y sus contenidos -v describe en detalle los cambios de propiedad. -c describe con detalle sólo los cambios cuya propiedad cambia. Ejemplo de la utilización del comando chgrp: # chgrp usuarios constancia Esto coloca al grupo usuarios como el perteneciente al archivo constancia. También es posible cambiar simultáneamente el usuario propietario y el grupo de un archivo a través del comando chown, separándolos por uno o dos puntos: # chown jperez.usuarios constancia # chown jperez:usuarios constancia Lo que asigna a jperez como propietario y a usuarios como grupo del archivo constancia.

6. EDITORES. 6.1 EDITOR DE PANTALLA VI El editor vi es un editor de pantalla completa. De forma similar a ed, el editor vi siempre trabaja con una copia del fichero que se edita, que él mismo se encarga de mantener en un buffer. Los cambios realizados sobre el fichero solo se graban cuando se invoca algún comando de grabación. Para invocar el editor vi se hace mediante: vi fichero. Si el fichero existe lo carga en el buffer de trabajo. Además, la orden para invocar el editor vi tiene una serie de opciones, las más importantes son:

• r (Cada cierto tiempo 'vi' salva el buffer de edición en disco. De forma que si se produce cualquier fallo en el sistema, siempre se encontrará una copia reciente del fichero que se editaba).

• R (Indica que solo se editará el archivo para consulta. No permitiéndose realizar cambio alguno sobre la información.).

• wn (Normalmente 'vi' utiliza la pantalla completa como ventana de edición. Mediante esta opción se podrá alterar el tamaño de la ventana de edición a un número de líneas determinado por n).

Podemos utilizar la opción + , que permite entrar en el vi en la línea que le indiquemos. Por ejemplo: Vi +7 fichero Editará el fichero indicado y tomará como línea actual la 7. Vi +$ fichero Editará el fichero indicado y tomará como línea actual la última línea del fichero. Vi +/cadena fichero Editará el fichero indicado y tomará como línea actual la primera línea que contenga la cadena indicada.

El editor vi tiene tres modos de trabajo diferente: El modo de inserción, el de edición y el de comandos. Modo de Inserción. En el modo de inserción, toda la entrada que demos en el teclado se inserta en el archivo en el punto donde se encuentre el cursor. Modo de Edición. En el modo de edición daremos instrucciones que alteran el contenido, como por ejemplo para posicionarse en determinado punto, hacer reemplazos de texto, copiar o mover, bloques de texto, etc. Modo de Comandos. En el modo comandos se dan instrucciones para salvar el archivo, traer a edición otro, insertar otro archivo en el punto donde se está, terminar la edición, etc.

En el modo edición, las instrucciones para mover el cursor en el texto son:

Instrucciones Suplementarias:

u anular la última instrucción dada

/ realiza una búsqueda hacia adelante

? realiza una búsqueda hacia atrás

n busca la siguiente ocurrencia de la última búsqueda

. repite la última instrucción

Y copia una línea de texto

ndd borra n número de líneas

nyy copia n número de líneas

P (mayúscula) pega texto colocandose en la línea de arriba

p pega texto colocandose en la línea de abajo

ZZ (mayúsculas) salva el archivo y termina la edición

ESC cancela una orden

: se cambia a modo comandos

Comandos para modo inserción:

i cambia a modo inserción y se coloca en el estado actual del cursor.

I cambia a modo inserción y se coloca al inicio de la línea donde se encuentra en cursor.

o (minúscula) cambia a modo inserción e inserta una línea en blanco abajo de la posición del cursor.

O cambia a modo inserción e inserta una línea en blanco arriba de la posición del cursor.

a (minúscula) cambia a modo inserción y se coloca una posición después donde se encuentra el cursor.

A cambia a modo inserción y se coloca al final de la línea donde se encuentra el cursor.

CAPÍTULO 7 .- COMANDOS BÁSICOS DE RED 7.1 COMANDO who El comando who nos da información sobre quién está conectado en el sistema. La sintaxis del comando es: who [opciones] [archivo] [am i] Opciones:

• -H nos muestra las cabeceras de las columnas:

• -u nos muestra el tiempo que estuvo inactivo el terminal.

• -q muestra el número total de usuarios conectados.

7.2 COMANDO w El comando w nos indica lo que está haciendo cada usuario. Sintaxis: $ w La información que aparece al ejecutar este comando es:

• USER usuario.

• TTY terminal en el que está conectado el usuario.

• FROM desde donde está conectado el usuario.

• LOGIN@ hora en la que empezó la sesión.

• IDLE tiempo que el usuario ha permanecido inactivo.

• JCPU tiempo total de CPU para todos los procesos en el terminal.

• PCPU tiempo total de CPU para todos los procesos activos en el terminal.

• WHAT comando que está siendo ejecutado en el terminal.

7.3 COMANDO write El comando write se utiliza para enviar un mensaje a un usuario conectado al sistema. Por defecto el mensaje se envía a la última terminal donde se haya conectado el usuario. Los usuarios pueden deshabilitar la posibilidad de recibir mensajes utilizando el comando mesg. Sintaxis: write < usuario> [terminal] 7.4 COMANDO wget Comando que nos permitirá bajarno webs enteras ó archivos de internet proporcionando una dirección. Sintaxis. $ wget [option] [URL] Ejemplo: $ wget http://www.servidor.com/archivo.zip

7.5 COMANDO ssh El comando ssh ofrece comunicación encriptada y segura entre dos sistemas sobre una red no segura. Este comando reemplaza al telnet, rlogin, rsh. Sintaxis: ssh usuario@direccion-servidor Ejemplo: $ ssh [email protected]

7.6 COMANDO scp El comando scp permite copiar archivos entre dos máquinas. Utiliza ssh para la transmisión de la información, por lo que ofrece la misma seguridad que el ssh (conexión segura y encriptada). De la misma manera utiliza los métodos de autenticación de ssh. Este comando reemplaza al rcp, ftp. La sintaxis general para transferir un fichero local a un sistema remoto es: scp localfile username@tohostname:/newfilename. El parámetro localfile especifica el origen o procedencia y el grupo de username@tohostname:/newfilename especifica el destino. Ejemplo: $ scp archivo1.txt [email protected] 7.7 .COMANDO nslookup El comando nslookup nos sirve para averiguar la dirección IP de un servidor o un nombre de dominio en un DNS, dándole como argumento un nombre de dominio si queremos saber la ip del mismo u viceversa.

Sintaxis: [admin@aldebaran ~]$ nslookup [IP ó Nombre de dominio] Ejemplo: [admin@aldebaran ~]$ nslookup www.hotmail.com Server: 132.248.204.1 Address: 132.248.204.1#53 Non-authoritative answer: www.hotmail.com canonical name = www.hotmail.com.nsatc.net. www.hotmail.com.nsatc.net canonical name = www.hotmail.aate.nsatc.net. Name: www.hotmail.aate.nsatc.net Address: 165.193.120.166 7.8 COMANDO ping Este programa nos indica el tiempo exacto que tardan los paquetes de datos en ir y volver a través de la red desde de una maquina a otra remota. Este comando es uno de los primeros a los que acudimos cuando queremos verificar que un servidor esté saliendo a red, “le mandamos un ping”. Sintaxis: $ ping [IP ó Nombre de dominio] Ejemplo: $ ping 132.240.38.12 7.9 COMANDO netstat El comando netstat nos permite conocer las conexiones de red establecidas entre nuestra máquina y una remota, el puerto por el cual se están comunicando, las tablas de ruteo, estadísticas de interfaces y conexiones enmascaradas. Este comando cuenta con un gran número de opciones y cada una de ellas nos servirá para conocer un aspecto del uso de la red distinto. Unas de las opciones más comunes para este comando son t, u, p, a y n, todas ellas en conjunto nos muestran las conexiones de nuestro servidor a otra máquina, el protocolo utilizado, la dirección local, la externa y si se encuentra escuchando el puerto o en espera. Ejemplo:

7.10 COMANDO traceroute Traceroute es una herramienta de diagnóstico de redes que permite seguir la pista de los paquetes que van desde un host (punto de red) a otro. Se obtiene además una estadística del RTT o latencia de red de esos paquetes, lo que viene a ser una estimación de la distancia a la que están los extremos de la comunicación. Ejemplo:

7.11 COMANDO ifconfig Ifconfig es una utilidad de línea de comandos que permite obtener y configurar las interfaces de red de un equipo. Si no se proporcionan argumentos, ifconfig muestra el estado de las interfaces de red que se encuentran activas. Si se proporciona una interfaz como argumento, ifconfig muestra el estado de dicha interfaz. Si se utiliza con la opción -a, muestra el estado de todas las interfaces, incluso aquellas que se encuentren desactivadas. Por lo regular lo usaremos cuando necesitemos saber la ip de una máquina, para este propósito el comando no necesita argumentos. Es importante resaltar que este comando solo lo puede ejecutar el usuario root o algun otro con privilegios de administración. sintaxis: ifconfig netmask broadcast up

CAPÍTULO 8.- CORREO ELECTRÓNICO ¿Qué es el correo electrónico? El correo electrónico es casi probablemente el servicio más útil para muchos de los usuarios de Internet, permitiendo intercambio de información casi instantáneamente. Este servicio consiste, dicho de una manera sencilla, en el envío de un bloque de información de texto (aunque puede llevar incluida información multimedia o en general cualquier otro fichero adjunto) de un remitente a un destino, de igual modo que el correo convencional. Hay ya una gran cantidad de programas de transporte de correo, uno de los más conocidos es sendmail, desarrollado por Eric Allman en la Universidad de California, en Berkeley. Actualmente este programa se ofrece como el agente de correo estándar en algunas distribuciones de GNU/Linux. ¿Qué es un mensaje de correo? Un mensaje de correo consta de un cuerpo, que es el texto que ha escrito el remitente, y datos especiales que especifican el destinatario o destinatarios, el medio de transporte, entre otros elementos.

8.2. Colección de cabeceras y campos comunes de un correo electrónico en LINUX

• From: Contiene la dirección de correo electrónico del remitente, y posiblemente el “nombre real”. Aquí se usa un zoológico completo de formatos distintos.

• To: Esta es la dirección de e-mail del destinatario. Si hay varias direcciones se separan por comas.

• Cc: Esta es una lista de las direcciones de correo que recibirán una “copia de carbón” del mensaje. Si hay varias direcciones, se separan por comas.

• Bcc: Esta es una lista de las direcciones de correo que recibirán una “copia de carbón ciega” del mensaje. La diferencia principal entre “Cc:” y “Bcc:” es que las direcciones listadas en el “Bcc:” no aparecerán en la cabecera del mensaje que se envía a cada destinatario. Es una forma de avisar a los destinatarios de que usted ha enviado copias del mensaje a otras personas, sin decir quiénes son. Si hay varias direcciones, se separan por comas.

• Subject: Describe el contenido del mensaje en pocas palabras.

• Date: Indica la fecha y hora en que se envió el mensaje.

• Reply-To: Especifica la dirección a la que el remitente desea que el destinatario le conteste. Esto puede ser útil si se tienen varias direcciones, pero se desea recibir la mayor parte del correo sólo en aquella que se usa más a menudo. Este campo es opcional.

• Organization: La organización que posee la máquina desde la que se ha enviado el mensaje. Si la máquina usada es la suya propia no incluya este campo, o bien indique “privado” o cualquier trivialidad sin sentido. Este campo no está descrito en ningún RFC y es completamente opcional. Algunos programas de correo lo soportan directamente, pero la mayoría no.

• Message-ID: Una cadena generada por el transporte de correo en el sistema remitente. Es única para cada mensaje.

• Received: Cada anfitrión que procesa su correo (incluyendo las máquinas del remitente y el destinatario) insertan este campo en el encabezado, dando el nombre del anfitrión, una identificación de mensaje, hora y fecha a la que lo recibieron, de qué anfitrión procede, y qué software de transporte ha sido usado. Esto se hace así para que usted pueda conocer la ruta que su mensaje ha seguido, y pueda protestar a la persona responsable si algo ha ido mal.

8.3 MANDAR Y RECIBIR UN CORREO Agentes de usuario de correo Los Agentes de usuario de correo (MUA - Mail User Agents) son los programas que los usuarios ejecutan para enviar y leer el correo electrónico. Aunque parezca que los Agentes de usuario de correo realizan todo el trabajo de transmisión y recepción de correo electrónico, dichos agentes sólo constituyen la parte visible de todo el sistema de correo electrónico. En realidad, no entregan el correo electrónico. Son los Agentes de entrega de correo los que entregan el correo electrónico. Funciones de los agentes de usuario de correo):

• Asignan formato a los mensajes salientes con información de cabecera apropiada y, si es necesario, codifican los mensajes salientes para que los Agentes de entrega de correo utilicen la codificación durante el enrutamiento de los mensajes.

• Permiten que los usuarios lean, guarden y eliminen los mensajes de correo electrónico entrantes.

• Programan aplicaciones de Extensiones multipropósito de correo Internet (MIME), si es necesario, para que el usuario pueda experimentar la información no textual adjunta al correo electrónico entrante, por ejemplo, para ver archivos de gráficos o clips de video, o para escuchar datos de audio.

Agentes de entrega de correo Los Agentes de entrega de correo (MDA - Mail Delivery Agents) forman el núcleo del sistema de correo electrónico. Estos programas, que por regla general se ejecutan en segundo plano, son responsables de enrutar y entregar el correo electrónico. Aunque sendmail se puede ejecutar directamente desde una línea de comandos de shell para enviar un mensaje, no suele utilizarse de esa forma. Los Agentes de usuario de correo se utilizan, en general, como clientes para sendmail a fin de enviar correo. Funciones de los agentes de entrega de correo :

• Entregan el correo a los usuarios locales (los usuarios que reciben correo electrónico en el equipo en que se ejecuta el Agente de entrega de correo) programando el programa /bin/mail o reenviando el correo a los usuarios de los equipos cliente locales.

• Reenvían, por medio del mecanismo de transporte apropiado, el correo electrónico que no esté dirigido a los usuarios locales a otros equipos/redes para realizar su entrega.

• Modifican el formato de la información de dirección en las cabeceras de mensaje para tener cabida para las necesidades del siguiente equipo/red de la ruta de entrada de un mensaje y para acoger el método de entrega que se utiliza para enrutar el mensaje.

Comandos de Correo Electrónico en LINUX: COMANDO mail Este comando sirve para mandar mails a un destinatário. Sintaxis: mail [opciones] [destino] Opciones:

• -v verboso muestra detalles de entrega. • -s TEMA especifica el tema (subject) del mensaje. • -c LISTA envía copias a LISTA de usuarios, separados por coma. • -b LISTA envía copia ciega a LISTA de usuarios. • -f [ARCH] lee contenido de archivo propio mbox o el indicado. • -u USUARIO equivale a mail -f /var/spool/mail/USUARIO

Comandos internos del comando mail:

• & indicador de comandos de mail. • ? muestra lista de comandos para manejo de mensajes. • d borra mensaje corriente, marcado con '>' • N muestra el mensaje número N • q sale del programa de correo

CAPÍTULO 9.- OPERACIONES DE ENTRADA Y SALIDA. 9.1. REDIRECCIONAMIENTOS En linux, a cada dispositivo corresponde un archivo de configuración, aunque puede requerir de otros archivos que le sirvan para

realizar sus procesos de lectura, escritura y almacenamiento temporal de información. De esta manera, deducimos que a cada proceso están asociados, al menos, 3 archivos abiertos y a cada uno se le asigna un número consecutivo conocido como descriptor de archivo. Primero: Corresponde al dispositivo que inicia el proceso, normalmente tecleamos los comandos o ejecutamos los programas, así que el primer archivo asociado y abierto es el correspondiente al teclado. Este archivo de donde provienen los datos o las instruciones de entrada se conoce como “entrada estándar” (standard input). Su descriptor (como archivo asociado al proceso) es el 0. Segundo: Este archivo es el asociado al dispositivo al cual se enviará el resultado del proceso, típicamente es el monitor, aunque podría ser un archivo u otro proceso. A este archivo se le conoce como “salida estándar” (standard output) y su descriptor de archivo es el 1. Tercero: Las posibles salidas de error son separadas de la salida estándar, aunque para la ejecución de un comando normalmente la vemos también en la pantalla, se le conoce como “salida de error” y su descriptor de archivo es el 2.

Mediante el uso de redireccionamientos, se pueden modificar los archivos de donde proviene la entrada estándar o al/los que se dirigen las salidas. 9.2.SIMBOLOGÍA. > Direcciona de forma destructiva a un archivo, si no existe lo crea y si existe lo sobreescribe. < Toma la entrada de un archivo. >> Agrega a un archivo, si este no existe lo crea, si existe, agrega la información redirigida. << Agrega desde la entrada estándar y requiere un indicador de finalización. Ejemplos: Para enviar el contenido del archivo /etc/passwd a otro archivo. Cat /etc/passwd > /home/usuario/passwd_bckp Para recibir la entrada estándar de un archivo: mail -s “Correo de prueba” [email protected] < mensaje_de_bienvenida.txt Para agregar a un archivo el contenido de /etc/hosts: cat /etc/hosts >> configuracion_red.txt Para tomar la entrada estándar del teclado en forma interactiva: cat << FIN *Aquí recibe la entrada del teclado hasta que encuentra el patrón “FIN” Para tomar la entrada estándar del teclado en forma interactiva y direccionarla a un archivo: cat << FIN > otra_forma_de_editar.txt Esta es una prueba de direccionamientos FIN Ordenamiento numérico del contenido de un archivo: sort < archivo Para direccionar la salida de error a un archivo: $ find / -name apache.log 2> /dev/null Desecha las salidas de error direccionándolas a un dispositivo de salida. Direccionamiento de salida de error y estándar a un mismo archivo: find / -name apache.log 2>1& busqueda

9.3. TUBERÍAS Las tuberías permiten enviar la salida de un proceso a otro proceso, el cual la puede usar como entrada estándar, de manera que se puede procesar mediante la ejecución consecutiva de comandos una salida original.

Ejemplo: cat /etc/passwd | cut -d: -f1 | grep curso | wc -l *En este caso el segundo comando selecciona solo el campo de nombre de usuario de la tabla de usuarios del sistema, el tercero busca los que contengan el patrón “curso” y el último los cuenta.

CAPÍTULO 10.- PROCESOS 10.1 ¿QUÉ ES UN PROCESO? Proceso: Conjunto de comandos o instrucciones que se encuentran en ejecución en el sistema. Un comando por si solo representa un proceso. Hay 2 tipos de procesos:

• Procesos en primer plano (foreground): Están asociados a una terminal, es decir, requieren la atención de un shell, de manera que no se puede ejecutar otro comando hasta que terminan (no hay prompt).

• Procesos en segundo plano (background): Se puede ejecutar otro proceso sin esperar a que terminen, no se asocian a una terminal y regresan inmediatamente el prompt.

10.2 TABLA DE PROCESOS Contiene toda la información de cada proceso que se ejecuta en el sistema. El comando que permite conocer el contenido de esta tabla es:ps (process status). Sintaxis: ps [-opciones] Sin opciones muestra los procesos asociados a la sesión (Número identificador de proceso, terminal asociada, tiempo de cpu y comando). Opciones:

-e Lista todos los procesos.

-f Información sobre los procesos en formato largo (full listing).

-a Procesos más frecuentes.

Combinando las opciones disponibles podemos obtener toda la información referente a un proceso:

PID: Número identificador del proceso en el sistema. PPID: Identificador del proceso padre en el sistema. UID: Número identificador del dueño del proceso en el sistema. S: Estado del proceso: R En ejecución. S Durmiendo. I Ocioso. Z Zombie. X En espera de recursos. PRI: Prioridad. SZ: Tamaño calculado en memoria para el proceso. RSS: Cantidad de memoria que ocupa el proceso mientras está corriendo. TTY: Terminal asociada tiempo de cpu.

10.3 ENVÍO DE SEÑALES A LOS PROCESOS. El comando “kill” permite enviar señales a los procesos. Sintaxis: kill –(señal) PID

Señales. Identificador numérico Significado.

TERM 15 Terminación.

KILL 9 Muerte.

HUP 1 Reinicio.

Identificación de trabajos en el sistema: El comando “jobs” into su número informa los procesos asociados a la terminal, regresando identificador como el comando asociado. Para enviar señales a los trabajo cambia la sintaxis del comando kill: Kill % ID_job Envío de un proceso de 1er a segundo plano. Cuando un proceso se encuentra en ejecución en primer plano se puede detener momentáneamente con la combinación de teclas “^Z” (control + z), en estado “detenido” o “stopped” se puede volver a ejecutar en segundo plano usando el comando: $ bg % id_job Regreso de un proceso de segundo a primer plano. Usamos el comando: $ fg % id_job

CAPÍTULO 11. GENERALIDADES DE SHELLS 11.1 INTRODUCCIÓN: Unix nace con Bourne Shell, el siguiente shell disponible es C-Shell en Berkeley y éstos se toman como estándares. El shell es un programa que sirve de intermediario entre el usuario y el kernel, es decir, el usuario ejecuta comandos cuyos nombres y sintaxis son fáciles de recordar y usar y el shell los traduce al sistema operativo, que a su vez interactúa con la arquitectura de los equipos:

11.2 FUNCIONES

• Control del ambiente en las sesiones. • Es el medio para transferir y redireccionar la salida entre archivos y procesos. • Acepta y procesa programas de los usuarios. • Sustitución de variables y cadenas (metacaracteres). • El shell asigna una prioridad u orden para interpretar las líneas de comandos:

o Sustitución de history (csh y bash). o Separación de palabras:

� Se separan por blancos o tabuladores. � Para poner blancos se deben delimitar con comillas, aunque ignora el número de blancos entre

palabras. • Actualización de la lista history (csh y bash: Registro de órdenes que se dan en una sesión). • Interpreta las comillas simples ('), dobles (“) e invertidas (`). • Sustitución de alias. • Prioridad en los componentes de una línea de comandos:

o Redireccionamiento de entradas y salidas. o Sustitución de variables. o Sustitución de comandos. o Expande los nombres de archivos. o Ejecuta el comando.

11.3 TIPOS DE SHELL C-Shell: Intérprete de comandos que incorpora un mecanismo de historial de comandos (history), facilita el control de trabajos (jobs), es interactivo con la terminación de nombres de archivos y usuarios. sh: Es el más antiguo de los shells, es usado como shell de autenticación y no guarda historial de comandos. tcsh: Es una ampliación de csh, incluye un editor para la línea de comandos, terminación de palabra programable, mecanismo de historial de comandos bash: Incorpora las utilidades de korn shell y csh. Tiene historial de comandos interactivo. Para indicarle comportamientos definidos al shell, aplicaciones o programas podemos hacer uso de las variables, las cuales pueden almacenar cadenas de caracteres que representan rutas, nombres, opciones, argumentos, etc. Existen dos tipos de variables:

• Las variables locales se asocian con el shell que las genera y no se pasan a los procesos descendientes de este, ni a otros shells o subshells. Tradicionalmente en su nombre solo se usan minúsculas.

• Las variables de ambiente permanecen durante nuestra sesión y pueden ser usadas por las aplicaciones. Sus nombres se definen preferentemente en mayúsculas.

11.4 ARCHIVOS DE INICIALIZACIÓN Contienen los comandos o variables que le indican al shell el comportamiento que esperamos de él y se ubican en los directorios hogar para los usuarios o las aplicaciones. Varían de un shell a otro:

• .login y .cshrc para csh. • .profile para sh. • .bash_profile para bash.

11.5 VARIABLES DE AMBIENTE Son variables definidas en shell que van a permanecer durante nuestra sesión. Las utilizan las aplicaciones en determinado momento y por convención se usan mayúsculas para definir sus nombre. Ejemplos:

VARIABLE FUNCIÓN

PATH Define trayectoria de búsqueda de los comandos.

TERM Contiene el tipo de terminal en uso.

HOME Contiene la ruta del directorio hogar del usuario.

SHELL Define el shell del usuario.

Para visualizar el contenido de estas variables: echo $VARIABLE 11.6 DEFINICIÓN DE VARIABLES csh: % set variable=valor (define) } variables de shell o locales % unset variable (elimina) % setenv VARIABLE valor (define) } Variables de ambiente (globales) % unsetenv VARIABLE (elimina) sh: $ variable=valor (define) } variables de shell o locales $ unset variable (elimina) $ variable=valor $ export variable (define) } Variables de ambiente (globales) $ uset=var Comandos útiles para conocer el shell: env

Función: informa los valores de las variables de ambiente. stty -a Visualiza la configuración de la terminal, es decir, número de filas y columnas, color de fondo, de letra y para los diferentes tipos de archivos, velocidad de tranferencia hacia la terminal, tipo de terminal, funciones para el teclado, apariencia, etc. * La información de estos apuntes se tomaron de la página http://www.cuaed.unam.mx