Está en la página 1de 29

Curso de de Bash, Javier Hernndez Sirvent

CURSO DE BASH
Este texto pretende ser una introduccin al manejo de la consola en sistemas Linux/Unix. Se ha revisado con la intencin que su nivel sea el razonable para una asignatura de Sistemas Informticos o similar, en lo que al temario sobre Linux se refiere. Aun as, este texto no pretende sustituir a un profesor, sino servir de apoyo para que los alumnos no pierdan tiempo en tomar apuntes. Pero es trabajo del profesor aclarar las dudas que surjan. Este texto ha sido escrito por Javier Hernndez Sirvent. Si quiere conseguir la ltima versin, estar en la web del curso: www.aprendeaprogramar.com Este texto es de libre distribucin (gratis). Se puede distribuir a otras personas libremente, siempre y cuando no se modifique. Este texto se distribuye "tal cual", sin garanta de ningn tipo, implcita ni explcita. Aun as, mi intencin es que resulte til, as que le rogara que me comunique cualquier error que encuentre. Para cualquier sugerencia, no dude en contactar conmigo a travs de la web del curso o a travs de mi correo javihdz@gmail.com.

versin 0.1 pgina-1

Curso de de Bash, Javier Hernndez Sirvent

Contenido

1. Introduccin ...................................................................................................................... 4 2. Conocimientos previos ................................................................................................... .. 5


2.1. Estructura de datos en Linux ............................................................................... 5 2.2. Distribuciones de Linux ....................................................................................... 6 2.3. Breve lista de equivalencias con programas de Windows .................................... 7 2.4. Cosas importantes para saber ............................................................................... 8

3. Los primeros pasos por consola .......................................................................................... 9


3.1. Toma de contacto (1) ............................................................................................ 9 3.2. Toma de contacto (2) .......................................................................................... 11 3.3. Toma de contacto (3) .......................................................................................... 12 3.4. Visualizar y crear archivos desde consola .. ........................................................ 14 .

4. Uso avanzado de la consola .............................................................................................. 18


4.1. Los Permisos ...................................................................................................... 18 4.2. Compresin y descompresin de archivos ......................................................... 20 4.3. Los Procesos ........................................................................................................ 21

5. ltimos comandos ............................................................................................................. 25

versin 0.1 pgina-2

Curso de de Bash, Javier Hernndez Sirvent

(Se anotarn modificaciones y ampliacin del contenido)

versin 0.1 pgina-3

Curso de de Bash, Javier Hernndez Sirvent

1. Introduccin
Bienvenid@ al cursillo de Bash para Linux. Espero que con este cursillo aprendas a moverte por dicho sistema operativo con soltura. Adelante, aprende y disfruta.

1.1 Requisitos
Para este cursillo no hace falta tener ninguna ingeniera informtica, ni conocimientos avanzados. Lo nico que se exige para este cursillo es querer aprender ms y no estancarse en el Messenger y el Word. Espero que con dicho curso todos aprendamos, unos para repasar y otros para aprender.

1.2 Sobre el cursillo


Se empieza con un nivel bsico para que cualquier principiante no se pierda. Tiene el soporte del foro para consultar cualquier duda cualquier fallo que sea detectado por favor notificarlo, ya sea en el foro de consulta o envindome un e-mail a javihdz@gmail.com El curso es totalmente gratuito y se puede distribuir libremente siempre y cuando no se modifique el contenido. Se recomienda que se prueben los comandos conforme se aprenden.

versin 0.1 pgina-4

Curso de de Bash, Javier Hernndez Sirvent

2. Conocimientos Previos
2.1 Estructura de datos en Linux
Linux a diferencia de Windows estructura los directorios de distinta forma. Mientras que Windows usa como smbolo del sistema la C (C:/), todos los Linux usan la /. Tambin por ejemplo Windows guarda los datos del sistema en una carpeta (llamada igual que el sistema operativo) mientras que cualquier Linux las guarda en diversas carpetas, las cuales veremos para familiarizarnos con ellas. /bin Contiene ficheros de comandos ejecutables por todos los usuarios. /ibinContiene ficheros de comandos ejecutables usados por el administrador . /sbinContiene ejecutables utilizados en la secuencia de arranque y en la recuperacin manual ante fallos del sistema. /usr o /home Contiene utilidades y programas generales de cada usuario. /dev Contiene archivos especiales de bloques y caracteres asociados a dispositivos hardware. /lib Contiene libreras y compiladores del sistema. /etc Directorio con ficheros de configuracin y utilidades para la administracin. /var Contiene ficheros para el administrador. /mnt (/media) Directorio para montar dispositivos de almacenamiento (disquetes, lector de CD/DVD, llave USB). /stand Contiene los ficheros del sistema de arranque y el ncleo de Unix/Linux. /opt Sirve de punto de montaje desde el que se instalan los paquetes de aplicacin adicionales. /bck Se guardan las copias de seguridad del sistema. /boot Contiene archivos OBJ (objeto) configurables para el ncleo del sistema. /config Para configurar el arranque del sistema. /dgn Para almacenar los programas de diagnstico. /export Para exportar sistemas de archivos. /install Donde el administrador instala las utilidades de administracin. /save para guardar copias de ficheros de administracin con el fin de realizar copias a disquetes. /tmp Para almacenar archivos temporales. /home Utilizacin de los directorios propios de cada usuario. Contiene el directorio de presentacin y el rbol de subdirectorios de cada usuario.

