curso de bash v.0.1

29
Curso de de Bash, Javier Hernández Sirvent CURSO DE BASH Este texto pretende ser una introducción al manejo de la consola en sistemas Linux/Unix. Se ha revisado con la intención que su nivel sea el razonable para una asignatura de “Sistemas Informáticos” 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 Hernández Sirvent. Si quiere conseguir la última versión, estará en la web del curso: www.aprendeaprogramar.com Este texto es de libre distribución (“gratis”). Se puede distribuir a otras personas libremente, siempre y cuando no se modifique. Este texto se distribuye "tal cual", sin garantía de ningún tipo, implícita ni explícita. Aun así, mi intención es que resulte útil, así que le rogaría que me comunique cualquier error que encuentre. Para cualquier sugerencia, no dude en contactar conmigo a través de la web del curso o a través de mi correo [email protected]. versión 0.1 página-1

Upload: 0magicangel0

Post on 30-Jul-2015

33 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Curso de bash v.0.1

Curso de de Bash, Javier Hernández Sirvent

CURSO DE BASH

Este texto pretende ser una introducción al manejo de la consola en sistemas Linux/Unix.Se ha revisado con la intención que su nivel sea el razonable para una asignatura de “Sistemas Informáticos” 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 Hernández Sirvent. Si quiere conseguir la última versión, estará en la web del curso:

www.aprendeaprogramar.com

Este texto es de libre distribución (“gratis”). Se puede distribuir a otras personas libremente, siempre y cuando no se modifique.Este texto se distribuye "tal cual", sin garantía de ningún tipo, implícita ni explícita. Aun así, mi intención es que resulte útil, así que le rogaría que me comunique cualquier error que encuentre.Para cualquier sugerencia, no dude en contactar conmigo a través de la web del curso o a través de mi correo [email protected].

versión 0.1 página-1

Page 2: Curso de bash v.0.1

Curso de de Bash, Javier Hernández Sirvent

Contenido

• 1. Introducción ...................................................................................................................... 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. Compresión y descompresión de archivos ......................................................... 20

• 4.3. Los Procesos ........................................................................................................ 21

• 5. Últimos comandos ............................................................................................................. 25

versión 0.1 página-2

Page 3: Curso de bash v.0.1

Curso de de Bash, Javier Hernández Sirvent

(Se anotarán modificaciones y ampliación del contenido)

versión 0.1 página-3

Page 4: Curso de bash v.0.1

Curso de de Bash, Javier Hernández Sirvent

1. Introducción

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 ingeniería informática, ni conocimientos avanzados. Lo único que se exige para este cursillo es querer aprender más 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 básico 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 enviándome un e-mail a [email protected] 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.

versión 0.1 página-4

Page 5: Curso de bash v.0.1

Curso de de Bash, Javier Hernández 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 símbolo del sistema la C (C:/), todos los Linux usan la /. También 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.• /ibin→Contiene ficheros de comandos ejecutables usados por el administrador.• /sbin→Contiene ejecutables utilizados en la secuencia de arranque y en la recuperación

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 librerías y compiladores del sistema.• /etc → Directorio con ficheros de configuración y utilidades para la administración.• /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 núcleo de Unix/Linux.• /opt →Sirve de punto de montaje desde el que se instalan los paquetes de aplicación

adicionales.• /bck → Se guardan las copias de seguridad del sistema.• /boot → Contiene archivos OBJ (objeto) configurables para el núcleo del sistema.• /config → Para configurar el arranque del sistema.• /dgn → Para almacenar los programas de diagnóstico.• /export → Para exportar sistemas de archivos.• /install → Donde el administrador instala las utilidades de administración.• /save → para guardar copias de ficheros de administración con el fin de realizar copias a

disquetes.• /tmp → Para almacenar archivos temporales.• /home → Utilización de los directorios propios de cada usuario. Contiene el directorio de

presentación y el árbol de subdirectorios de cada usuario.

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

versión 0.1 página-5

Page 6: Curso de bash v.0.1

Curso de de Bash, Javier Hernández 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 instalación y mini-distribuciones.

• Live CD/DVD

