Shell PDF

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 6

Universidad de Costa Rica | Escuela de Ingeniera Elctrica

IE-0117 Programacin Bajo Plataformas Abiertas

El shell de GNU/Linux

1. Aspectos generales
El shell es el programa que permite al usuario interactuar con el sistema en una terminal de texto (consola). Cada vez
que un usuario inicia sesin en una terminal, el shell es ejecutado y toma el control de la entrada y salida del sistema.
Existen varios shells. Algunos ejemplos son:
csh
zsh
ksh
dash
bash
El shell predeterminado en sistemas basados en Debian es bash (Bourne-Again Shell, basado en el Bourne Shell del
UNIX original).
La herramienta principal de un shell es la lnea de comandos, que le permite al usuario ejecutar comandos de forma
interactiva. Adems la mayora de los shells tienen otras herramientas que los convierten en lenguajes de programacin
completos con variables, condicionales, lazos de control, funciones, etc. Es posible escribir pequeos programas o scripts
para automatizar la ejecucin de secuencias de comandos.

2. La lnea de comandos
Nota: Las herramientas y caractersticas descritas en este documento aplican nicamente para bash. Si bien es cierto
algunas caractersticas son comunes a todos los shells, es necesario investigar cuales son las herramientas equivalentes
si se utiliza otro shell.
Cuando la lnea de comandos est disponible para ejecutar nuevos programas, el shell despliega el indicador de
comandos (command prompt): $ para el usuario normal y # para el superusuario. Adems, el indicador de comandos
puede congurarse para mostrar informacin til para el usuario. La informacin mostrada por defecto en sistemas
Debian/Ubuntu es:

xxxx@yyyy:zzzz$

xxxx - Nombre de usuario


yyyy - Nombre del sistema
zzzz - Directorio actual
Bash posee herramientas que facilitan al usuario el trabajo en la lnea de comandos. Algunas son:
Autocompletado de programas, nombres de archivo y argumentos de programas (tecla TAB)
Historial (teclas y , comando history)
Bsqueda en el historial (Ctrl-r)

1
IE-0117 Programacin Bajo Plataformas Abiertas El shell de GNU/Linux

3. Nombres de arivo y directorio


En el shell, los nombres de archivo y directorio pueden ingresarse usando rutas absolutas (respecto a la raz) o relativas
(respecto al directorio actual).
El carcter (tilde o virgulilla) corresponde al directorio personal del usuario. Si el usuario es juan, la ruta /
Documents/doc1.odt corresponder a /home/juan/Documents/doc1.odt.
Adems, es posible usar comodines para referirse a nombres de archivo que contengan un determinado patrn:

* - Cero o ms caracteres cualesquiera.

? - Un nico carcter cualquiera.