En todas las distribuciones no se encuentran todas las carpetas mencionadas. Las carpetas que usaremos ms frecuentemente son: /home /dev /etc /mnt (/media)

versin 0.1 pgina-5

Curso de de Bash, Javier Hernndez Sirvent

2.2 Distribuciones Linux


En el mundo de linux podemos encontrar una gran variedad de distribuciones, cada una se caracteriza por distintas opciones. Las distribuciones se clasifican en Live CD/DVD, CD/DVD instalacin y mini-distribuciones.

Live CD/DVD

Knoppix La distribucin Live CD ms famosa y utilizada de todas. Guadalinex Desarrollado por la comunidadautnoma de Andalucia. LinuXP Live CD que imita a Windows XP CDLinux Especialmente pensadapara la administracin y rescate de sistemas. Musix Para los msicos. Adems hay Live CD de casi todas las distribuciones instalables.

CD/DVD Instalacin

Gentoo Para usuarios con conocimientos medios-expertos. Kubuntu Excelente para los que quieren empezar, con escritorio KDE por defecto. Suse Muy similar a Windows. Ubuntu Es igual que Kubuntu pero con escritorio GNOME por defecto. Slackware Distribucin para usuarios muy expertos. Debian Hace gala de ser una distribucin muy estable, y tiene sus motivos. Red Hat Perfecta para servidores y mquinas que trabajen conredes. Fedora La versin gratuita de Red Hat. Mandriva (Mandrake) Alternativa muy recomendable.

versin 0.1 pgina-6

Curso de de Bash, Javier Hernndez Sirvent

Mini-distribuciones

Antomic Para aquellos que se inician en el mundillo linux Brutalware Para la administracin de redes con TCP/IP Trinux Orientada a la administracin y diagnstico de redes Tombsrtbt Sistema de rescate para emergencias en un solo disquete.

Las caractersticas de los Live CD/DVD son que se pueden ejecutar desde el propio lector, sin tener que instalar nada, como contrapartida no se pueden guardar los cambios realizados. Las mini-distribuciones se caracterizan por ser sistemas destinados a realizar escasas tareas y generalmente carecen de entorno grfico para que puedan grabarse en disquetes.

2.3 Breve lista de equivalencias con programas de windows


Para mostrar al tpico usuario de Windows que en cualquier distribucin de Linux se puede encontrar muchos programas que sustituyen a los caros programas propietarios. MSN Messenger Kopete, Gaim, amsn Office OpenOffice Windows Media Player Amarok, Xine.... Nero KIIIB (K3B) Internet Explorer Mozilla Firefox, Opera Outlook Mozilla Thunderbird Emule Amule BitTorrent BitTorrent, Ktorrent La lista podra extenderse infinitamente, aqu tan solo hemos puesto una pequea lista de los programas ms usados por la gente. Si buscis algn programa su equivalente en Linux visitad estas pginas Web. http://aldealinux.com/articulos/tabla.shtml http://alts.homelinux.net/ http://www.illasaron.com/html/index.php

versin 0.1 pgina-7

Curso de de Bash, Javier Hernndez Sirvent

2.4 Cosas importantes para saber


Hay que conocer algunas particularidades de Linux antes de adentrarnos. Si queremos acceder a una carpeta oculta, tendremos que escribir el nombre de la carpeta precedido de un punto (.). Ejemplo: /home/usuario/.aMule A diferencia de Windows, Linux distingue entre maysculas y minsculas. Por lo tanto podemos tener creadas dos carpetas que se llamen exactamente iguales pero que las diferencien las maysculas. Ejemplo: /home/usuario/fotos /home/usuario/Fotos /home/usuario/fotoS ......... Para facilitarnos la escritura en consola, podemos ayudarnos de una tecla que nos va completando la ruta. Dicha tecla es el Tabulador (la tecla que esta a la izquierda de la Q). Ejemplo: Si queremos completar la siguiente ruta: /home/usuario/juegos de ordenador escribiremos.... $cd /home/usuario/juego (TABULADOR) y la ruta se completar $cd /home/usuario/juegos de ordenador Pero si hay dos carpetas que coinciden con las palabras iniciales no lo completar, por lo tanto pulsaremos 2 veces al tabulador. Ejemplo: queremos ir a la ruta anterior pero da la casualidad de que tenemos otra carpeta llamada juegos de Pepe (ya que no nos acordamos como se llama la carpeta o queremos saber cuantas coincidencias hay o saber que carpetas y archivos hay dentro de la carpeta por la que estamos escribiendo) pulsamos 2 veces el TABULADOR y lo vemos. $cd /home/usuario/juegos(TABULADORx2) (nos aparecer....) juegos de ordenador juegos de Pepe Linux para evitar que las carpetas del sistema se puedan borrar con facilidad ha optado por la creacin de un superusuario (en ingls root). Adems siendo superusuario se puede controlar las acciones (adems de crear/borrar usuarios) de los usuarios registrados en el sistema. As que para poder diferenciar entre usuario estndar y superusuario se usan dos caracteres, el dlar ($) y la almohadilla (#) para usuario y superusuario respectivamente (conocido como prompt), si se quiere acceder a l a travs de la consola tan solo tendremos que escribir $su -root (escribiendo su el propio sistema tomar por defecto al superusuario) e introducir la clave que indicamos durante la instalacin.

versin 0.1 pgina-8

Curso de de Bash, Javier Hernndez Sirvent

3. Los primeros pasos por consola


Aprenderemos a movernos por la consola, ir cambiando de directorios, visualizar el interior de carpetas... Algo sencillito para empezar.

3.1. Toma de contacto(1)


Ayuda de comandos
Comando: man Etimologia: man (manual). Sintaxis: man [-fk] <comando> Donde man nos proporciona una ayuda sobre el comando que especificamos como parmetro. Lo malo de esta ayuda es que viene en ingles. Pero en ella se pueden ver todos los parmetros que permite cualquier comando y su explicacin adems de la definicin del comando y sus ya mencionados argumentos. Parmetros: -f esta opcin hace que man muestre la definicin del comando en una sola lnea. -k la opcion -k de la orden man busca en todas las descripciones, incluidos los nombres de las ordenes, las que incluyen las palabras especificadas. Ejemplo: man -k connect Buscara la palabra connect. Caracteres especiales El "*" y "?" funcionan de la misma forma que en el sistema operativo MSDOS. Carcter * Ejemplo: ls file* Esto buscara todos los ficheros que empezaran por file el resto de caracteres que le siguen es sustituido por el asterisco y se muestran en pantalla. Carcter ? Ejemplo: ls file?* Esto localizara aquellos ficheros que empiecen por file y a continuacin un carcter que ser sustituido por el ? luego puede o no contener mas caracteres. Resumiendo: el carcter * absorbe cualquier carcter o caracteres, y el carcter versin 0.1 pgina-9

Curso de de Bash, Javier Hernndez Sirvent

? absorbe un solo carcter. Carcter ~ (altgr+126) Este carcter devolver la ruta de donde nos situamos actualmente, ejemplo: ls ~/dir1/dir2/ El comando "PWD" devuelve tambin la ruta de donde nos situamos actualmente.

Comandos de informacin
Informacin de usuarios conectados Comando: who Etimologa: who+is (Quien?) [es] Sintaxis: who [-sHqT] Este comando nos muestra los usuarios coenctados e informacin sobre tales. Si ponemos: who me Nos har un who a nosotros mismos, dndonos informacin sobre nosotros.

Informacin del usuario


Comando: finger Sintaxis: finger usuario Este comando mostara informacin del usuario: directorio home, ultimo mensaje ledo, login, shell, etc. Otros comandos para obtener informacion son: uname tty (sobre el terminal).

versin 0.1 pgina-10

Curso de de Bash, Javier Hernndez Sirvent

3.2. Toma de contacto(2)


Comandos para operaciones con directorios
Movindose por el sistema de ficheros (directorios y subdirectorios) Comando: cd Sintaxis: cd Donde directorio es el directorio al que queremos ir. Etimologa: change directory, cambio de directorio. Parmetros: cd .. Nos dirigira al directorio padre del directorio en el que estamos. NOTA: es distinto al MSDOS, en este caso los ".." estn separados del cd. cd . Nos dejara en el mismo lugar puesto que dirige al directorio en el que estamos. cd Si no pasamos parmetro o argumento alguno al comando cd, este nos llevara a nuestro directorio de origen. En unx el directorio de origen es llamado HOME podemos devolver su ruta con la variable de entorno $HOME o con el smbolo "~" (alt +126). NOTA: de monos cuenta que ".." hace referencia al directorio padre, mientras que "." Hace referencia al directorio actual. Visualizando el contenido de los directorios Comando: ls Sintaxis: ls [-FltrCai] [dir] Donde los parmetros pasados al ls, filtraran la informacin a la forma deseada y predefinida. Parmetros: -F Indica que muestre los ficheros y subdirectorios que hay dentro del directorio con signos identificativos a cada uno de ellos. My-dir/ My-file My-file-exe* Si la entrada lleva el signo "/" se trata de un subdirectorio que cuelga del directorio en el que estamos. Si no se muestra ningn signo se trata de un fichero. Si se muestra un "*" (asterisco), se estar tratando de un fichero ejecutable. -l Con este parmetro, el comando ls nos muestra el formato largo de visualizacin de entradas de ficheros y directorios. En el que se dan en primer lugar los permisos asignados a los ficheros o directorios (si esos permisos empiezan por un "-" se trata de un fichero, si empieza por una "d" se estar tratando de un directorio). A continuacin en la segunda columna se muestran el numero de enlaces o links a ese fichero o directorio. La tercera y cuarta columna son el nombre del propietario y su grupo respectivamente.El resto son el tamao, la fecha de ultima modificacin, la hora, etc.

versin 0.1 pgina-11

Curso de de Bash, Javier Hernndez Sirvent

-t Con este parmetro filtramos las entradas de los ficheros y directorios para mostrarlos ordenados seg su fecha de creacin. n -r Muestra las entradas de ficheros y directorios en orden inverso (por defecto se muestran en orden alfabtico). -C Presenta los nombres de los ficheros en columnas. -a Muestra los ficheros o directorios ocultos (empiezan por un punto). -i Con este argumento s vera el numero de inodo perteneciente a cada fichero.

3.3. Toma de contacto(3)


Creando directorios Comando: mkdir Sintaxis: mkdir [-pm] <NameDir> Si introducimos (mkdir dir1 dir2 dir3), crearemos 3 directorios en la ruta donde nos encontramos. Etimologa: Make directory (crear directorio). Parmetros: -p crea los directorios y subdirectorios indicados en la ruta y que no existan ya. -m Eliminando directorios Comando: rmdir Etimologa: remove directory (eliminar directorio). Sintaxis: rmdir [-p] Donde [parmetros] ser para borrar con ciertas opciones. Y directorio ser el directorio o ruta de directorios/subdirectorios a eliminar. NOTA: Para que el comando rmdir sea efectivo y elimine el o los directorios. Deben de cumplirse las siguientes condiciones. 1. El directorio tiene que estar vaci. 2. Su userid debe tener permiso, asignado al directorio padre, para escribir y ejecutar. 3. El directorio no puede ser su directorio de trabajo.

versin 0.1 pgina-12

Curso de de Bash, Javier Hernndez Sirvent

Comandos para operaciones con ficheros u archivos Copiando ficheros Comando: cp Etimologa: copy (copiar) Sintaxis: cp [-lR] <entrada> <salida> Donde al comando cp le pasamos como argumentos indespensables, la entrada que serian los ficheros o el fichero que queremos copiar, y la salida que seria el lugar (directorio o subdirectorio) en el cual queremos dejar la copia. Parmetros: -l Para crear enlaces (viene de link). -R Copia recursivamente todos los ficheros que cuelgan de la ruta especificada (viene de recursivamente). Ejemplo: cp file1 . En este ejemplo se copia el fichero (file1) al directorio actual que esdevuelto al pasar como parmetro el signo ".", esto indica que se copie al directorio en el que nos encontramos. Moviendo ficheros Comando: mv Etimologa: movie (mover). Sintaxis: mv <entrada> <salida> Donde entrada ser el fichero o los ficheros que queremos mover. Y la salida ser el directorio al que van dirigidos. NOTA: Tanto mv como cp sobrescriben los ficheros sin pedir confirmacin. Eliminando ficheros Comando: rm Etimologa: Remove (eliminar). Sintaxis: rm [-ir] <file/s> Donde al comando rm le podemos pasar opcionalmente unos parametros y donde ficheros sern aquellos archivos que queremos eliminar. Parmetros: -i Este parmetro hace que se pida confirmacin antes de eliminar un fichero. -r Con este argumento haremos que el comando rm elimine tambin directorios (tengan dentro ficheros o no). Ejemplo: rm -r * Esto elimara todos los directorios, subdirectorios y ficheros de la ruta en el que nos encontramos. versin 0.1 pgina-13

Curso de de Bash, Javier Hernndez Sirvent

3.4. Visualizar y crear archivos desde consola


Comandos para visualizar contenidos Sintaxis: cat [opcin]archivo Con el comando cat se ve el contenido del archivo elegido sin interrupciones. Ejemplo: $cat quijote.txt En un lugar de la Mancha de cuyo nombre no quiero acordarme, viva un caballero... Opciones: -n Numera el texto en el borde izquierdo. -------------------------------------------------------Sintaxis: less archivo Con este comando se puede examinar el contenido del archivo elegido. Porejemplo puede subir y bajar media hoja de pantalla con las teclas Repg y Avpg con la tecla espaciadora hasta una pgina entera hacia adelante. Tambin puede desplazarse al comienzo y al final del texto con las teclasInicio y Fin. Y con la tecla Q puede cerrar este modo de visualizacin. -------------------------------------------------------Sintaxis: grep [opcin] archivo grep est pensado para buscar un determinado trmino de bsqueda en el archivo(s) elegido. Si la bsqueda se ha realizado con xito, el programa mostrar la lnea en la que se ha encontrado el trmino de bsqueda, as como el nombre del archivo. Ejemplo: $grep documentoimportante.doc Opciones: -i Ignora las diferencias entre maysculas y minsculas -l Da slo el nombre del archivo correspondiente y no el nmero de lnea -n Numera, adems, las lneas donde se encontr el texto buscado -l Da una lista de los archivos que no contengan el trmino de bsqueda -------------------------------------------------------Sintaxis: diff[opcin] archivo1 archivo2 diff fue creado para comparar el contenido de dos archivos cualesquiera y mostrar en una lista las lneas en las que se hayan detectado diferencias. Los programadores utilizan con frecuencia este comando para enviar los cambios realizados en sus programas sin necesidad de enviar todo el texto fuente. Ejemplo: diff -q programa.c programa2.c Opciones: versin 0.1 pgina-14

Curso de de Bash, Javier Hernndez Sirvent

-q Indica tan slo si existen diferencias entre el contenido de los dos archivos seleccionados. -------------------------------------------------------Editor vi El manejo de vi es un poco peculiar, sin embargo tiene preferencia en este manual, porque existe en cualquier sistema operativo parecido a UNIX y forma parte de la instalacin predeterminada de Linux. Adems, el control de este editor es totalmente uniforme y libre de equivocaciones. Finalmente: Si no funciona nada, vi an funciona. La breve explicacin que presentamos a continuacin servir para utilizar las funciones bsicas de vi para editar diferentes archivos de configuracin y archivos personales. vi conoce 3 modos de operar: - Modo de comandos command mode Todas las pulsaciones de teclas se interpretan como parte de un comando. - Modo de insercin insert mode Las pulsaciones de teclas se interpretan como texto que se introduce. - Modo de comandos complejos last line mode Modo para comandos complejos que se editan en la ltima lnea. Las rdenes ms importantes del modo de comandos son: Comandos bsicos del editor vi i a cambia al modo de insercin (los caracteres se introducen en la posicin actual del cursor). cambia al modo de insercin (los caracteres se introducen detrs de la posicin actual del cursor).

A cambia al modo de insercin (los caracteres se aaden al final de la lnea). R r s C o cambia al modo de insercin (sobrescribe el texto anterior). cambia al modo de insercin sobrescribiendo un solo carcter. cambia al modo de insercin (el carcter en la posicin del cursor se sobrescribe con el carcter nuevo). cambia al modo de insercin (el resto de la lnea se reemplaza por el texto nuevo). cambia al modo de insercin (detrs de la lnea actual se aade una lnea nueva).

O cambia al modo de insercin (por delante de la lnea actual se aade una lnea nueva). x borra el carcter actual.

versin 0.1 pgina-15

Curso de de Bash, Javier Hernndez Sirvent

dd borra la lnea actual. dw borra hasta el final de la palabra actual. cw cambia al modo de insercin (el resto de la palabra actual se sobrescribe). u J . : deshace el ltimo comando. aade la siguiente lnea a la actual. repite el ltimo comando. cambia al modo de comandos complejos.

Es posible anteponer una cifra a cualquier comando. Esta cifra indica el nmero de veces que se debe repetir el comando que sigue: 3dw borra tres palabras seguidas, 10x borra diez caracteres a partir de la posicin del cursor y 20dd borra 20 lneas. Los comandos ms importantes del modo de comandos complejos: Tabla 3.4.2 Comandos complejos del editor vi :q! sale de vi sin grabar los cambios.

:w nombre_archivo graba bajo el nombre nombre_archivo. :x :e Nombrearchivo :u graba el archivo modificado y sale del editor. edita (carga) nombre_archivo. deshace el ltimo comando de edicin.

Para cambiar al modo de comandos dentro del modo de insercin se debe pulsar la tecla ESC.

Uso avanzado de los archivos Sintaxis: ln [opcin] archivo_origen archivo_destino Crea en archivo_destino una referencia cruzada dentro del sistema de archivos, (Links) del archivo_origen con otro nombre. Normalmente este enlace apunta directamente a la posicin de archivo_origen dentro de un sistema de archivos. Si por el contrario se ejecuta el comando ln con la opcin -s, se crear un denominado enlace simblico que apuntar exclusivamente a la rama de archivo_origen y que por esa razn podr ser usado fuera de los lmites del sistema de archivos. Opciones: -s Crea un enlace simblico.

versin 0.1 pgina-16

Curso de de Bash, Javier Hernndez Sirvent

Imprimiendo ficheros. Comando: lp Etimologa: lp viene del puerto pararelo de la impresora (lpt1 o lptr). Sintaxis: lp [-d] Donde a lp le pasamos los ficheros que queremos que se impriman. Ejemplo: lp fichero1 Esto imprimir el fichero1. Parmetros: -d Sirve para especificar mas impresoras Ejemplo: lp -d impresora1 file1 file2 Se lanzan a la impresora1 dos ficheros para su impresin: file1 y file2. Ordenes para el comando Cancel: cancela o elimina los trabajos de la cola de impresin. Lpstat: muestra el estado de los trabajos pendientes de impresin. Localizando ficheros Comando: find Etimologias: find (buscar). Sintaxis: find [-name,-u,-mtime] core -print Donde directorio es la ruta donde se buscaran los patrones especificados. La sintaxis del find es algo enrevesada, depende de los parametros que le pasemos. Parmetros: -name Indicando el nonbre nos localizara aquellos ficheros cuyo nombre sea el pasado y los buscara en el del directorio especificado. Ejemplo: find . -name core Aqu buscamos aquellos ficheros con el nombre core dentro del directorio donde nos encontramos "." Debido al punto.

versin 0.1 pgina-17

Curso de de Bash, Javier Hernndez Sirvent

4. Uso avanzado de la consola


4.1. Los permisos
En Linux cada fichero o directorio tienen unos permisos asignados por el usuario que los ha creado y dependiendo de esos permisos el resto de usuarios podrn o no realizar operaciones con estos ficheros o directorios (leer, ejecutar, eliminar, etc). Para visualizar los permisos asignados a los distintos ficheros y directorios, basta con ejecutar un ls en formato largo, sea: ls -l Veamos unos ejemplos prcticos. -rwxrwxrwx prueba1 drwxrwxrwx prueba2 El fichero llamado prueba1 se sabe que es un fichero porque el primer carcter es "-". En el segundo caso se trata de un directorio puesto que el primer carcter es "d". El resto de caracteres son los referidos propiamente dichos con los permisos. Haber, existen permisos para 3 clases de usuarios: Los permisos para el propietario. Los permisos para el grupo Los permisos para todos los usuarios (el resto de usuarios que no son ni el propietario ni los del grupo). Haber los permisos se dividen en 4 campos: -,---,---,--El primer campo es el que indica si es fichero o se trata de un directorio como ya antes expliqu. El segundo campo indica los permisos para propietario El tercer campo indica los permisos para los usuarios del grupo El cuarto campo indicara los permisos para el resto de usuarios. Hay 3 tipos de permisos: De lectura (read): r De escritura (write): w De ejecucin (execute): x Supongamos que tenemos un fichero con los siguientes permisos: -rwxrw-r-- prueba Haber, en ese fichero llamado prueba el propietario tiene asignados todos los permisos (lectura, escritura y ejecucin), el grupo tiene permisos paraleer y escribir el fichero, y por ultimo el resto de usuarios pueden solo leer el fichero.

versin 0.1 pgina-18

Curso de de Bash, Javier Hernndez Sirvent

Cambiando los permisos Comando: chmod Etimologa: change mode (cambio de modos). Sintaxis: chmod {a,u,g,o} {+,-} {r,w,x} Parmetros para referirnos a quien va dirigido el permiso: a Referimos a todos los usuarios. u Referimos al propietario.) g Referimos al grupo. o Referimos a otros. Parmetros para decidir si el permiso se aade o se quita: + Aade permiso - Quita permiso Parmetros que decide que permiso se aade o quita: r De lectura w De escritura x De ejecucin Ejemplos: chmod a+r stuff Da a todos los usuarios acceso al fichero. chmod +r stuff Como arriba si no se indica a, u, g o o por defecto se toma a. chmod og-x stuff Quita permisos de ejecucin a todos los usuarios excepto al propietario. chmod u+rwx stuff Permite al propietario leer, escribir y ejecutar el fichero. chmod o-rwx stuff Quita permisos de lectura, escritura y ejecucin a todos los usuarios menos al propietario y a los usuarios del grupo del fichero. Cambiando el grupo Comando: chgrp Etimologa: change group (cambio de grupo). Ejemplo: chgrp alumnos /home/usuario/datos Esto cambia el grupo de los tres ficheros a alumnos.

