Grupo Universitario de GNU/Linux de Entre Ríos Curso de Administración GNU/Linux Nivel I Facultad de Ciencia y Tecnología – Oro Verde - 2009 Grupo Universitario de GNU/Linux de Entre Ríos Curso de Administración GNU/Linux Nivel I Facultad de Ciencia y Tecnología – Oro Verde - 20091 El Curso de Administración de GNU/Linux pretende formar profesionales en el ámbito del Software Libre. Curso de Administración GNU/Linux Nivel I Capítulo 1: Introducción a GNU/Linux Origen de GNU/Linux Características de GNU/Linux Conceptos Básicos Trabajando con la línea de comandos 2 En la primera clase veremos algo de historia acerca de GNU/Linux y el software libre y algunos conceptos básicos sobre los mismos. Además aprenderemos a trabajar con el intérprete de comandos y veremos algunos comandos básicos. Curso de Administración GNU/Linux Nivel I Clase 1: Origen de GNU/Linux Algo de historia... 1.970 UNIX Sistema Operativo multiusuario, multitarea y multiplataforma Desarrollado en AT&T, por Ken Tommson y Dennis Ritchie Muchos fabricantes compraron su código fuente y crearon diversas versiones (AIX, HP UIX, Solaris, entre otros) Debido al gran desorden e incompatibilidad se decide adoptar el estándar IEEE POSIX.1 Terminó siendo un Sistema Operativo demasiado costoso y de gran volumen 3 UNIX es uno de los sistemas operativos más populares del mundo. Es una marca registrada de The Open Group, aunque originalmente fue desarrollado por AT&T. UNIX es un sistema operativo real. Por sistema operativo real se entiende que debe tener como mínimo dos características: más de una persona puede acceder al mismo tiempo al ordenador y, mientras lo hacen, cada una de ellas puede ejecutar múltiples aplicaciones. Esto se llama ser un sistema operativo multiusuario y multitarea. UNIX fue diseñado originalmente para ser ese tipo de sistema multitarea, allá en los años 70,y para que se pudiera ejecutar en mainframes y en minicomputadoras. Con UNIX, cada usuario accede al sistema utilizando un nombre de acceso. Opcionalmente, (aunque es altamente recomendable), el usuario deberá proporcionar una contraseña, que asegura que la persona que accede es quien dice ser. Además, los usuarios no acceden a cualquier computadora en caso de que estemos hablando de una red. UNIX funcionará prácticamente en cualquier plataforma que haya sido construida. Muchos fabricantes han adquirido el código fuente (IBM; Hewlett-Packard, Sun, etc.) y desarrollado sus propias versiones, a las que han incorporado su toque personal a lo largo de los años. Pero no son los únicos que continúan modificando UNIX. Cuando el sistema se desarrolló por primera vez, el código fuente se proporcionó gratuitamente a las universidades y a los institutos. Dos de ellas han estado en primera línea desde el primer momento: la Universidad de California en Berkeley y el Instituto Tecnológico de Massachussetts. Como nos podemos imaginar, el desarrollo de UNIX se produjo de forma bastante desordenada. Gente de todo el planeta comenzó a desarrollar herramientas para UNIX. Desgraciadamente, no existía ninguna coordinación que guiase todo el desarrollo, lo cual produjo grandes diferencias entre las distintas versiones de UNIX. Finalmente la mayoría de los estándares se encuentran bajo el estándar IEEE POSIX.1. El mayor inconveniente de UNIX es que es muy grande. También es caro, especialmente en sus versiones para PC. Aquí es donde aparece Linux, pues, como se explica con más detalle un poco más adelante, se diseñó para ser pequeño, rápido y barato. Hasta ahora los diseñadores han tenido éxito. Curso de Administración GNU/Linux Nivel I Clase 1: Origen de GNU/Linux Algo de historia... 1.983 Proyecto GNU Iniciado y liderado por Richard Stallman Tiene como objetivo principal desarrollar un sistema operativo totalmente libre También ha desarrollado diversas herramientas como compiladores, editores de texto, entornos de escritorio entre otros Todos sus desarrollos se licencian bajo Licencia GPL de GNU Muy ligado con la Free Software Foundation 4 El proyecto GNU fue iniciado por Richard Stallman con el objetivo de crear un sistema operativo completamente libre: el sistema GNU . El 27 de septiembre de 1983 se anunció públicamente el proyecto por primera vez en el grupo de noticias net.unixwizards. Al anuncio original, siguieron otros ensayos escritos por Richard Stallman como el "Manifiesto GNU", que establecieron sus motivaciones para realizar el proyecto GNU, entre las que destaca "volver al espíritu de cooperación que prevaleció en los tiempos iniciales de la comunidad de usuarios de computadoras". GNU es un acrónimo recursivo que significa GNU No es Unix (GNU is Not Unix). Puesto que en inglés "gnu" (en español "ñu") se pronuncia igual que "new", Richard Stallman recomienda pronunciarlo "guh-noo". En español, se recomienda pronunciarlo ñu como el antílope africano o fonéticamente; por ello, el término mayoritariamente se deletrea (GN-U). En 1985, Stallman creó la Free Software Foundation (FSF o Fundación para el Software Libre) para proveer soportes logísticos, legales y financieros al proyecto GNU. La FSF también contrató programadores para contribuir a GNU, aunque una porción sustancial del desarrollo fue (y continúa siendo) producida por voluntarios. A medida que GNU ganaba renombre, negocios interesados comenzaron a contribuir al desarrollo o comercialización de productos GNU y el correspondiente soporte técnico. El más prominente y exitoso de ellos fue Cygnus Solutions, ahora parte de Red Hat. Curso de Administración GNU/Linux Nivel I Clase 1: Origen de GNU/Linux Algo de historia... 1.987 MINIX Sistema Operativo, clon de UNIX. Desarrollado en la Universidad de Vrije de Ámsterdam por Andrew Tanenbaum Construido para ejecutarse únicamente en plataformas INTEL Licenciado bajo Licencia BSD Desarrollado con propósitos específicamente educativos 5 Minix es un clon del sistema operativo Unix distribuido junto con su código fuente y desarrollado por el profesor Andrew S. Tanenbaum en 1987. La última versión oficial de Minix es la 3.1.2, publicada el 8 de Mayo de 2006. Fue creado para enseñar a sus alumnos el diseño de sistemas operativos en la Vrije Universiteit de Ámsterdam. La razón de su desarrollo fue porque Unix estaba bajo restricciones de licencia de AT&T, era demasiado complicado y corría sobre máquinas complejas; algo completamente antipedágogico. Gracias a su reducido tamaño, diseño basado en el paradigma del micronúcleo, y su amplia documentación, resulta bastante apropiado para personas que desean instalar un sistema operativo compatible con Unix en su máquina personal así como aprender sobre su funcionamiento interno. Minix fue desarrollado para correr sobre IBM PC con procesador Intel 8088 o superior, aunque se han creado conversiones para otros sistemas. Debido al enfoque puramente educacional de Minix, Tanenbaum no permitía que este fuera modificado demasiado ya que esto complicaría el sistema y no permitiría que sus estudiantes lo entendieran en un semestre. Por estos motivos, Linus Torvalds decidió escribir su propio núcleo de sistema operativo (Linux) compatible con Unix. En simbiosis con las herramientas de GNU surgió GNU/Linux, que ha ganado protagonismo en el campo de los Unix para ordenadores compatibles con el IBM PC, principalmente debido a que su licencia (GPL) que permite la modificación del mismo. Actualmente Minix se distribuye con una licencia similar a la licencia BSD, lo que permite su modificación. Para una persona poco familiarizada con los elementos internos de un sistema operativo, Minix es una buena opción que le permite entender casi todos los elementos del sistema con solo algunos meses de uso y estudio. Curso de Administración GNU/Linux Nivel I Clase 1: Origen de GNU/Linux Algo de historia... 1.991 LINUX Núcleo de Sistema Operativo multiusuario y multitarea, también clon de UNIX y basado en MINIX. Creado originalmente por Linus Torvalds en la Universidad de Helsinki, Finlandia Construido para arquitecturas PC inicialmente Licenciado bajo Licencia GPL de GNU Desarrollado con propósitos específicamente educativos 6 Linux es la denominación de un sistema operativo tipo Unix (también conocido como GNU/Linux) y el nombre de un núcleo. Es uno de los ejemplos más prominentes del software libre y del desarrollo del código abierto, cuyo código fuente está disponible públicamente, para que cualquier persona pueda libremente usarlo, estudiarlo, redistribuirlo, comercializarlo y, con los conocimientos informáticos adecuados, modificarlo . Las variantes de los sistemas Linux de denominan "distribuciones" (distro) y su objetivo es ofrecer una edición que cumpla con las necesidades de determinado grupo de usuarios, de estar forma existen distribuciones para hogares, empresas y servidores. Algunas son gratuitas y otras de pago, algunas insertan software no libre y otras contienen solo software libre. Los primeros sistemas Linux se originaron en 1992, al combinar utilidades de sistema y bibliotecas del proyecto GNU con el núcleo Linux, creado por Linus Torvalds, con la colaboración de cientos de co-desarrolladores y que se distribuye bajo la Licencia Pública General de GNU. Desde finales del 2000 se ha incrementado el apoyo y respaldo de parte de fabricantes de hardware como IBM, Sun Microsystems, Hewlett-Packard, y Novell. Algunos de ellos (como Dell, Hewlett-Packard, Lenovo y Acer) lo incluyen preinstalado en algunos modelos de computadoras portátiles y de escritorio para el usuario final. El respaldo de las compañías de software también está presente, ya que -entre otras aplicaciones- Nero, Java, Google Earth, Google Desktop, Adobe Reader, Adobe Flash, RealPlayer, Silverlight y Yahoo! Messenger están disponibles para Linux. Linux puede instalarse en computadores de escritorio (PCs x86 y x86-64 así como Macintosh y PowerPC), computadores de bolsillo, teléfonos celulares, portátiles, dispositivos empotrados, videoconsolas (Xbox, PlayStation 3, PlayStation Portable, Dreamcast, GP2X...) y otros (como en varios modelos de iPod), sin embargo su mayor desarrollo se ha llevado a cabo en el los servidores y supercomputadores. La marca registrada Linux (Número de serie: 1916230) pertenece a Linus Torvalds y se define como "un sistema operativo para computadoras que facilita su uso y operación". Existen grupos de usuarios del sistema Linux en casi todas las áreas del planeta. Curso de Administración GNU/Linux Nivel I Clase 1: Origen de GNU/Linux Algo de historia... 1.992 GNU/LINUX Es un Sistema Operativo completo. Contiene el núcleo desarrollado por Linus Tordvals y las aplicaciones del proyecto GNU. En distintos sabores o “Distribuciones GNU/Linux” 7 GNU/Linux a diferencia de Linux, es un Sistema Operativo completo, conformado por el núcleo desarrollado por Linus Tordvals y las herramientas aportadas por el proyecto GNU. En 1.992 empezaron a aparecer lo que denominamos “Distribuciones GNU/Linux” y una de las destacada SLS (Softlangind Linux System) en 1993 y vigente con el nombre de Slackware. Una Distribución GNU/Linux propiamente dicha es un Kernel de Linux compilado, más las herramientas del proyecto GNU, más algún agregado propio de la misma. En la actualidad existen más de 200 distribuciones GNU/Linux, algunas desarrolladas por empresas y otras por grupos de usuarios de diversas partes del mundo. Cada distribución dispone de alguna herramienta en particular o algún agregado como ser herramientas de instalación de software, de configuración del mismo o aplicaciones desarrolladas para ella. Las distribuciones más conocidas al momento son: Debian GNU/Linux Ubuntu Linux Fedora Red Hat Linux Suse Linux Mandriva PC Linux OS Slackware Linux Gentoo Linux En nuestro país se desarrollan algunas distribuciones GNU/Linux, entre ellas Tuquito (desarrollada en Tucumán y basada en Debian) y Ututo (Desarrollada en Salta y basada en Gentoo). Curso de Administración GNU/Linux Nivel I Clase 1: Origen de GNU/Linux Software Libre ¿Qué es? Se refiere a la libertad que da el software, es decir a todos los derechos que brinda. No quiere decir que sea absolutamente gratis ¿Qué permite hacer? Ejecutar el programa, bajo cualquier propósito Estudiar el funcionamiento del programa, para poder adaptarlo a nuestras necesidades Redistribuir copias del mismo Mejorar el programa y poner esas mejoras a disposición de toda8 la comunidad La confusión del término gratis en el Software Libre proviene de la traducción al español que se hace de la frase "Free Software", en donde "Free" en ingles tiene un doble significado: libre y gratis. Sin embargo, la correcta y verdadera traducción en el Software Libre es hacia el término de libertad y no al nulo costo económico del software. El Software Libre, por lo tanto, nos remite a una libertad en su uso, de aquí que la “Free Software Fundation” (FSF) nos da a conocer las cuatro libertades que poseen las aplicaciones que son liberadas bajo este concepto: El Software Libre proporciona la libertad de: 0.Ejecutar el programa, para cualquier propósito; 1.Estudiar el funcionamiento del programa, y adaptarlo a sus necesidades; 2.Redistribuir copias; 3.Mejorar el programa, y poner sus mejoras a disposición del público, para beneficio de toda la comunidad." Debido a estas libertades encontramos muchas veces que podemos disponer gratuitamente del Software Libre, ya sea descargándolo desde Internet u obteniéndolo por otro medio. No obstante, dentro de las cuatro libertades que se han descrito anteriormente, y en la GNU General Public Licence (Licencia Publica General GNU), que es una de las principales licencias bajo las cuales se libera el Software Libre (en donde se incluye el sistema GNU/Linux), no limitan la redistribución de las copias a un plano no lucrativo, sino que intentan promover su libre distribución por cualquier medio y de cualquier forma, ya sea como regalo, en rifas, como bono, en venta directa, etc. Es por ello que existen empresas que venden sus productos, aun cuando han sido liberados como Software Libre. Del mismo modo, encontramos autores de Software que piden una retribución por su trabajo, la mayoría de las veces como donaciones, pero también en algunas otras con un costo mínimo de uso. Curso de Administración GNU/Linux Nivel I Clase 1: Características de GNU/Linux Características Es multitarea Es multiusuario Utiliza un sistema de paginado de memoria virtual Es software libre Es adaptable a muchos entornos y ambientes Es altamente estable Cuenta con una gran cantidad de aplicaciones Altamente resistente a virus y amenazas similares Cuenta con una gran comunidad de usuarios 9 Multitarea: Se pueden ejecutar varias tareas y se puede acceder a varios dispositivos al mismo tiempo. Memoria virtual: Linux puede usar una porción de su disco duro como memoria virtual, lo que aumenta la eficiencia del sistema al mantener los procesos activos en la memoria física Soporte multiusuario: Linux permite que varios usuarios accedan a su sistema simultáneamente sin que haya conflicto entre ellos y cada uno con su espacio de trabajo. Código fuente libre: El kernel de Linux no utiliza código propietario. Adaptabilidad: Linux puede ejecutar una amplia variedad de software, disponible gracias al proyecto GNU. Este software incluye de todo, desde desarrollo de aplicaciones a la administración del sistema y juegos. En casa podemos tener un servidor web, o un servidor FTP con nuestro Linux. Sólo hay que leer la documentación de cómo hay que hacerlo y poner manos a la obra. Esto ha generado grandes cambios sociales en nuestro tiempo, al descentralizar las fuentes de información en el mundo. Estabilidad: Linux presenta una gran estabilidad en la gestión de sus procesos internos del sistema. Es muy difícil conseguir que Linux se "cuelgue" y, por supuesto, jamás se verá una "pantalla azul". Defensa contra los virus: Aunque la mayor parte de los virus que rondan por Internet son desarrollados para Windows, es cierto que, en teoría, existen algunos para Linux, pero son más difíciles de crear debido a que Linux emplea un sistema de permisos de archivos previendo los posibles desastres que se ven todos los días en los entornos de Windows y principalmente la comprometida comunidad de desarrolladores de GNU/Linux se encargan de corregir los posibles errores de seguridad en tiempo óptimo. Relación con Internet: Debido a que Linux creció gracias a Internet, digamos que ambos hablan en el mismo lenguaje y por tanto, se ve claramente que navegar por Internet con Linux es más rápido que otros sistemas. La comunidad Linux: Linux tiene una comunidad de voluntarios con ganas de ayudar a los que les cuesta adentrarse en este mundo. Y todo por afán de colaborar en este proyecto. Curso de Administración GNU/Linux Nivel I Clase 1: Conceptos Básicos de GNU/Linux Conceptos básicos Bases Proyecto GNU SISTEMA OPERATIVO GNU/Linux Núcleo o kernel Características Todo es un archivo Memoria Virtual Sistema de paquetes Distribuciones Difusión Licenciamiento Distros instalables Internet Software Libre y Open Source Distros LiveCD Linux User Group Licencias de Software Libre10 Memoria Swap: La mayoría de los sistemas operativos modernos poseen un mecanismo llamado memoria virtual, que permite hacer creer a los programas que tienen más memoria que la disponible realmente, en GNU/Linux existe una partición especifica para llevar a cabo esta labor de intercambio. Núcleo o Kernel: El Kernel es la parte fundamental de un sistema operativo. Es el software responsable de facilitar a los distintos programas acceso seguro al hardware de la computadora o en forma más básica, es el encargado de gestionar recursos, a través de servicios de llamada al sistema. Todo es un archivo: En Linux todo es un archivo, y cuando digo todo es todo. Desde los archivos de datos hasta las particiones de los discos pasando por el ratón y la tarjeta de sonido. Los directorios también son archivos. Existe un directorio raíz (/) del que cuelga todo. Los dispositivos cuelgan del directorio /dev. Live CD: Es un sistema operativo almacenado en un medio extraíble, tradicionalmente un CD o un DVD (de ahí sus nombres), que puede ejecutarse desde éste sin necesidad de instalarlo en el disco duro de una computadora, para lo cual usa la memoria RAM como disco duro virtual y el propio medio como sistema de ficheros. Sistema de paquetes: Un sistema de gestión de paquetes, también conocido como gestor de paquetes, es una colección de herramientas que sirven para automatizar el proceso de instalación, actualización, configuración y eliminación de paquetes de software. Software Libre y Open Source: El Software Libre hace referencia a la libertad y el Open Source indica gratuidad. Licencias: La licencia es una autorización que da el autor de un Software a los usuarios que estén interesados en el uso del mismo. Las libertades del SL están protegidas por muchas licencias, pasamos a mencionas algunas: GPL, BSD, LGPL y CC. La licencia pública general de GNU o mas conocida por su nombre en inglés GNU General Public License o simplemente su acrónimo del inglés GNU GPL, es una licencia creada por la Free Software Foundation a mediados de los 80, y está orientada principalmente a proteger la libre distribución, modificación y uso de software. La licencia BSD es la licencia de software otorgada principalmente para los sistemas BSD (Berkeley Software Distribution). Las licencias Creative Commons o CC están inspiradas en la licencia GPL (General Public License) de la Free Software Foundation, sin embargo no son un tipo de licenciamiento de software. Linux User Group: Un Grupo de Usuarios de Linux, también conocido por su acrónimo GUL (o en inglés LUG, de Linux User Group), suele ser una asociación local, provincial, regional o nacional, sin ánimo de lucro, que intenta difundir el uso de Linux y del software libre, y su cultura en su ámbito de su actuación, así como representar un punto de apoyo para los propios usuarios. Curso de Administración GNU/Linux Nivel I Clase 1: Conceptos Básicos de GNU/Linux “Todo” sistema operativo posee tres niveles que corresponden a sus funciones vitales: Kernel o núcleo Drivers o controladores Interfaz del usuario 11 El Kernel o el núcleo del sistema es quien realmente controla a la computadora. Es el software responsable de facilitar a los distintos programas acceso seguro al hardware de la computadora o en forma más básica, es el encargado de gestionar recursos, a través de servicios de llamada al sistema. Hay cuatro grandes tipos de núcleos: Los núcleos monolíticos facilitan abstracciones del hardware subyacente realmente potentes y variadas. Los micronúcleos (en inglés microkernel) proporcionan un pequeño conjunto de abstracciones simples del hardware, y usan las aplicaciones llamadas servidores para ofrecer mayor funcionalidad. Los núcleos híbridos (micronúcleos modificados) son muy parecidos a los micronúcleos puros, excepto porque incluyen código adicional en el espacio de núcleo para que se ejecute más rápidamente. Son los que reciben o dan salida a señales analógicas que son procesadas digitalmente. Esto puede realizarse gracias a los conversores analogicos/digitales que, como su nombre indica ,convierte señales analógicas a digitales Los exonúcleos no facilitan ninguna abstracción, pero permiten el uso de bibliotecas que proporcionan mayor funcionalidad gracias al acceso directo o casi directo al hardware. Los Drivers son los programas encargados de la traducción de instrucciones entre el Kernel y los distintos componentes del hardware. La Interfaz del usuario, usuario por otra parte, también se encarga de un tipo de comunicación, pero con el usuario del sistema. Curso de Administración GNU/Linux Nivel I Clase 1: Tabajando con la línea de comandos Intérprete de comandos o Shell Permite ejecutar ordenes básicas del sistema operativo Permite manejar los procesos del sistema Permite redirigir la entrada/salida de los comandos Nos provee de un sistema de script (archivos por lotes) 12 Es un programa informático que actúa como Interfaz de usuario para comunicar al usuario con el sistema operativo mediante una ventana que espera órdenes escritas por el usuario en el teclado, los interpreta y los entrega al sistema operativo para su ejecución. La respuesta del sistema operativo es mostrada al usuario en la misma ventana. A continuación, El programa shell queda esperando más instrucciones. Se interactúa con la información de la manera más sencilla posible, sin gráficas, solo el texto crudo. Por extensión también se llama Intérprete de comandos a algunas interfaces de programas (mayores) que comunican al usuario con el software o al Cliente (informática) de un Servidor, como por ejemplo, bancos de datos (MySQL, Oracle) u otros programas (openSSL, FTP). Dada la importancia de esta herramienta, existe ya desde los comienzos de la computación. Existen para diversos sistemas operativos, diversos tipos de hardware, con diferente funcionalidad. Suelen incorporar características tales como control de procesos, redirección de entrada/salida, listado y lectura de ficheros, protección, comunicaciones y un lenguaje de órdenes para escribir programas por lotes o (scripts o guiónes). Curso de Administración GNU/Linux Nivel I Clase 1: Tabajando con la línea de comandos Algunos Intérpretes de comandos: command.com: es para plataformas MS-DOS, Windows de 16/32 bits. cmd.exe: es para plataformas Windows NT/2000/XP/2003. ksh: El korn shell de UNIX para sistemas *nix y GNU/Linux. C Shell (csh): similar en sintaxis al lenguaje C para sistemas *nix.. Bourne Shell (sh): para sistemas *nix. 13 COMMAND.COM es el nombre del intérprete de comandos para DOS y versiones de Windows de 16/32bits (95/98/98 SE/Me). Al ser el primer programa que se ejecuta después del inicio, posee también el rol de la configuración del sistema ejecutando el archivo AUTOEXEC.BAT. Como intérprete de comandos, tiene dos modos de ejecución. El primero es el modo interactivo, en el que el usuario escribe comandos los cuales son luego ejecutados. El segundo es el modo por lotes(batch), que ejecuta una secuencia predefinida de comandos guardada como un archivo de texto con la extensión .BAT. El sucesor de COMMAND.COM en Windows NT/2000/XP/2003 y OS/2 es cmd.exe. cmd.exe El Korn shell (ksh) es un Intérprete de línea de órdenes para los sistemas Linux y Unix. Fue desarrollado por David Korn de los Laboratorios AT&T Bell en los comienzos de los 80s. Es totalmente compatible con el Bourne Shell y también incluye muchos elementos del interprete de comandos C, como historia de órdenes. C Shell es un lenguaje de programación, conocido también como csh y que fue desarrollado por Bill Joy en la Universidad de Berkeley, California. Bourne Shell era la shell por defecto de la versión 7 de Unix, y sustituyó la Thompson shell, cuyo ejecutable tenía el mismo nombre: sh. Fue desarrollado por Stephen Bourne, de los Laboratorios Bell de AT&T, y vio la luz en la versión 7 de Unix distribuida a colegios y universidades. Todavía es una shell muy popular para cuentas Unix. En la mayoría de los sistemas Unix el programa binario de la Bourne shell o un programa compatible se encuentra en /bin/sh. Curso de Administración GNU/Linux Nivel I Clase 1: Tabajando con la línea de comandos Algunos Intérpretes de comandos: GNU Bourne Again Shell (bash): variante del Bourne Shell clásico para Linux con características avanzadas. Tcsh: versión de C Shell para Linux con funcionalidades similares a bash. Zsh: pequeño intérprete similar al Bourne Shell. 14 Bash es un shell de Unix (intérprete de órdenes de Unix) escrito para el proyecto GNU. Su nombre es un acrónimo de bourne-again shell (otro shell bourne) — haciendo un juego de palabras (born-again significa renacimiento) sobre el Bourne shell (sh), que fue uno de los primeros intérpretes importantes de Unix. Hacia 1978 el intérprete Bourne era el intérprete distribuido con el Unix Version 7. Stephen Bourne, por entonces investigador de los Laboratorios Bell, escribió el intérprete Bourne original . Brian Fox escribió el intérprete bash en 1987. En 1990, Chet Ramey se convirtió en su principal desarrollador. bash es el intérprete predeterminado en la mayoría de sistemas GNU/Linux.. La "T" de tcsh, tcsh viene de la T de TENEX, que es un sistema operativo que inspiró a Ken Greer (el autor de tcsh) con su singular capacidad de autocompletado de comandos. Ken Greer trabajó en su proyecto tcsh a finales de los años 70 en la Universidad de Carnegie Mellon. Tiempo después Paul Placeway de la Universidad de Ohio continuó con su desarrollo en los años 80. Zsh Es un interprete de comandos, también conocido como shell, para sistemas operativos basados en Unix, como por ejemplo GNU/Linux. La primera versión de la Zsh fue escrita por Paul Falstad en 1990 cuando era un estudiante en la Princeton University. El nombre Zsh deriva de Zhong Shao por entonces un asistente de estudios en la universidad. Paul Falstad pensó que su nombre de login "zsh" era un buen nombre para una shell. Curso de Administración GNU/Linux Nivel I Clase 1: Tabajando con la línea de comandos Comandos generales: pwd ls cd find grep touch 15 A continuación veremos una serie de comandos generales que se encuentran en todas las distribuciones GNU/Linux. Comenzaremos viendo un grupo que se encarga de moverse por el sistema, cambiar de directorio y revisar archivos. Curso de Administración GNU/Linux Nivel I Clase 1: Tabajando con la línea de comandos Comandos generales: pwd - Imprime por pantalla el nombre del directorio de trabajo actual. Sintaxis: pwd <opción> Opciones: --help: muestra la ayuda del comando y sale del mismo. --version: muestra información de la versión del comando. Ejemplos: $pwd $pwd --version 16 Ahora comenzaremos a trabajar con la línea de comandos y veremos la utilización de algunos comandos básicos que vienen en la gran mayoría de las distribuciones GNU/Linux. El comando pwd (Present Working Directory) se encarga de mostrar el directorio actual de trabajo en el cual nos encontramos posicionados. Curso de Administración GNU/Linux Nivel I Clase 1: Tabajando con la línea de comandos Comandos generales: ls – Lista los contenidos de los directorios. Sintaxis: ls <opciones> <archivo...> Opciones: -l: lista con formato largo mostrando los permisos, cantidad de enlaces, etc. -a: muestra todos los archivos incluyendo a los ocultos. -R: lista en forma recursiva el contenido de los subdirectorios encontrados. Ejemplos: $ls -la $ls -R 17 Uno de los comandos más utilizados es el ls (list), el cual se encarga de mostrar los archivos que se ubican dentro del directorio actual de trabajo. Algunos de sus usos más importantes son ls –color (muestra la salida formateada por colores) ls -l (muestra la salida en modo listado largo) ls -a (muestra los archivos ocultos) ls -R (muestra el contenido en forma recursiva) ls -F(muestra los directorios anteponiendo el carácter “/”) Debemos tener en cuenta que los usuarios deben tener “permiso” para poder listar el contenido de un determinado directorio (esto lo veremos más adelante en el curso). Curso de Administración GNU/Linux Nivel I Clase 1: Tabajando con la línea de comandos Comandos generales: cd – Cambia el directorio de trabajo. Sintaxis: cd <opciones> <ruta> Opciones: .: cambia al directorio actual. ..: cambia el directorio actual al padre. Ejemplos: $cd .. $cd /home/juan 18 Otro comando muy utilizado es el cd (change directory) que nos permite cambiar el directorio a actual al que nosotros tipeemos. Algunas opciones importantes son cd .. (cambia al directorio padre) cd – (cambia al directorio anterior) cd . (cambia al directorio actual) cd ~ (cambia al directorio principal del usuario) Curso de Administración GNU/Linux Nivel I Clase 1: Tabajando con la línea de comandos Comandos generales: find – Realiza una búsqueda de archivos en una jerarquía de directorios. Sintaxis: find <opciones> <ruta...> <expresión> Opciones: -L: seguir enlaces simbólicos. -P: No seguir enlaces simbólicos. Ejemplos: $find -L /home -name archivo.txt $find -P / -iname linux* 19 El comando find (búsqueda) nos permite buscar archivos en una ubicación específica utilizando distintos tipos de búsqueda, entre ellos: find ./ -iname algo* (busca todos los archivos que comiencen con “algo”) find ./ -type f (muestra únicamente los archivos, no mostrando enlaces y directorios) find /home/usuario -L (sigue los enlaces hasta su destino específico) find ../ -type -f -ls (muestra solamente los archivos del directorio actual en formato largo) find . \( -name "*txt" -or -name "*dat" \) -type f -ls (muestra todos los archivos que terminan en “txt” o directorio actual de trabajo en formato largo) “dat” dentro del Curso de Administración GNU/Linux Nivel I Clase 1: Tabajando con la línea de comandos Comandos generales: touch – Cambia la fecha de un archivo. Sintaxis: touch <opciones> <archivo...> Opciones: -a: cambia solamente el tiempo de acceso. -m: cambia solamente la fecha de modificación. -c: no crea archivos que no existían antes. Ejemplos: $touch archivo.txt $touch -am -t 0803011100.30 archivo1.txt 20 Este comando cambia la fecha de creación de un archivo, además si este archivo no existe se crea, con contenido vacío. Curso de Administración GNU/Linux Nivel I Clase 1: Tabajando con la línea de comandos Comandos generales: grep – Imprime en pantalla las lineas que coincidan con un patrón especificado. Sintaxis: grep <opciones> patrón <archivo...> Opciones: -r: busca recursivamente dentro de todos los subdirectorios del directorio actual. -H: Imprime el nombre del archivo con cada coincidencia. Ejemplos: $grep 'pc1' archivo.txt $grep -H 'pc2' archivo1.txt 21 El comando grep (global regular expression print) permite buscar una subcadena de texto o expresión en una cadena dada. Por ejemplo grep 'hola' archivo1 (devuelve todas las líneas en donde se encuentra la cadena 'hola' en el archivo 'archivo1') grep -v 'adios' archivo2 (devuelve todas las líneas que no contienen la cadena 'adios' en el archivo 'archivo2') grep --color 'cadena' algo (devuelve todas las líneas donde se encuentra la cadena 'cadena' en el archivo 'algo' y colorea las coincidencias) Curso de Administración GNU/Linux Nivel I Clase 1: Tabajando con la línea de comandos Comandos para mostrar informacion sobre archivos: stat file 22 A continuación veremos un par de comandos que nos muestran información sobre el estado y el tipo de archivo. Curso de Administración GNU/Linux Nivel I Clase 1: Tabajando con la línea de comandos Comandos para mostrar informacion sobre archivos: stat – muestra el estado de un archivo o un sistema de archivos Sintaxis: stat <archivo> Opciones: -f: muestra información acerca de un sistema de archivos en vez de un archivo Ejemplos: $stat /home/usuario/Desktop $stat -f /dev/hda 23 El comando stat (statistics) muestra el información y el estado de un archivo o de un sistema de archivos, si se usa con un archivo, nos permite ver su fecha de creación, modificación, cantidad de bloques e inodos y demás. Si se usa con un sistema de archivos (con la opción -f) nos muestra espacio total y disponible del mismo (en bloques) entre otros. Curso de Administración GNU/Linux Nivel I Clase 1: Tabajando con la línea de comandos Comandos para mostrar informacion sobre archivos: file – identifica tipos de archivos Sintaxis: file <archivo> Opciones: -i: muestra información de su archivo y su tipo mime Ejemplos: $file /home/usuario/Desktop $file -i /home/usuario/.bashrc 24 El comando file (archivo) se encarga de proporcionar información sobre el tipo de archivo al que nos referimos, asi como información sobre su tipo mime. Curso de Administración GNU/Linux Nivel I Clase 1: Tabajando con la línea de comandos Comandos para mostrar el contenido de archivos: cat tac head tail more less 25 A continuación veremos los comandos que se utilizan para mostrar el contenido de un archivo (plano o de texto) de diferentes formas. Los comandos cat y tac muestran el contenido total de un archivo en orden e inversamente. Los comandos head y tail muestran las primeras y últimas líneas de un archivo, respectivamente. Los comandos more y less muestran el archivo en formato paginado, permitiendo navegar por su contenido y realizar búsquedas Curso de Administración GNU/Linux Nivel I Clase 1: Tabajando con la línea de comandos Comandos para mostrar el contenido de archivos: cat – muestra el contenido de un archivo y permite concatenar cadenas de texto tac – muestra el contenido de un archivo en orden inverso Sintaxis: cat <opciones> <archivo...> Opciones: -b: no muestra las líneas en blanco del archivo -n: númera las líneas del archivo Ejemplos: $cat -b archivo $cat -n archivo2 26 El comando cat (catenate) se encarga de mostrar el contenido de un archivo o de concatenar cadenas de texto, además suele utilizarse junto con el comando grep: cat archivo | grep “hola” (devuelve todas las líneas del archivo 'archivo' que contienen la cadena 'hola') El comando tac (catenate al revés) realiza la misma tarea que el comando cat pero muestra los archivos en orden inverso, es decir comenzando por la última línea y llegando a la primera. Curso de Administración GNU/Linux Nivel I Clase 1: Tabajando con la línea de comandos Comandos para mostrar el contenido de archivos: head – muestra las 10 primeras líneas de un archivo tail – muestra las 10 últimas líneas de un archivo Sintaxis: head <opciones> <archivo...> tail <opciones> <archivo...> Opciones: -n: muestra las “n” líneas del archivo Ejemplos: $head -n 10 archivo1 $tail archivo2 27 Los siguientes dos comandos son muy utilizados a la hora de visualizar partes de un archivo. El comando head (cabecera) nos muestra por defecto las 10 primeras líneas de un archivo, mientras que el comando tail (cola) muestra las últimas 10. El comando tail se utiliza mucho, en especial cuando se está observando el estado de un servicio y los eventos que suceden al mismo (servidores web, ftp, mail) a través de sus archivos de log, de esta forma podemos ver únicamente las últimas líneas del archivo que contienen la información reciente. Una opción interesante es el paramétro -f el cual hace que a medida que se escriben el archivo, éstas se ven reflejadas en la pantalla. Curso de Administración GNU/Linux Nivel I Clase 1: Tabajando con la línea de comandos Comandos para mostrar el contenido de archivos: more – muestra el contenido de un archivo por pantalla less – muestra el contenido de un archivo en orden inverso Sintaxis: more <opciones> <archivo...> less <opciones> <archivo...> Ejemplos: $more /home/usuario/.bashrc $less /var/log/syslog 28 Estos comandos se utilizan mucho cuando deseamos recorrer un archivo de texto sin modificarlo (ya sea porque no queremos hacerlo o porque no tenemos permisos para realizar modificaciones en el mismo). more fue el primer comando que se utilizó para ésto, fue heredado ya de Unix y se utiliza actualmente. less es un comando mucho más potente, que reemplaza al anterior en todas sus funciones y además permite recorrer el documento en ambos sentidos y realizar búsquedas en el texto. Curso de Administración GNU/Linux Nivel I Clase 1: Tabajando con la línea de comandos Comandos para consultar la ayuda: info man apropos whereis whatis which 29 A continuación mostraremos brevemente cuales son los comandos utilizados para consultar la ayuda del sistema y para mostrar información sobre un determinado comando. Los 3 primeros comandos (info info, man y apropos) apropos consultan información del sistema sobre algún tipo de comando y muestran más o menos información según como se usen. Los 3 últimos en cambio (whatis, (whatis whereis y which)) muestran información más resumida sobre un comando, así como también su ubicación en disco. Curso de Administración GNU/Linux Nivel I Clase 1: Tabajando con la línea de comandos Comandos para consultar la ayuda: info – muestra información sobre un comando man – muestra el manual de un comando (man page) apropos – busca información sobre comandos entre su nombre y descripción Sintaxis: info <comando> man <comando> apropos <patrón a buscar> Ejemplos: $info ls $man ls $apropos list 30 En GNU/Linux normalmente cada comando tiene una página de ayuda denominada página del manual(man page), que contiene detalles técnicos sobre su utilización. Si bien son una muy buena manual fuente de información, no forman un tutorial del mismo y no brindan un formato demasiado amigable a la vista, esto sucede ya que los programadores no pierden demasiado tiempo documentando. Las páginas man no solamente hablan de comandos, también existen sobre archivos de configuración y sobre recursos del sistema. Las páginas man vienen Algunas herramientas GNU en vez de páginas man contienen páginas info. info En lugar de utilizar un formato lineal, las páginas info están organizadas en una estructura de árbol y con referencias cruzadas, brindando una navegación más amigable. El comando apropos busca información sobre una cadena de texto que se le pasa como parámetro en las descripciones y en los nombres de comandos. Curso de Administración GNU/Linux Nivel I Clase 1: Tabajando con la línea de comandos Comandos para consultar la ayuda: whereis – devuelve la ubicación de un comando y sus archivos de ayuda which – devuelve la ubicación de un comando whatis – muestra una breve descripción de un comando Sintaxis: whereis <comando> which <comando> whatis <patrón a buscar> Ejemplos: $whatis pwd $whereis pwd $which pwd 31 Los últimos comandos que veremos hoy sirven para mostrar información breve acerca de un comando. El comando which nos muestra información sobre la ruta de un comando (generalmente un /bin o /usr/bin como veremos más adelante). El comando whereis además nos muestra la ubicación de sus archivos de ayuda (generalmente se encuentran comprimidos en formato gz, en el directorio /usr/share/man). El comando whatis muestra información muy resumida acerca de un comando y de su función. Curso de Administración GNU/Linux Nivel I Clase 1: ¿Dudas? ¿Consultas? Información de contacto Vía Web: http://www.gugler.com.ar http://cursos.gugler.com.ar Vía Mail: [email protected] [email protected] [email protected] [email protected] 32 Versión 1.0 No duden en comunicaste con nosotros por cualquier duda, consulta o sugerencia que deseen realizar. A la brevedad estaremos subiendo los contenidos de la próxima clase. Administración GNU/Linux Nivel I Currícula 1.0 Copyright® Gugler 2009