Ejemplos:
/home/pedro/Documents/*.pdf corresponde a todos los archivos que terminan con .pdf del directorio /home/pedro/
Documents.
/home/maria/??.txt corresponde a archivos en el directorio /home/maria cuyo nombre tiene dos caracteres cuales-
quiera seguidos por .txt (01.txt, aa.txt, etc.)

4. Variables de entorno
Como se mencion anteriormente, el shell tiene caractersticas equivalentes a los lenguajes de programacin. Las
variables de entorno permiten almacenar valores de igual manera que las variables de un lenguaje de programacin.

$ A=Linux
$ echo $A
Linux
$ DEST=/home/adiaz/Documents
$ cp doc1.pdf $DEST

Al usar las variables de entorno deben tenerse algunas consideraciones especiales:

Cuando se desea almacenar un valor en una variable, debe usarse la sintaxis VARIABLE=valor, sin espacios alre-
dedor del signo =.
Aunque no es obligatorio, se acostumbra usar maysculas para los nombres de las variables de entorno. Cuando
se desea obtener el valor almacenado en una variable de entorno se debe anteponer el carcter $ al nombre de
la variable.

Las variables de entorno tienen un alcance limitado al shell que se est ejecutando. Si se ejecuta un nuevo shell a
partir del shell actual la variable no estar denida, a menos que se use el comando export:

$ export A=Linux

Las variables de entorno pueden borrarse usando el comando unset:

$ unset A

2
IE-0117 Programacin Bajo Plataformas Abiertas El shell de GNU/Linux

5. El PATH
PATH es una variable de entorno que almacena una lista (separada por :) de los directorios que contienen ejecutables
en el sistema:

PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/local/sbin

Los programas que se encuentran en un directorio del PATH pueden ejecutarse escribiendo slo el nombre de archivo
en la lnea de comandos. Si un ejecutable no est en el PATH, debe escribirse la ruta completa al archivo.

6. Arivos de conguracin del shell


/etc/profile - Archivo de conguracin para todos los shells compatibles con Bourne Shell (aplica para todos los
usuarios).
/etc/bash.bashrc - Archivo de conguracin para bash (aplica para todos los usuarios).

/.profile, /.bash profile, /.bashrc - Archivos de conguracin para el usuario. Se recomienda agregar todas
las conguraciones en /.bashrc.

7. Entrada y salida estndar


Los caracteres ingresados por el usuario en una terminal se conocen como la entrada estndar. De forma anloga,
la salida de los programas que se imprime en una terminal es conocida como la salida estndar. El shell es el programa
que se encarga de manejar la entrada y la salida estndar.
El sistema operativo representa la entrada y la salida estndar usando tres ujos (streams) de texto:

stdin - Caracteres ingresados por el usuario.


stdout - Salida normal de los programas.

stderr - Mensajes de error emitidos por los programas

7.1. Redireccin de entrada y salida


El shell permite manipular por separado estos tres archivos y redirigirlos hacia otro destino:

$ ls -l /etc/ > /tmp/lista

La salida (stdout) del comando ls es redirigida al archivo /tmp/lista. Si el archivo ya exista, sus contenidos son
borrados antes de escribir en l.

$ ls -l /etc/ >> /tmp/lista

La salida (stdout) del comando ls es redirigida al archivo /tmp/lista. Si el archivo ya exista, el nuevo contenido es
agregado al nal.

3
IE-0117 Programacin Bajo Plataformas Abiertas El shell de GNU/Linux

$ passwd < /contrasea.txt

La entrada (stdin) para el comando passwd es tomada del archivo /contrasea.txt.

$ mkdir /srv/www 2> /tmp/error.txt

El error estndar (stderr) del comando mkdir es redirigido a /tmp/error.txt.

$ tar xvzf archivo.tar.gz &> /tmp/salida-tar

stdout y stderr del programa tar son redirigidos al archivo /tmp/salida-tar.

7.2. Tuberas (pipes)


Las tuberas permiten conectar la salida y el error estndar de un comando con la entrada estndar de otro:

$ comando1 | comando2

En este caso, la salida y el error estndar de comando1 son enviados a la entrada estndar de comando2.
Ejemplos:

$ apt-cache search text editor | less


$ ls -l /etc/ | grep fstab
$ gzip -dc archivo.gz | wc

7.3. El comando tee


tee es un comando que escribe en la salida estndar y en un archivo todo lo que es introducido en su entrada estndar.
Usando tee es posible almacenar la salida estndar de un programa en un archivo y verla en la terminal al mismo tiempo:

$ gcc -o programa programa.c | tee salida_gcc

8. Scripts bsicos en bash


Los scripts son archivos de texto con una serie de comandos, que sern ejecutados secuencialmente cuando se ejecute
el script. De esta forma es posible ejecutar en un solo paso mltiples comandos y almacenar estos comandos para su
posterior uso. Cuando se utilizan otras caractersticas de bash como las variables de entorno y las estructuras de control
(que no sern estudiadas en este curso), es posible crear programas complejos. Un script simple de bash tiene la siguiente
forma:

#!/bin/bash

# Esto es un comentario

4
IE-0117 Programacin Bajo Plataformas Abiertas El shell de GNU/Linux

comando-1
comando-2
...
comando-n

Para ejecutar el script deben cambiarse los permisos del archivo para que este sea ejecutable. Una vez hecho esto
puede llamarse por su nombre (o ruta completa si el directorio no est en el PATH):

$ chmod +x script
$ ./script

Otra opcin es pasar el script como argumento a un nuevo shell usando el comando bash. El nuevo shell ejecutar
el script y nalizar:

$ bash script

9. Programacin de tareas con cron


cron es un recurso disponible en la mayora de los sistemas UNIX que permite programar tareas (programas) para que
se ejecuten en un momento determinado. Es muy til para ejecutar utilidades de administracin del sistema de manera
peridica, sin necesidad de supervisin.
Cada usuario puede crear su propia conguracin de cron para ejecutar sus propias tareas, limitado obviamente a los
recursos sobre los cuales tiene permisos. Tambin existe un cron para el sistema, en el cual es posible programar tareas
que requieran privilegios de administracin.
Para agregar tareas al sistema cron, debe editarse un archivo de conguracin (crontab).
En el caso del cron del usuario, el archivo de conguracin se edita usando el comando crontab-e. En el caso del
cron del sistema, debe editarse el archivo /etc/crontab con cualquier editor de texto.
La sintaxis del crontab es la siguiente:
Cron del usuario: m h dm mes ds comando Cron del sistema: m d dm mes ds usuario comando
Donde:

m - minuto (0 - 59)
h - hora (0 - 23)

dm - da del mes (1 - 31)

mes - mes (1 - 12)


ds - da de la semana (0 - 7)

5
IE-0117 Programacin Bajo Plataformas Abiertas El shell de GNU/Linux

Algunos ejemplos (cron del usuario):


Ejecuta comando1 cada hora:

0 * * * * comando1

Ejecuta comando2 cada da a las 11:43 p.m.:

43 23 * * * comando2

Ejecuta comando3 todos los martes a las 12:00 m.d.:

0 12 * * 2 comando3

Ejecuta comando4 de lunes a viernes a las 12:00 a.m.:

0 0 * * 1-5 comando4

También podría gustarte

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy