Nivel I Curso de Administración GNU/Linux

Anuncio
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
Descargar