• Knoppix – La distribución Live CD más famosa y utilizada de todas.• Guadalinex – Desarrollado por la comunidad autónoma de Andalucia.• LinuXP – Live CD que imita a Windows XP• CDLinux – Especialmente pensada para la administración y rescate de sistemas.• Musix – Para los músicos.• Además hay Live CD de casi todas las distribuciones instalables.

• CD/DVD Instalación

• 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 – Distribución para usuarios muy expertos.• Debian – Hace gala de ser una distribución muy estable, y tiene sus motivos.• Red Hat – Perfecta para servidores y máquinas que trabajen con redes.• Fedora – La versión gratuita de Red Hat.• Mandriva (Mandrake) – Alternativa muy recomendable.

versión 0.1 página-6

Page 7: Curso de bash v.0.1

Curso de de Bash, Javier Hernández Sirvent

• Mini-distribuciones

• Antomic – Para aquellos que se inician en el mundillo linux• Brutalware – Para la administración de redes con TCP/IP• Trinux – Orientada a la administración y diagnóstico de redes• Tombsrtbt – Sistema de rescate para emergencias en un solo disquete.

Las características 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 gráfico para que puedan grabarse en disquetes.

2.3 Breve lista de equivalencias con programas de windows

Para mostrar al típico usuario de Windows que en cualquier distribución de Linux se puede encontrar muchos programas que sustituyen a los caros programas propietarios.

MSN Messenger – Kopete, Gaim, amsnOffice – OpenOfficeWindows Media Player – Amarok, Xine....Nero – KIIIB (K3B)Internet Explorer – Mozilla Firefox, OperaOutlook – Mozilla ThunderbirdEmule – Amule BitTorrent – BitTorrent, Ktorrent

La lista podría extenderse infinitamente, aquí tan solo hemos puesto una pequeña lista de los programas más usados por la gente. Si buscáis algún programa su equivalente en Linux visitad estas páginas Web.

http://aldealinux.com/articulos/tabla.shtmlhttp://alts.homelinux.net/http://www.illasaron.com/html/index.php

versión 0.1 página-7

Page 8: Curso de bash v.0.1

Curso de de Bash, Javier Hernández 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 mayúsculas y minúsculas. Por lo tanto podemos tener creadas dos carpetas que se llamen exactamente iguales pero que las diferencien las mayúsculas.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 creación de un superusuario (en inglés root). Además siendo superusuario se puede controlar las acciones (además de crear/borrar usuarios) de los usuarios registrados en el sistema. Así que para poder diferenciar entre usuario estándar y superusuario se usan dos caracteres, el dólar ($) y la almohadilla (#) para usuario y superusuario respectivamente (conocido como prompt), si se quiere acceder a él a través 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 instalación.

versión 0.1 página-8

Page 9: Curso de bash v.0.1

Curso de de Bash, Javier Hernández 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: manEtimologia: man (manual).Sintaxis: man [-fk] <comando>

Donde man nos proporciona una ayuda sobre el comando que especificamos comoparámetro. Lo malo de esta ayuda es que viene en ingles. Pero en ella se puedenver todos los parámetros que permite cualquier comando y su explicación ademásde la definición del comando y sus ya mencionados argumentos.

Parámetros:Ø -f esta opción hace que man muestre la definición del comando en una solalínea.Ø -k la opcion -k de la orden man busca en todas las descripciones, incluidoslos nombres de las ordenes, las que incluyen las palabras especificadas.

Ejemplo: man -k connectBuscara la palabra connect.

Caracteres especialesEl "*" y "?" funcionan de la misma forma que en el sistema operativo MSDOS.

Carácter *

Ejemplo: ls file*Esto buscaría todos los ficheros que empezaran por file el resto de caracteresque le siguen es sustituido por el asterisco y se muestran en pantalla.

Carácter ?

Ejemplo: ls file?*Esto localizara aquellos ficheros que empiecen por file y a continuación uncarácter que será sustituido por el ? luego puede o no contener mas caracteres.

Resumiendo: el carácter * absorbe cualquier carácter o caracteres, y el carácter

versión 0.1 página-9

Page 10: Curso de bash v.0.1

Curso de de Bash, Javier Hernández Sirvent

? absorbe un solo carácter.

Carácter ~ (altgr+126) Este carácter devolverá la ruta de donde nos situamos actualmente, ejemplo: ls ~/dir1/dir2/

El comando "PWD" devuelve también la ruta de donde nos situamos actualmente.

Comandos de información

Información de usuarios conectados

Comando: whoEtimología: who+is (Quien?) [es]Sintaxis: who [-sHqT]

Este comando nos muestra los usuarios coenctados e información sobre tales.

Si ponemos: who meNos hará un who a nosotros mismos, dándonos información sobre nosotros.

Información del usuario

Comando: fingerSintaxis: finger usuarioEste comando mostara información del usuario: directorio home, ultimo mensajeleído, login, shell, etc.

Otros comandos para obtener informacion son:

unametty (sobre el terminal).

versión 0.1 página-10

Page 11: Curso de bash v.0.1

Curso de de Bash, Javier Hernández Sirvent

3.2. Toma de contacto(2)

Comandos para operaciones con directorios

Moviéndose por el sistema de ficheros (directorios y subdirectorios)

Comando: cdSintaxis: cdDonde directorio es el directorio al que queremos ir.

Etimología: change directory, cambio de directorio.Parámetros:Ø cd .. Nos dirigiría al directorio padre del directorio en el que estamos.NOTA: es distinto al MSDOS, en este caso los ".." están separados del cd.Ø cd . Nos dejaría en el mismo lugar puesto que dirige al directorio en el queestamos.Ø cd Si no pasamos parámetro o argumento alguno al comando cd, este nos llevara a nuestro directorio de origen. En uníx el directorio de origen es llamado HOME podemos devolver su ruta con la variable de entorno $HOME o con el símbolo "~" (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: lsSintaxis: ls [-FltrCai] [dir]Donde los parámetros pasados al ls, filtraran la información a la forma deseaday predefinida.Parámetros:-F Indica que muestre los ficheros y subdirectorios que hay dentro deldirectorio con signos identificativos a cada uno de ellos.My-dir/My-fileMy-file-exe*Si la entrada lleva el signo "/" se trata de un subdirectorio que cuelga deldirectorio en el que estamos.Si no se muestra ningún signo se trata de un fichero.Si se muestra un "*" (asterisco), se estará tratando de un fichero ejecutable.

-l Con este parámetro, el comando ls nos muestra el formato largo devisualización de entradas de ficheros y directorios. En el que se dan en primerlugar los permisos asignados a los ficheros o directorios (si esos permisosempiezan por un "-" se trata de un fichero, si empieza por una "d" se estarátratando de un directorio). A continuación en la segunda columna se muestran elnumero de enlaces o links a ese fichero o directorio. La tercera y cuartacolumna son el nombre del propietario y su grupo respectivamente. El resto sonel tamaño, la fecha de ultima modificación, la hora, etc.

versión 0.1 página-11

Page 12: Curso de bash v.0.1

Curso de de Bash, Javier Hernández Sirvent

-t Con este parámetro filtramos las entradas de los ficheros y directorios paramostrarlos ordenados según su fecha de creación.

-r Muestra las entradas de ficheros y directorios en orden inverso (por defectose muestran en orden alfabético).

-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: mkdirSintaxis: mkdir [-pm] <NameDir>Si introducimos (mkdir dir1 dir2 dir3), crearemos 3 directorios en la ruta dondenos encontramos.

Etimología: Make directory (crear directorio).Parámetros:Ø -p crea los directorios y subdirectorios indicados en la ruta y que no existanya.Ø -m

Eliminando directorios

Comando: rmdirEtimología: remove directory (eliminar directorio).Sintaxis: rmdir [-p]

Donde [parámetros] será para borrar con ciertas opciones. Y directorio será eldirectorio 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 yejecutar.3. El directorio no puede ser su directorio de trabajo.

versión 0.1 página-12

Page 13: Curso de bash v.0.1

Curso de de Bash, Javier Hernández Sirvent

Comandos para operaciones con ficheros u archivos

Copiando ficheros

Comando: cpEtimología: 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 ellugar (directorio o subdirectorio) en el cual queremos dejar la copia.

Parámetros:Ø -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 es devueltoal pasar como parámetro el signo ".", esto indica que se copie al directorio enel que nos encontramos.

Moviendo ficheros

Comando: mvEtimología: movie (mover).Sintaxis: mv <entrada> <salida>Donde entrada será el fichero o los ficheros que queremos mover. Y la salidaserá el directorio al que van dirigidos.

NOTA: Tanto mv como cp sobrescriben los ficheros sin pedir confirmación.

Eliminando ficheros

Comando: rmEtimología: Remove (eliminar).Sintaxis: rm [-ir] <file/s>Donde al comando rm le podemos pasar opcionalmente unos parametros y dondeficheros serán aquellos archivos que queremos eliminar.

Parámetros:Ø -i Este parámetro hace que se pida confirmación antes de eliminar un fichero.Ø -r Con este argumento haremos que el comando rm elimine también directorios (tengan dentro ficheros o no).

Ejemplo: rm -r *Esto elimara todos los directorios, subdirectorios y ficheros de la ruta en elque nos encontramos.

versión 0.1 página-13

Page 14: Curso de bash v.0.1

Curso de de Bash, Javier Hernández Sirvent

3.4. Visualizar y crear archivos desde consola

Comandos para visualizar contenidos Sintaxis: cat [opción]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, vivía 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. Por ejemplo puede subir y bajar media hoja de pantalla con las teclas Repág y Avpág con la tecla espaciadora hasta una página entera hacia adelante. También puede desplazarse al comienzo y al final del texto con las teclas Inicio y Fin. Y con la tecla Q puede cerrar este modo de visualización.

--------------------------------------------------------

Sintaxis: grep [opción] archivo

grep está pensado para buscar un determinado término de búsqueda en el archivo(s) elegido. Si la búsqueda se ha realizado con éxito, el programa mostrará la línea en la que se ha encontrado el término de búsqueda, así como el nombre del archivo.

Ejemplo:

$grep documentoimportante.doc

Opciones:

-i Ignora las diferencias entre mayúsculas y minúsculas

-l Da sólo el nombre del archivo correspondiente y no el número de línea

-n Numera, además, las líneas donde se encontró el texto buscado

-l Da una lista de los archivos que no contengan el término de búsqueda

--------------------------------------------------------

Sintaxis: diff[opción] archivo1 archivo2

diff fue creado para comparar el contenido de dos archivos cualesquiera y mostrar en una lista las líneas 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:

versión 0.1 página-14

Page 15: Curso de bash v.0.1

Curso de de Bash, Javier Hernández Sirvent

-q Indica tan sólo 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 instalación predeterminada de Linux. Además, el control de este editor es totalmente uniforme y libre de equivocaciones. Finalmente: Si no funciona nada, vi aún funciona. La breve explicación que presentamos a continuación servirá para utilizar las funciones básicas de vi para editar diferentes archivos de configuración 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 inserción 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 línea.

Las órdenes más importantes del modo de comandos son:

Comandos básicos del editor vi

i cambia al modo de inserción (los caracteres se introducen en la posición actual del cursor).

acambia al modo de inserción (los caracteres se introducen detrás de la posición actual del cursor).

A cambia al modo de inserción (los caracteres se añaden al final de la línea).

R cambia al modo de inserción (sobrescribe el texto anterior).

r cambia al modo de inserción sobrescribiendo un solo carácter.

scambia al modo de inserción (el carácter en la posición del cursor se sobrescribe con el carácter nuevo).

C cambia al modo de inserción (el resto de la línea se reemplaza por el texto nuevo).

o cambia al modo de inserción (detrás de la línea actual se añade una línea nueva).

O cambia al modo de inserción (por delante de la línea actual se añade una línea nueva).

x borra el carácter actual.

versión 0.1 página-15

Page 16: Curso de bash v.0.1

Curso de de Bash, Javier Hernández Sirvent

dd borra la línea actual.

dw borra hasta el final de la palabra actual.

cw cambia al modo de inserción (el resto de la palabra actual se sobrescribe).

u deshace el último comando.

J añade la siguiente línea 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 número de veces que se debe repetir el comando que sigue: 3dw borra tres palabras seguidas, 10x borra diez caracteres a partir de la posición del cursor y 20dd borra 20 líneas.

Los comandos más 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 graba el archivo modificado y sale del editor.

:e Nombrearchivo edita (carga) nombre_archivo.

:u deshace el último comando de edición.

Para cambiar al modo de comandos dentro del modo de inserción se debe pulsar la tecla ESC.

Uso avanzado de los archivos

Sintaxis: ln [opción] 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 posición de archivo_origen dentro de un sistema de archivos. Si por el contrario se ejecuta el comando ln con la opción -s, se creará un denominado enlace simbólico que apuntará exclusivamente a la rama de archivo_origen y que por esa razón podrá ser usado fuera de los límites del sistema de archivos.

Opciones:-s Crea un enlace simbólico.

versión 0.1 página-16

Page 17: Curso de bash v.0.1

Curso de de Bash, Javier Hernández Sirvent

Imprimiendo ficheros.

Comando: lpEtimología: 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 fichero1Esto imprimirá el fichero1.

Parámetros:Ø -d Sirve para especificar mas impresoras

Ejemplo: lp -d impresora1 file1 file2Se lanzan a la impresora1 dos ficheros para su impresión: file1 y file2.

Ordenes para el comandoØ Cancel: cancela o elimina los trabajos de la cola de impresión.Ø Lpstat: muestra el estado de los trabajos pendientes de impresión.

Localizando ficheros

Comando: findEtimologias: find (buscar).Sintaxis: find [-name,-u,-mtime] core -printDonde directorio es la ruta donde se buscaran los patrones especificados.La sintaxis del find es algo enrevesada, depende de los parametros que lepasemos.

Parámetros:Ø -name Indicando el nonbre nos localizara aquellos ficheros cuyo nombre sea elpasado y los buscara en el del directorio especificado.

Ejemplo: find . -name coreAquí buscamos aquellos ficheros con el nombre core dentro del directorio dondenos encontramos "." Debido al punto.

versión 0.1 página-17

Page 18: Curso de bash v.0.1

Curso de de Bash, Javier Hernández 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 podrán 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 -lVeamos unos ejemplos prácticos.

-rwxrwxrwx prueba1drwxrwxrwx prueba2

El fichero llamado prueba1 se sabe que es un fichero porque el primer carácteres "-". En el segundo caso se trata de un directorio puesto que el primer carácter 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 grupoLos permisos para todos los usuarios (el resto de usuarios que no son ni elpropietario 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 comoya antes expliqué.El segundo campo indica los permisos para propietarioEl tercer campo indica los permisos para los usuarios del grupoEl cuarto campo indicara los permisos para el resto de usuarios.

Hay 3 tipos de permisos:

De lectura (read): rDe escritura (write): wDe ejecución (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 ejecución), el grupo tiene permisos para leer y escribir el fichero, y por ultimo el resto de usuarios pueden solo leer el fichero.

versión 0.1 página-18

Page 19: Curso de bash v.0.1

Curso de de Bash, Javier Hernández Sirvent

Cambiando los permisos

Comando: chmodEtimología: change mode (cambio de modos).Sintaxis: chmod {a,u,g,o} {+,-} {r,w,x}

Parámetros 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.

Parámetros para decidir si el permiso se añade o se quita:+ Añade permiso- Quita permiso

Parámetros que decide que permiso se añade o quita:Ø r De lecturaØ w De escrituraØ x De ejecución

Ejemplos:chmod a+r stuffDa a todos los usuarios acceso al fichero.

chmod +r stuffComo arriba si no se indica a, u, g o o por defecto se toma a.

chmod og-x stuffQuita permisos de ejecución a todos los usuarios excepto al propietario.

chmod u+rwx stuffPermite al propietario leer, escribir y ejecutar el fichero.

chmod o-rwx stuffQuita permisos de lectura, escritura y ejecución a todos los usuarios menos al propietario y a los usuarios del grupo del fichero.

Cambiando el grupo

Comando: chgrpEtimología: change group (cambio de grupo).Ejemplo: chgrp alumnos /home/usuario/datosEsto cambia el grupo de los tres ficheros a alumnos.

versión 0.1 página-19

Page 20: Curso de bash v.0.1

Curso de de Bash, Javier Hernández Sirvent

4.2. Compresión y descompresión de archivos

Sintaxis: gzip [parámetros]archivo(s)Este programa comprime el contenido de archivos mediante unos complicados procesos matemáticos. El nombre del archivo comprimido termina con .gz y debe ser descomprimido antes de poder ser usado nuevamente. Si desea comprimir más de un archivo o directorios completos, deberá usar además el comando tar.

Ejemplo: gzip -d copiaseguridad.gz

Opciones:

-d Descomprime el archivo comprimido gzip, recuperando éste su tamaño original y pudiendo volver a ser utilizado de forma normal (corresponde al comando gunzip).

------------------------------------------------------------------------------------------------------------------------

Sintáxis: tar opciones nombrepaquete archivo(s)

El comando tar agrupa uno o (normalmente) más 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 continuación le enseñamosalgunas de las combinaciones más usadas.

Ejemplo: tar -zxf copiadeseguridad.tar.gz

Opciones:

-f La información 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 sólo si estos son más 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 además comprimido con gzip, la terminación será .tar.gz, con bzip2, será .tar.bz2.

versión 0.1 página-20

Page 21: Curso de bash v.0.1

Curso de de Bash, Javier Hernández Sirvent

4.3. Los procesos

Comandos para operaciones con procesos

Cada vez que ejecutas un programa, lo que estás haciendo para el ordenador internamente es lanzando lo que se conoce como un "proceso" que no es más que el nombre que recibe un programa en tiempo de ejecución (cuando se está ejecutando).

Listando procesos

Comando: psEtimologia: proceso (process)Sintaxis: ps [-feautd]Este comando visualiza la lista de procesos que se estan ejecutando actualmente.

Parametros:Ø -f Información completa. UID (identificador de user), nos dice quien inició elproceso y estime la hora del lazamiento del proceso.

Ø -e Muestra todos los procesos que se están ejecutando, no solo los quelanzamos nosotros. Por tanto también se muestran los llamados demonios (procesos que se ejecutan en segundo plano). También 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 COMMAND24 3 S 0:03 (bash)161 3 R 0:00 ps

Haber, la información 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 linux.Lógicamente el bash se ejecutara siempre concurrentemente con el comando que lancemos.

versión 0.1 página-21

Page 22: Curso de bash v.0.1

Curso de de Bash, Javier Hernández Sirvent

Comprobando el estado de un proceso

Comando: jobsSintaxis: jobs [-lrs]Parámetros:-l Visualiza el PID (identificador de proceso) de cada proceso.-r Visualiza los procesos que se encuentran en estado de ejecución (running)-s Visualiza los procesos que están en estado suspendido (stopped).

Eliminando procesos

Comando: killEtimología: kill (matar, eliminar, asesinar)Sintaxis: kill [señal] [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 anteponeral numero de la tarea el signo del tanto-porciento "%".

Ejemplo: kill %1Eliminamos la tarea numero 1

Ejemplo: kill 156Eliminaremos 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 después relanzarlo en segundo plano.Primero, lanza el proceso yes en primer plano como lo harías normalmente:

/home/merovingio# yes > /dev/null

De nuevo, dado que yes corre en primer plano, no debe retornar el prompt de lashell. Ahora, en vez de interrumpir la tarea con Ctrl-C, suspenderemos latarea. El suspender una tarea no la mata: solamente la detiene temporalmentehasta que tu la retomes. Para hacer esto debes pulsar la tecla de suspender, que suele ser Ctrl-Z.

/home/merovingio#_yes > /dev/nullCtrl-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 inglés "foreground").

/home/merovingio# fg

versión 0.1 página-22

Page 23: Curso de bash v.0.1

Curso de de Bash, Javier Hernández 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 latarea de nuevo, con Ctrl-Z. Esta vez utiliza el comando bg para poner latarea en segundo plano. Esto hará que el comando siga ejecutandose igual que silo hubieses hecho desde el principio con "&" como en la sección anterior.

/home/merovingio# bg[1]+ yes >/dev/null &/home/merovingio#

Y tenemos de nuevo el prompt. El comando jobs debería decirnos que yes se estáejecutando, y podemos matar la tarea con kill tal y como lo hicimos antes. ¿Cómo podemos parar la tarea de nuevo? Si pulsas Ctrl-Z no funcionará, ya que elproceso está en segundo plano. La respuesta es poner el proceso en primer planode nuevo, con el comando fg, y entonces pararlo. Como puedes observar podrás usar fg tanto con tareas detenidas, como con las que estén 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 ningún 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 acción mientras haces otro trabajo. Sin embargo, una terea en segundo plano puede intentar mostrar texto en la terminal, lo que puede resultar molesto si estás intentando hacer otra cosa. Por ejemplo, si usasteel comando:

/home/merovingio# yes &

sin redirigir stdout a /dev/null, una cadena de yes se mostrarán en tu monitor,sin modo alguno de interrumpirlo (no puede hacer uso de Ctrl-C para interrumpir tareas en segundo plano). Para poder parar esas interminables yes, tendría que usar el comando fg para pasar la tarea a primer plano, y entonces usar Ctrl-C para matarla. Otra observación. Normalmente, los comandos "fg" y "bg" actuan sobre el último proceso parado (indicado por un "+" junto al número de tarea cuando usa el comando jobs). Si tienes varios procesos corriendo a la vez, podrás 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 número 2), o

/home/merovingio# bg %3(para la tarea de segundo plano número 3). No se pueden usar los ID de procesocon fg o bg.

Además de esto,si usa el número 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

versión 0.1 página-23

Page 24: Curso de bash v.0.1

Curso de de Bash, Javier Hernández Sirvent

comandos fg, bg y jobs son internos de la shell. Si por algún motivo utilizas una shell que no soporta control de tareas, no esperes disponer de estos comandos. Y además, hay algunos aspectos del control de tareas que difieren entre Bash y Tcsh. De hecho, algunas shells no proporcionan ningún control de tareas sin embargo, la mayoría de las shells disponibles para Linux soportan control de tareas.

versión 0.1 página-24

Page 25: Curso de bash v.0.1

Curso de de Bash, Javier Hernández Sirvent

5. Últimos comandos

Comandos programables

Comando para mostrar texto en pantalla

Comando: echoSintaxis: echo [-n] textoEjemplo: echo Hola mundo!!!Esto mostrara en pantalla "Hola mundo!!!"

Parametros: el parametro -n situa el cursor al final de la linea con lo que elresultado 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 función es sacarlo por la consola estandar de salida(stdout).

Creando comandos personalizados

Comando: aliasEtimología: SobrenombreSintaxis: alias [-p] [nombre[=valor]]Este comando crea un nombre de comando que realiza la función que nosotrospredefinamos con anterioridad.

Lo mejor es ver un ejemplo:

alias saludo=`echo nas xaval `

Ahora cuando pongamos en el shell el comando (alias) "saludo", linux nosmostrara 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: unaliasSintaxis: unaliasEliminara el alias pasado como parámetro.

Definicion de variable: Una variable vendria a ser como un contenedor quealmacena 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

versión 0.1 página-25

Page 26: Curso de bash v.0.1

Curso de de Bash, Javier Hernández Sirvent

posteriores.

Creando variables

Sintaxis: NameVar=valorEjemplo: MiNombre="Javier"En este ejemplo guardamos la cadena de texto Javier (para que sea tomada comocadena de texto es necesario el entrecomillado doble) y lo almacenamos dentro de la variable MiNombre.También podemos hacer que se ejecute un comando como en el ejemplo anterior:

echo: fecha=`date`

Devolviendo el valorSIntaxis: $namevar

Para devolver el valor de una variable debremos precedir al nombre de lavariable el caracter "$".Para ver el valor de la variable creada en el ejemplo anterior, podriamos hacer:echo $MiNombre

Eliminando variables

SIntaxis: unset namevarEjemplo: unset MiNombreDe esta forma eliminariamos el contenido de esa variable y su especificacion devariable como tal. Desapareceria de nuestra memoria.

Comandos de datos temporales

Mostrando calendario

Comando: calEtimología: CalendarioSintaxis: cal [mes[año]]Este comando ofrece un calendario mensual. Puede tener comoargumentos el mes y año.Ejemplo: cal 01 2001Mostrara el mes de enero del 2001

Mostrando fecha y hora

Comando: dateSintaxis: dateEsto mostrara en formato la fecha actual.Etimología: date (fecha)

versión 0.1 página-26

Page 27: Curso de bash v.0.1

Curso de de Bash, Javier Hernández Sirvent

Comandos varios

Limpiando pantalla

Comando: clearEtimología: LimpiarSintaxis: clearEste comando limpia la pantalla.

Ejecutando scripts (guiones)

Comando: shSintaxis: sh scriptDonde script es el nombre del guion a ejecutar.

Temporizando proceso de comando.Comando: timeEtimología: tiempo (hora).Sintaxis: time [comando]Devuelve el tiempo de ejecución total, el tiempo que el sistema ha dedicado aese usuario y el tiempo de preparación del programa o comando pasado comoargymento.

Visualizando bloques libres o usados

Comando: df

Comandos para operaciones de comunicación

Los comando write y talk permiten enviar y recibir mensajes y los programas maily mailx gestionan el correo electrónico.

Comunicación bidireccional unica

Comando: writeEtimología: EscribirSintaxis: write [terminal]Ejemplo:

write QuasiHola, QuasiComo te va ese OrioN ScripT?

versión 0.1 página-27

Page 28: Curso de bash v.0.1

Curso de de Bash, Javier Hernández Sirvent

El usuario Quasi vera en pantalla lo siguiente:

Message from pepe tty0 [ved mar 9 09:02:34]Hola, QuasiComo te va ese OrioN ScripT?EOF

Lógicamente es necesario que los dos usuarios estén conectados. Tal informaciónla podemos obtener con el ya visto comando who.Este comando sirve para proveer un tipo de comunicación de corto-cambio (duplex = bidireccional unico (en un solo sentido)).Para realizar una comunicación mas fluida (fullduplex = bidireccional simultanea(en ambos sentidos a la vez)). Se usa el comando talk

Comunicacion bidireccional simultanea

Comando: talkEtimología: HablarSintaxis: talkEjemplo:

talk Quasi

Y Quasi recibe el mensaje: talk: conexión solicitada por pepito ...Si Quasi pone: talk pepito

La pantalla se divide en 2 partes una para teclear y otra para recibir. Paraterminar teclear Ctrl+c.

Impidiendo la recepción de mensajes.

Comando: mesgEtimología: message (mensajes)Sintaxis: mesg [y|n]Ejemplo:mesg n

Suponiendo que ese comando lo halla ejecutado Quasi, cuando alguien intentemandar un mensaje (talk o write) a Quasi este no lo recibirá al usuario que lointenta le pondrá en pantalla "permiso denegado".Para saber nuestra situación actual, ósea si el cierre de mensajes esta activadoo no, basta con poner: mesg

Mensaje massivo

Comando: wallSintaxis: wall

versión 0.1 página-28

Page 29: Curso de bash v.0.1

Curso de de Bash, Javier Hernández Sirvent

Ejemplo:wall Esto es un mensaje masivo

Gestionando correo

Comando: mailSintaxis: mail [user1, user2, user3, etc]Si no especificamos el usuario al que queremos mandar el mail. Nos entrara en elprograma de gestión de nuestro propio correo, desde el cual podremos ver yeditar nuestro correo.Si especificamos un parámetro con el nombre de usuario de algún equipo, elprograma procesa unos datos (subject, texto, etc.) y lo envía al user.Ejecutando mail sin pasarle argumentos entramos en el entorno del programa degestión 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 seguardara en mbox.Ø R nº Si deseamos responder al mensaje numero n.

versión 0.1 página-29