versin 0.1 pgina-19

Curso de de Bash, Javier Hernndez Sirvent

4.2. Compresin y descompresin de archivos


Sintaxis: gzip [parmetros]archivo(s) Este programa comprime el contenido de archivos mediante unos complicado procesos matemticos. s El nombre del archivo comprimido termina con .gz y debe ser descomprimido antes de poder ser usado nuevamente. Si desea comprimir ms de un archivo o directorios completos, deber usar adems el comando tar. Ejemplo: gzip -d copiaseguridad.gz Opciones: -d Descomprime el archivo comprimido gzip, recuperando ste su tamao original y pudiendo volver a ser utilizado de forma normal (corresponde al comando gunzip). -----------------------------------------------------------------------------------------------------------------------Sintxis: tar opciones nombrepaquete archivo(s) El comando tar agrupa uno o (normalmente) ms archivos en un llamado paquete, que luego se puede p.ej. comprimir. tar es un comando muy complejo, que ofrece una gran cantidad de opciones. A continuacin le enseamosalgunas de las combinaciones msusadas. Ejemplo: tar -zxf copiadeseguridad.tar.gz Opciones: -f La informacin generada por el proceso se escribe en un archivo y no se muestra en la pantalla, como est previsto por defecto file. -c Crea un nuevo archivo tar create. -r Agrega archivos a un paquete existente. -t Muestra el contenido de un paquete. -u Agrega archivos al paquete, pero slo si estos son ms recientes que los existentes. -x Desempaqueta archivos de un paquete (extrae) -z Comprime con gzip el paquete generado. -j Comprime con bzip2 el paquete generado. -v Da los nombres de los archivos procesados. Los archivos creados mediante tar terminan en .tar. Cuando el archivo tar ha sido adems comprimido con gzip, la terminacin ser .tar.gz, con bzip2, ser .tar.bz2. versin 0.1 pgina-20

Curso de de Bash, Javier Hernndez Sirvent

4.3. Los procesos


Comandos para operaciones con procesos Cada vez que ejecutas un programa, lo que ests haciendo para el ordenador internamente es lanzando lo que se conoce como un "proceso" que no es ms que el nombre que recibe un programa en tiempo de ejecucin (cuando se est ejecutando). Listando procesos Comando: ps Etimologia: proceso (process) Sintaxis: ps [-feautd] Este comando visualiza la lista de procesos que se estan ejecutando actualmente. Parametros: -f Informacin completa. UID (identificador de user), nos dice quien inici el proceso y estime la hora del lazamiento del proceso. -e Muestra todos los procesos que se estn ejecutando, no solo los que lanzamos nosotros. Por tanto tambin se muestran los llamados demonios (procesos quese ejecutan en segundo plano). Tambin se muestran los procesos llamados "lideres de grupo de proceso" estos son procesos que solo sirven para que se ejecuten otros procesos. -d igual que el anterior pero no muestra los lideres de grupo. -a Solo lista procesos relacionados con el terminal -u Visualiza que es lo que hace un usuario -t visualiza que es lo que hace un terminal Ejemplo: ps PID TT STAT TIME COMMAND 24 3 S 0:03 (bash) 161 3 R 0:00 ps Haber, la informacin que nos muestra es esta. Donde PID (identificador de proceso). Cada proceso es identificado con un numero y el sistema lo reconoce como tal. En la columna command se encuentra el nombre del proceso que se esta ejecutando. Bash, es el shell o interprete de comandos usado por lin ux. Lgicamente el bash se ejecutara siempre concurrentemente con el comando que lancemos.

versin 0.1 pgina-21

Curso de de Bash, Javier Hernndez Sirvent

Comprobando el estado de un proceso Comando: jobs Sintaxis: jobs [-lrs] Parmetros: -l Visualiza el PID (identificador de proceso) de cada proceso. -r Visualiza los procesos que se encuentran en estado de ejecucin (runnin g) -s Visualiza los procesos que estn en estado suspendido (stopped). Eliminando procesos Comando: kill Etimologa: kill (matar, eliminar, asesinar) Sintaxis: kill [seal] [n] Este comando toma como argumento un numero de tarea o un PID (process identifier). En el caso de que recurramos a no pasarle el PID y si la tarea debemos anteponer al numero de la tarea el signo del tanto-porciento "%". Ejemplo: kill %1 Eliminamos la tarea numero 1 Ejemplo: kill 156 Eliminaremos el proceso con el PID numero 156. Parada y relanzamiento de tareas Hay otra manera de poner una tarea en segundo plano. Puedes lanzarlo como un proceso normal (en primer plano), pararlo, y despus relanzarlo en segundo plano. Primero, lanza el proceso yes en primer plano como lo haras normalmente: /home/merovingio# yes > /dev/null De nuevo, dado que yes corre en primer plano, no debe retornar el prompt de la shell. Ahora, en vez de interrumpir la tarea con Ctrl-C, suspenderemos la tarea. El suspender una tarea no la mata: solamente la detiene temporalmente hasta que tu la retomes. Para hacer esto debes pulsar la tecla de suspender, que suele ser Ctrl-Z. /home/merovingio#_yes > /dev/null Ctrl-Z [1]+ Stopped yes >/dev/null /home/merovingio# Mientras el proceso est suspendido, simplemente no se esta ejecutando. No gasta tiempo de CPU en la tarea. Sin embargo, puedes retomar el proceso de nuevo como si nada hubiera pasado. Continuar ejecutandose donde se dej. Para relanzar la tarea en primer plano, usa el comando fg (del ingls "foreground"). /home/merovingio# fg versin 0.1 pgina-22

Curso de de Bash, Javier Hernndez Sirvent

yes >/dev/null La shell muestra el nombre del comando de nuevo, de forma que tenga conocimiento de que tarea es la que has puesto en primer plano. Para la tarea de nuevo, con Ctrl-Z. Esta vez utiliza el comando bg para poner la tarea en segundo plano. Esto har que el comando siga ejecutandose igual que si lo hubieses hecho desde el principio con "&" como en la seccin anterior. /home/merovingio# bg [1]+ yes >/dev/null & /home/merovingio# Y tenemos de nuevo el prompt. El comando jobs debera decirnos que yes se est ejecutando, y podemos matar la tarea con kill tal y como lo hicimos antes. Cmo podemos parar la tarea de nuevo? Si pulsas Ctrl-Z no funcionar, ya que el proceso est en segundo plano. La respuesta es poner el proceso en primer plano de nuevo, con el comando fg, y entonces pararlo. Como puedes observar podrs usar fg tanto con tareas detenidas, como con las que estn segundo plano. Hay una gran diferencia entre una tarea que se encuentra en segundo plano, y una que se encuentra detenida. Una tarea detenida es una tarea que no se est ejecutando, es decir, que no usa tiempo de CPU, y que no est haciendo ningn trabajo (la tarea aun ocupa un lugar en memoria, aunque puede ser volcada a disco). Una tarea en segundo plano, se est ejecutando, y usando memoria, a la vez que completando alguna accin mientrashaces otro trabajo. Sin embargo, una terea en segundo plano puede intentar mostrar texto en la terminal, lo que puede resultar molesto si ests intentando hacer otra cosa. Por ejemplo, si usaste el comando: /home/merovingio# yes & sin redirigir stdout a /dev/null, una cadena de yes se mostrarn en tu monitor, sin modo alguno de interrumpirlo (no puede haceruso de Ctrl-C para interrumpir tareas en segundo plano). Para poder parar esas interminables yes, tendra que usar el comando fg para pasar la tarea a primer plano, y entonces usar Ctrl-C para matarla. Otra observacin. Normalmente, los comandos "fg" y "bg" actuan sobre el ltimo proceso parado (indicado por un "+" junto al nmero de tarea cuando usa el comando jobs). Si tienes varios procesos corriendo a la vez, podrs mandar a primer o segundo plano una tarea especifica indicando el ID de tarea como argumento de fg o bg, como en: /home/merovingio# fg %2 (para la tarea de primer plano nmero 2), o /home/merovingio# bg %3 (para la tarea de segundo plano nmero 3). No se pueden usar los ID de proceso con fg o bg. Adems de esto,si usa el nmero de tarea por si solo, como /home/merovingio# %2 es equivalente a /home/merovingio# fg %2 Solo recordar que el uso de control de tareas es una utilidad de la shell. Los versin 0.1 pgina-23

Curso de de Bash, Javier Hernndez Sirvent

comandos fg, bg y jobs son internos de la shell. Si por algn motivo utilizas una shell que no soporta control de tareas, no esperes disponer de estos comandos. Y adems, hay algunos aspectos del control de tareas que difieren entre Bash y Tcsh. De hecho, algunas shells no proporcionan ningn control de tareas sin embargo, la mayora de las shells disponibles para Linux soportan control de tareas.

versin 0.1 pgina-24

Curso de de Bash, Javier Hernndez Sirvent

5. ltimos comandos
Comandos programables Comando para mostrar texto en pantalla Comando: echo Sintaxis: echo [-n] texto Ejemplo: echo Hola mundo!!! Esto mostrara en pantalla "Hola mundo!!!" Parametros: el parametro -n situa el cursor al final de la linea con lo que el resultado de los echo se formatea en una linea unicamente. Apunte tecnico: El comando echo toma por la consola estandar de entrada (stdin) un parametro "texto" su funcin es sacarlo por la consola estandar de salida (stdout). Creando comandos personalizados Comando: alias Etimologa: Sobrenombre Sintaxis: alias [-p] [nombre[=valor]] Este comando crea un nombre de comando que realiza la funcin que nosotros predefinamos con anterioridad. Lo mejor es ver un ejemplo: alias saludo=`echo nas xaval ` Ahora cuando pongamos en el shell el comando (alias) "saludo", linux nos mostrara un mensaje "nas xaval J". Debemos poner ese tipo de entrecomillado para que el comando se ejecute y guarde el valor para la salida por el stdout llevada por el comando echo. Eliminando comandos personalizados Comando: unalias Sintaxis: unalias Eliminara el alias pasado como parmetro. Definicion de variable: Una variable vendria a ser como un contenedor que almacena un dato, internamente no es mas que una direccion en memoria que apunta al contenido de un dato. Las variables se almacenan en memoria RAM. Y son muy utiles para trabajar con un procesamiento de datos en el que es esencial guardar algunos parametros para ser usados en procesos versin 0.1 pgina-25

Curso de de Bash, Javier Hernndez Sirvent

posteriores. Creando variables Sintaxis: NameVar=valor Ejemplo: MiNombre="Javier" En este ejemplo guardamos la cadena de texto Javier (para que sea tomada como cadena de texto es necesario el entrecomillado doble) y lo almacenamos dentro de la variable MiNombre. Tambin podemos hacer que se ejecute un comando como en el ejemplo anterior: echo: fecha=`date` Devolviendo el valor SIntaxis: $namevar Para devolver el valor de una variable debremos precedir al nombre de la variable el caracter "$". Para ver el valor de la variable creada en el ejemplo anterior, podriamos hacer: echo $MiNombre Eliminando variables SIntaxis: unset namevar Ejemplo: unset MiNombre De esta forma eliminariamos el contenido de esa variable y su especificacion de variable como tal. Desapareceria de nuestra memoria. Comandos de datos temporales Mostrando calendario Comando: cal Etimologa: Calendario Sintaxis: cal [mes[ao]] Este comando ofrece un calendario mensual. Puede tener comoargumentos el mes y ao. Ejemplo: cal 01 2001 Mostrara el mes de enero del 2001 Mostrando fecha y hora Comando: date Sintaxis: date Esto mostrara en formato la fecha actual. Etimologa: date (fecha)

versin 0.1 pgina-26

Curso de de Bash, Javier Hernndez Sirvent

Comandos varios Limpiando pantalla Comando: clear Etimologa: Limpiar Sintaxis: clear Este comando limpia la pantalla. Ejecutando scripts (guiones) Comando: sh Sintaxis: sh script Donde script es el nombre del guion a ejecutar. Temporizando proceso de comando. Comando: time Etimologa: tiempo (hora). Sintaxis: time [comando] Devuelve el tiempo de ejecucin total, el tiempo que el sistema ha dedicado a ese usuario y el tiempo de preparacin del programa o comando pasado como argymento. Visualizando bloques libres o usados Comando: df Comandos para operaciones de comunicacin Los comando write y talk permiten enviar y recibir mensajes y los programas mail y mailx gestionan el correo electrnico. Comunicacin bidireccional unica Comando: write Etimologa: Escribir Sintaxis: write [terminal] Ejemplo: write Quasi Hola, Quasi Como te va ese OrioN ScripT?

versin 0.1 pgina-27

Curso de de Bash, Javier Hernndez Sirvent

El usuario Quasi vera en pantalla lo siguiente: Message from pepe tty0 [ved mar 9 09:02:34] Hola, Quasi Como te va ese OrioN ScripT? EOF Lgicamente es necesario que los dos usuarios estn conectados. Tal informacin la podemos obtener con el ya visto comando who. Este comando sirve para proveer un tipo de comunicacin de corto-ca mbio (duplex = bidireccional unico (en un solo sentido)). Para realizar una comunicacin mas fluida (fullduplex = bidireccional simultanea (en ambos sentidos a la vez)). Se usa el comando talk Comunicacion bidireccional simultanea Comando: talk Etimologa: Hablar Sintaxis: talk Ejemplo: talk Quasi Y Quasi recibe el mensaje: talk: conexin solicitada por pepito ... Si Quasi pone: talk pepito La pantalla se divide en 2 partes una para teclear y otra para recibir. Para terminar teclear Ctrl+c. Impidiendo la recepcin de mensajes. Comando: mesg Etimologa: message (mensajes) Sintaxis: mesg [y|n] Ejemplo: mesg n Suponiendo que ese comando lo halla ejecutado Quasi, cuando alguien intente mandar un mensaje (talk o write) a Quasi este no lo recibir al usuario que lo intenta le pondr en pantalla "permiso denegado". Para saber nuestra situacin actual, sea si el cierre de mensajes esta activado o no, basta con poner: mesg Mensaje massivo Comando: wall Sintaxis: wall versin 0.1 pgina-28

Curso de de Bash, Javier Hernndez Sirvent

Ejemplo: wall Esto es un mensaje masivo Gestionando correo Comando: mail Sintaxis: mail [user1, user2, user3, etc] Si no especificamos el usuario al que queremos mandar el mail. Nos entrara en el programa de gestin de nuestro propio correo, desde el cual podremos ver y editar nuestro correo. Si especificamos un parmetro con el nombre de usuario de algn equipo, el programa procesa unos datos (subject, texto, etc.) y lo enva al user. Ejecutando mail sin pasarle argumentos entramos en el entorno del programa de gestin de mails. En el cual podemos usar las siguientes ordenes. ? muestra ayuda n donde n es el numero del mail que queremos visualizar en pantalla. p muestra el mensaje actual h muestra las cabeceras de los mensajes d borra el mensaje q sale del mail s file Donde guarda el mensaje actual dentro de file. Si no se indica file se guardara en mbox. R n Si deseamos responder al mensaje numero n.

versin 0.1 pgina-29