You are on page 1of 7

Tutorial de

Linux para
Principiantes
Temario
El interprete de comandos...........................................................................................................3
El interprete bash, historia y el estandar POSIX..........................................................................4
Bourne Again Shell: un vistazo....................................................................................................4
Algunos comandos básicos.........................................................................................................5
El interprete de comandos
Un intérprete de comandos, también conocido como “shell”, es un programa informático que nos
permite a los operadores traducir las órdenes que le introducimos al sistema, en un conjunto de
instrucciones directas al núcleo del sistema operativo, y al sistema operativo en general.
Un intérprete de comandos define una sintaxis en particular, que hace que las instrucciones
enviadas deban respetarla, tal como si fuese un lenguaje de programación. Incluso la mayoría de
los intérpretes de comandos poseen un lenguaje de scripting que nos permite programar rutinas
en archivos de procesamiento por lotes y de esta forma ejecutar con una sola instrucción todas las
que incorporemos al archivo.
El sistema operativo GNU/Linux basa toda su configuración en los intérpretes de comandos. En
otros sistemas operativos, por ejemplo, M$ Windows, la mayor parte de la configuración se lleva a
cabo mediante el uso de la interfaz gráfica de usuario, abriendo ventanas, dando clic's, cargando
datos en los campos de texto, etc.
Esa es una de las principales diferencias que tenemos respecto de GNU/Linux en cuanto a la
operación. En GNU/Linux la totalidad de las configuraciones puede llevarse a cabo mediante un
intérprete de comandos, introduciendo comandos que modifiquen o configuren ciertos aspectos
del sistema.
Un intérprete de comandos en GNU/Linux es una terminal de texto con un cursor esperando que
introduzcamos alguna orden, y presionemos la tecla enter. El trabajo con el interprete de
comandos es interactivo, introducimos una orden, el interprete nos devuelve una respuesta, y
luego nos permite introducir otra orden. Las respuestas pueden ser satisfactorias, cuando la orden
se ejecutó correctamente y pudo mostrar un resultado, o puede ser errónea, cuando la orden falló
por alguna razón, por ejemplo, por un error de sintaxis.
Cualquier software que tenga estas características puede ser llamado intérprete de comandos.
Tenemos intérpretes de comandos para interactuar con el sistema operativo, que son el motivo de
esta clase. Pero también tenemos intérpretes de comandos para interactuar con servidores ftp,
usando sintaxis y comandos de ftp; para interactuar con servidores de correo electrónico, con
casillas de correos de usuarios, con servidores web, con terminales remotas, etc.
Cuando decimos que instalamos un “front-end” para cierta aplicación, lo que hacemos es instalar
una interfaz “más amigable” para manejar, desde otro punto de vista, el mismo intérprete de
comandos. Ese front-end generalmente es una interfaz gráfica de escritorio, o una interfaz web,
pero en cualquier caso, las interfaces nos “facilitan” la tarea de interactuar con el intérprete en
cierto aspecto, aunque dependemos de la interfaz gráfica para correr los comandos, y lo más
probable es que no tengamos todos los comandos disponibles desde ese front-end para manejar
completamente el intérprete de comandos, o simplemente necesitemos opciones que los
comandos soportan, pero que no hay forma de accederlas desde la interfaz gráfica.
En GNU/Linux, como cualquier software de código abierto o software libre, poseemos varias
alternativas para la misma aplicación, y un intérprete de comandos no es la excepción. En el
archivo /etc/shells se encuentra la lista de todos los intérpretes de comandos soportados en
nuestro sistema, y podemos instalar o eliminar cualquiera.
Entre esos intérpretes se encuentra uno muy difundido, y el intérprete de comandos por defecto

-3-
en la mayor parte de las distribuciones actuales: el BASH.

El interprete bash, historia y el estándar POSIX


En 1978 el shell más utilizado era el bourne, desarrollado por Stephen Bourne, un investigador de
los laboratorios BELL. Bourne escribió su shell para facilitar el acceso e interacción con su sistema
operativo Unix versión 7 que poseía en los laboratorios.
Casi diez años después, Brian Fox escribió una versión un tanto original del shell bourne, y en
1990 Chet Ramey fue el desarrollador oficial de este intérprete de comandos. A esta nueva
versión del shell bourne le llamaron “bourne again shell”, o “bash” como lo conocemos hoy.
El bash, al ser un intérprete derivado de bourne, también es compatible con el estandar POSIX. El
entandar POSIX es una interfaz común y estandarizada de llamadas al sistema operativo. POSIX
es un nombre fácil de recordar propuesto por Richard Stallman a la IEEE en su definición. POSIX
es una sigla que significa “Portable Operating System Interface”, y la “X” viene de Unix.
Posix en realidad es una familia de estándares de llamadas al sistema operativo, o system call's, y
permite que la interacción entre el sistema operativo y las aplicaciones de usuario sea siempre la
misma, de modo que una aplicación desarrollada para el estándar POSIX pueda ser ejecutada en
cualquier sistema operativo que sea compatible con Posix, como es el caso de GNU/Linux en casi
cualquiera de sus distribuciones, y de la mayoría de los derivados de Unix. Incluso algunos
sistemas operativos privativos como Windows poseen soporte mediante el POSIX SUBSYSTEM a
las rutinas del kernel opcionalmente, o por medio de Cygwin, una interfaz que ofrece un desarrollo
compatible con POSIX en gran medida para sistemas Windows.
POSIX se divide y subdivide en varias partes. No es intención de la clase detallar demasiado
estas secciones pero para tener una idea bastante acabada, basta decir que el llamado POSIX.1
es una de las partes del estándar que especifica definiciones de desarrollo, como servicios del
núcleo, comunicación entre procesos (IPC por sus siglas en inglés), bibliotecas del lenguaje C del
estándar ANSI, extensiones de tiempo real, manejo de semáforos de bajo nivel, servicios MutEx
de acceso a memoria, planificación de procesos, señales y sincronización.
Por su parte, el estándar POSIX.2 define la shell y las utilidades, el intérprete de comandos, sus
programas y aplicaciones. Esta es la interfaz estándar en la que está basado nuestro intérprete de
ordenes bash.

Bourne Again Shell: un vistazo


El intérprete bash podemos verlo en cualquier terminal de texto, o pseudoterminal dentro del modo
gráfico, o hasta incluso remotamente por medio de protocolos de terminal remota como ssh.
De cualquier manera, lo primero que veremos en nuestro bash es un prompt. El prompt es el texto
inicial que aparece en nuestro intérprete de comandos, con cierta información, y que nos permite
introducir nuestras órdenes para interactuar.
Ese prompt en bash se compone de lo siguiente:

-4-
El formato es:
usuario@equipo: path$
Primero vemos el usuario actual que está trabajando, y el equipo en el que levantó el interprete de
comandos, separados por un símbolo de arroba.
Seguido, se ven dos puntos, y el path, o ruta del directorio actual en el que estamos parados
trabajando. En el caso de que en vez de una ruta o nombre de directorio veamos el símbolo “~”,
significa que el usuario que está trabajando se encuentra posicionado en su directorio home.
Por último veremos uno de dos símbolos: '$' o '#'. En el caso de $, indica que el usuario está
trabajando con privilegios de usuario común, mientras que si vemos un prompt que termina en #
implica que el usuario está trabajando con privilegios de root, o superusuario.
El formato del prompt cambia de un shell a otro. Este es el formato por defecto de la versión actual
del shell. Igualmente el contenido del prompt puede cambiarse sin ningún inconveniente mediante
la edición de variables de entorno, específicamente la variable PS1.
Por defecto en el prompt aparece como path únicamente el nombre del directorio actual, pero no
muestra, generalmente, toda la ruta, por una cuestión de ahorro de caracteres en pantalla, y
facilidad para trabajar con el intérprete de comandos.

Algunos comandos básicos


Si por alguna razón necesitáramos saber el contenido completo, más allá del nombre del
directorio, podemos utilizar el comando pwd (print working directory).

Si quisiéramos por ejemplo, listar el contenido del directorio actual, podríamos utilizar el comando
“ls”:

-5-
La sintaxis básica de un comando completo es:
nombre_comando [opciones] [argumentos]
Los corchetes indican que tanto las opciones como los argumentos son opcionales en la ejecución
del comando.
Las opciones pueden ser generalmente de dos tipos: de un carácter, o de una cadena de
caracteres, o palabra. Cuando se trata de opciones de un carácter, se usa un signo “-” para
presidirla, mientras que las opciones de cadena usan dos signos: “--”.
Por ejemplo, para listar el contenido del directorio actual en formato extendido, mostrando más
información de los elementos del sistema de archivos, podemos usar la opción -l del comando ls:

Y para listar el contenido del directorio raíz del sistema, podemos pasárselo al comando ls como
argumento:

Además, podemos combinar cualquier cantidad de opciones y de argumentos dependiendo de los


comandos ejecutados, puesto que cada comando tiene sus opciones definidas por el
desarrollador.
Por ejemplo, podríamos listar en formato extendido el contenido del directorio raiz de la siguiente
forma:

-6-
Cabe destacar que el orden de opciones y argumentos no tiene importancia en la mayor parte de
los casos, y el efecto del comando corriéndolo con sus opciones y argumentos en diferente orden
debería ser el mismo.
Más adelante en el curso veremos gran cantidad de comandos y opciones particulares para cada
uno, pero veremos también que la forma de llamar a los comandos y sus opciones y argumentos
es siempre la misma, y respeta la sintaxis de comandos de nuestro shell bash.

-7-

You might also like