Sei sulla pagina 1di 18

Sistemas Operativos y Programacin

Grado en Ingeniera Elctrica

Sistemas Operativos y
Programacin
Grado en Ingeniera Elctrica

Unidad Temtica 1 - Sistemas Operativos

Boletn Prctica 1
Introduccin al shell de Unix

Departamento de Sistemas Informticos y Computacin


Universitat Politcnica de Valncia
Curso 2014/15

Sistemas Operativos y Programacin

Grado en Ingeniera Elctrica

Sistemas Operativos y Programacin

Grado en Ingeniera Elctrica

1.- INTRODUCCIN Y CONCEPTOS PREVIOS


Los usuarios pueden interactuar con el sistema operativo mediante dos mtodos: (i) a
travs de una interfaz de lnea de comandos (o intrprete de rdenes), que permite a los
usuarios introducir directamente rdenes que el sistema operativo pueda ejecutar; (ii) a
travs de una interfaz grfica de usuario (Graphical User Interface, GUI).
En muchos sistemas operativos, como Windows y Linux, el intrprete de rdenes es un
programa especial que se ejecuta cuando un usuario inicia una sesin. En los sistemas
que disponen de varios intrpretes de rdenes entre los que elegir, los intrpretes se
conocen como shells. Por ejemplo, en los sistemas UNIX y Linux hay disponibles
varios shells diferentes, como Bourne shell (o sh), Korn shell (ksh), Bourne-Again Shell
(bash), pero todos ellos con funcionalidades similares.
La funcin principal del intrprete de rdenes es obtener y ejecutar la orden o comando
especificado por el usuario. Muchas de las rdenes que se proporcionan se utilizan para
manipular ficheros: creacin y borrado de ficheros, listado o enumeracin de los
ficheros, impresin, copia, ejecucin, etc.
Existen dos mtodos para implementar las rdenes que se pueden ejecutar: en el propio
intrprete de rdenes o bien en los denominados programas del sistema. En el primer
caso, el intrprete de rdenes contiene el cdigo de la propia orden a ejecutar, por lo que
el nmero de rdenes o comandos que puede proporcionarse determina el tamao del
intrprete de rdenes. Adems, aadir o quitar rdenes implica modificar el cdigo del
intrprete de rdenes.
En el segundo caso, el comando u orden se implementa en otro fichero y el intrprete de
rdenes utiliza el nombre del comando para identificar el fichero que hay que cargar en
memoria y ejecutarlo. De esta forma, los programadores pueden aadir comandos al
sistema fcilmente, creando nuevos ficheros con los nombres apropiados. El programa
intrprete de rdenes, que puede ser pequeo, no tiene que modificarse en funcin de
los nuevos comandos que se aadan.
En el sistema Linux se emplean los dos mtodos: la mayora de las rdenes se
implementan en ficheros independientes, denominados programas del sistema y
solamente un reducido nmero de rdenes (denominado rdenes internas) se
implementa en el intrprete de rdenes, que se corresponden con todas aquellas rdenes
que, por sus caractersticas concretas no podran ser implementadas como ficheros
independientes del shell.
En esta primera prctica se revisarn algunas de las rdenes bsicas de Linux (tanto
algunas rdenas internas como rdenes implementadas en programas del sistema). En el
resto de prcticas, se analizar la funcionalidad que ofrece el shell para implementar
nuevas rdenes.

Sistemas Operativos y Programacin

Grado en Ingeniera Elctrica

1.1 EL INTRPRETE DE RDENES


Para las prcticas de la unidad temtica de Sistemas Operativos se utilizar el intrprete
conocido como Bourne Shell o sh, aunque las caractersticas y sintaxis de ese shell
tambin resultan aplicables al ksh y al bash.
Al ejecutar el intrprete de rdenes nos aparecer una ventana con un algn indicador o
prompt (por ejemplo $). Este indicador denota que el intrprete espera una orden del
usuario desde el teclado con el fin de que Linux la ejecute. La orden se ejecuta al pulsar
la tecla <Intro>. Al teclear las rdenes, Linux distingue entre maysculas y minsculas.
La orden puede corregirse con la tecla de retroceso.
1.2 CARACTERES DE CONTROL
Se denominan caracteres de control a aquellos que producen un efecto inmediato
cuando se pulsan. Los ms importantes son:

<Crtl> c: Termina o aborta la ejecucin de la orden que se est ejecutando.


<Crtl> s: Detiene la visualizacin en pantalla.
<Crtl> q: Reanuda la visualizacin en pantalla.
<Crtl> d: Se utiliza en aquellos programas que aceptan datos desde teclado para
indicar el final de los datos.

1.3 FORMATO DE LAS RDENES


Muchas rdenes aceptan argumentos. Para Linux, el separador de argumentos es el
espacio en blanco. La mayora de rdenes asumen como opciones los argumentos cuyo
primer carcter es el signo . Las opciones pueden expresarse por separado o
combinadas. Por ejemplo:
$
$
$
$
$

ls
ls
ls
ls
ls

/etc /bin
-l
-l /etc/profile
la
l -a

1.4 ALGUNAS RDENES BSICAS DE LINUX

ORDEN man: Linux dispone de un manual en lnea que permite consultar la sintaxis,
la descripcin y las opciones de cualquier orden sobre la propia pantalla. Este manual se
invoca con la orden man.
Por ejemplo, para obtener informacin sobre la orden ls, que permite listar los
ficheros del directorio actual, escribiramos el siguiente comando:
$ man ls
La informacin se proporciona paginada por pantallas. Al final de la pantalla la
indicacin --More-- interroga si se desea avanzar a la siguiente pgina. Se puede
contestar:

Sistemas Operativos y Programacin

Grado en Ingeniera Elctrica

<Space> (Barra espaciadora): Avanzar a siguiente pgina.


q (quit): Abandonar
? h (help). Para ver otros mandatos disponibles.

Por otro lado, muchas rdenes incorporan, en su propio cdigo, una opcin para
proporcionar informacin sobre su funcionamiento. Normalmente esta opcin se indica
con --help. Por ejemplo:
$ ls --help

ORDEN date: permite consultar la fecha y hora del sistema. Tambin sirve para
modificar la fecha y hora, pero slo el administrador del sistema (tambin llamado
superusuario) puede modificar estos valores. La fecha y hora son valores crticos para
un sistema multiusuario. Muchos de los servicios del sistema dependen de que estos
valores sean correctos. Por ello, tan slo el administrador del sistema puede
modificarlos.
Ejemplo de uso de esta orden:
$ date
martes, 2 de septiembre de 2014, 11:09:40 CEST

ORDEN echo: Muestra por pantalla el mensaje que se le indica a continuacin,


realizando un eco o repeticin de lo que se le pasa. Por ejemplo:
$ echo Hola mundo
Hola mundo

2. RDENES BSICAS DE GESTIN DE DIRECTORIOS


Un fichero regular es una coleccin de informaciones relacionadas y agrupadas bajo un
nombre. Los ficheros se organizan jerrquicamente mediante directorios.
El directorio raz / es el directorio base del sistema y contiene a todos los dems
directorios. Es el equivalente al C:/ de un sistema Windows.
El directorio actual . es el directorio en el que nos encontramos en ese momento.
Podemos referenciarlo utilizando un nico punto . o bien ./
El directorio padre .. es el directorio directamente superior al que nos encontramos.
Podemos referenciarlo utilizando dos puntos seguidos ..

Sistemas Operativos y Programacin

Grado en Ingeniera Elctrica

2.1 CREACIN Y BORRADO DE DIRECTORIOS


ORDEN mkdir: permite crear uno o varios directorios a la vez.
Si queremos crear un solo directorio:
$ mkdir prueba1
Si queremos crear varios directorios a la vez:
$ mkdir prueba2 prueba3
Tambin podemos crear subdirectorios utilizando los caminos:
$ mkdir prueba1/prueba11 prueba2/prueba21 prueba3/prueba31
EJERCICIO: Cree todos los directorios indicados en este apartado y dibuje el rbol de
directorios resultante:
1

ORDEN rmdir: elimina un directorio. Es necesario que dicho directorio est vaco.
$ rmdir

prueba1/prueba11

EJERCICIO: Elimine el directorio prueba2. Puede eliminarlo directamente? Indique


la informacin mostrada por el sistema:
2

Sistemas Operativos y Programacin

Grado en Ingeniera Elctrica

2.2 OBTENCIN DEL DIRECTORIO ACTUAL


ORDEN pwd: esta orden nos permite conocer sobre qu directorio estamos en un
momento dado.
$ pwd
Cuando entramos en el sistema a travs de nuestro nombre de usuario (login) y nuestra
contrasea (password), el sistema nos sita sobre nuestro directorio de trabajo. Si
ejecutamos pwd inmediatamente despus de entrar al sistema, lo que aparece es el
camino completo de la situacin de nuestro directorio dentro del sistema empezando por
el directorio raz "/". Del directorio raz cuelgan todos los dems directorios del sistema.
EJERCICIO: Consulte cul es su directorio de trabajo y antelo a continuacin.
3

2.3 CAMBIAR DE DIRECTORIO ACTUAL


ORDEN cd: podemos cambiar de directorio mediante el mandato cd directorio.
Ejemplos:
$ cd ./prueba1
$ cd /etc
Si no introducimos ningn nombre de directorio, el mandato cd sin argumentos nos
coloca en nuestro directorio de trabajo.
$ cd
Si queremos ir al directorio de nivel superior debemos utilizar cd ..
$ cd ..

Sistemas Operativos y Programacin

Grado en Ingeniera Elctrica

2.4 LISTAR EL CONTENIDO DE UN DIRECTORIO


ORDEN ls : La orden ls es una peticin al sistema para mostrar el contenido de un
directorio. La orden ls nos ofrece diversas opciones, que pueden usarse de forma
combinada.
En la siguiente tabla se muestran las opciones ms relevantes:
Opcin

Descripcin

-a

Muestra los ficheros ocultos (aquellos cuyo nombre empieza por .)

-l

Muestra los ficheros del directorio e informacin asociada a cada fichero


(permisos, propietario, fechas de modificacin, etc.)

-R

Muestra la informacin del directorio y de sus subdirectorios recursivamente

-F

Indica qu ficheros de un directorio son ficheros regulares, cules son


directorios (acabados en /) y cules son ejecutables (acabados en *).

-t

Muestra los ficheros ordenados por fecha (primero los ms nuevos)

-t -r

Muestra los ficheros ordenados por fecha (primero los ms antiguos)

Podemos combinar varias opciones a la vez. Por ejemplo, las opciones a y l,


escribiendo ls l a o bien ls la. Ejemplos:
$ ls l
$ ls l a
$ ls -la
La distincin entre ficheros regulares y directorios se puede apreciar si observamos el
primer carcter (empezando por la izquierda) de cada fila (fichero). Las entradas cuyo
carcter es una d son directorios y los que aparece un - son ficheros regulares.
SIGNIFICADO DE LOS CAMPOS EN EL LISTADO DE FICHEROS
Como se ha comentado anteriormente, al efectuar el mandato ls -l aparecen una serie de
entradas (filas), de tal forma que cada una de ellas hace referencia a un fichero. Una
entrada tpica consta de varios campos. El significado de cada uno de ellos es el
siguiente:

N de
enlaces
Modos
fichero

Propietario

Grupo

Fecha y hora de la
ltima modificacin
Tamao

Nombre
del fichero

Modos fichero (bits de proteccin): El primer elemento (el de ms a la izquierda)


especifica el tipo de fichero. Los valores posibles son 'd', si hace referencia a un
directorio, vaco ('-'), si hace referencia a un fichero regular y 'l' si hace referencia a
8

Sistemas Operativos y Programacin

Grado en Ingeniera Elctrica

un enlace (que es el equivalente al acceso directo de Windows). El resto de los


elementos son los llamados bits de proteccin. Estn compuestos por tres secuencias
contiguas de valores 'r', 'w' y 'x'. El significado de estas secuencias y sus valores lo
estudiaremos ms adelante, en otra prctica.
Nmero de enlaces: Para ficheros, indica los nombres distintos dados al mismo
fichero fsico (ya que Unix/Linux permite dar varios nombres a un mismo fichero).
Para el caso de directorios, este nmero coincide con el nmero de subdirectorios
existentes en ese directorio ms dos. Es decir, si el directorio no tiene
subdirectorios, su nmero de enlaces es 2, si tiene un subdirectorio su nmero sera
3, y as sucesivamente.
Nombre propietario: Indica el nombre del propietario del fichero.
Nombre grupo: Un conjunto de usuarios puede formar parte de un grupo con una
serie de caractersticas en comn. Este campo hace referencia al grupo al que
pertenece el usuario.
Tamao fichero: Muestra el tamao de fichero en bytes.
Fecha y hora de la ltima modificacin: Hace referencia a la hora en que el
fichero fue modificado por ltima vez.

La ordenacin de los ficheros por defecto es en forma alfabtica ascendente. Si


deseamos efectuar una ordenacin por fechas podemos utilizar, junto con los
modificadores anteriores, el modificador -t (por defecto primero los ms nuevos) y si
adems queremos invertir el orden (primero los ms antiguos) aadimos el modificador
-r. Ejemplo:
$ ls t
$ ls t r

Ordena de ms nuevo a ms antiguo


Ordena de ms antiguo a ms nuevo

La opcin -R (mayscula) lista recursivamente un conjunto de directorios, bien a partir


del directorio donde nos encontramos o bien a partir del directorio que le pasemos como
argumento. Por ejemplo:
$ ls . R

Lista el contenido del directorio y de sus subdirectorios

Finalmente, el nombre de un fichero o de un directorio se puede referenciar de forma


relativa o absoluta.
Forma relativa: El nombre hace referencia a ficheros o directorios desde el directorio
en el que nos encontramos.
Ejemplo: ./prueba1
Forma absoluta: El nombre hace referencia a todo el camino desde la raz.
Ejemplo: /Users/eargente/prueba1

Sistemas Operativos y Programacin

Grado en Ingeniera Elctrica

EJERCICIO: Sitese en su directorio de trabajo y muestre por pantalla la ruta absoluta


de dicho directorio y tambin su contenido. Anote aqu todas las rdenes que haya
ejecutado y sus resultados:
4

EJERCICIO: Sitese en el directorio raz y consulte todos los directorios y


subdirectorios que contiene. Indique aqu las rdenes que ha empleado para ello y
muestre parte de los resultados obtenidos:
5

10

Sistemas Operativos y Programacin

Grado en Ingeniera Elctrica

3. RDENES BSICAS DE GESTIN DE FICHEROS


3.1 CREACIN DE FICHEROS
Para crear ficheros de tipo texto, Unix o Linux nos ofrecen distintos programas Editores
de texto, entre los que destacan: vi, emacs.
En estas prcticas estamos trabajando con un intrprete de rdenes Unix, pero desde el
sistema operativo Windows. Por tanto, no disponemos de los editores de texto tpicos de
entornos Unix, pero s de los de entorno Windows, como el Bloc de Notas, el
Notepad, etc. Podemos hacer uso de dichos editores para crear nuestros ficheros. El
problema es que, al ser editores para el sistema operativo Windows y no para el sistema
Unix (o para Linux), estos editores guardan en el fichero determinados smbolos y
caracteres ocultos (como el retorno de carro, la tabulacin), que no son entendibles
desde el entorno de sistemas de tipo Unix. Como solucin, existen dos rdenes que nos
permiten traducir un fichero de texto, creado en un entorno Windows (o MS-DOS) a
un entorno Unix, y viceversa.
ORDEN dos2unix: convierte un fichero (generado en un sistema Windows) a un
fichero con formato entendible por un sistema Unix.
Por ejemplo, si queremos convertir el fichero mifich.txt escrito con el Bloc de Notas
de Windows a un formato entendible por sistemas Unix, escribiremos:
$ dos2unix mifich.txt
ORDEN unix2dos: convierte un fichero generado en un sistema Unix a un fichero
con formato entendible por un sistema Windows.
Por ejemplo, si queremos convertir el fichero mifich generado en Unix a un formato
entendible en Windows (y as poder abrirlo en el Bloc de Notas sin problemas de
visualizacin de caracteres extraos), escribiremos:
$ unix2dos mifich
Por otro lado, podemos crear un fichero inicialmente vaco con la orden touch y luego ir
aadindole informacin mediante redirecciones (que se explicarn en prcticas
posteriores).
ORDEN touch: actualiza los tiempos de acceso y modificacin del fichero a la hora
actual. En caso de no existir el fichero, lo crea.
Ejemplo:
$ touch mifich

11

Sistemas Operativos y Programacin

Grado en Ingeniera Elctrica

3.2 VISUALIZACIN DE FICHEROS


Debido a que tanto Unix como Linux son sistemas operativos de gran tamao y con
gran cantidad de comandos, existen mltiples rdenes de visualizacin del contenido de
ficheros. En este punto vamos a practicar las ms importantes.
ORDEN cat: se utiliza para visualizar el contenido de un fichero. Lgicamente el tipo
de ficheros a visualizar debe ser de texto, ya que si utilizamos la orden con un fichero
ejecutable la salida sera ilegible.
Por ejemplo, para mostrar el contenido del fichero profile (que es el fichero de
configuracin por defecto del shell, y que se encuentra en el directorio /etc)
escribiramos:
$ cat /etc/profile
Si el fichero no cabe en pantalla podemos utilizar las rdenes <Crtl>-S (para detener la
salida) y <Crtl>-Q (para reanudarla)
La orden cat permite listar varios ficheros secuencialmente. Si tenemos dos ficheros
llamados fichero1 y fichero2, la orden:
$ cat fichero1 fichero2
lista en primer lugar el fichero fichero1 y a continuacin fichero2.
ORDEN more: esta orden da ms control que la anterior, ya que automticamente
lista un fichero y cuando llena la pantalla (lista tantas lneas como el tamao de la
pantalla) se para, esperando que pulsemos la tecla espacio para continuar mostrando el
contenido, o bien que pulsemos la tecla q para terminar. Por ejemplo:
$ more /etc/profile
La orden more tiene varias opciones interesantes:
Con el modificador d, muestra un mensaje de ayuda recordando las teclas que
podemos pulsar (i.e. espacio, q, h) para hacer que la orden more contine, termine o
bien muestre su ayuda.
Con el modificador +n, lista el fichero a partir de la lnea n.
Ejemplo:
$ more +5 /etc/profile
Esto nos mostrar el fichero a partir de su quinta lnea (es decir, no nos mostrar las 5
primeras lneas del fichero, pero s el resto).

12

Sistemas Operativos y Programacin

Grado en Ingeniera Elctrica

ORDEN tail: permite visualizar el final de un fichero. Por defecto visualiza las 10
ltimas lneas. As por ejemplo:
$ tail /etc/profile
muestra las ltimas 10 lneas del fichero /etc/profile.
La orden tail tambin ofrece varias opciones interesantes:
Con el modificador num (siendo num un nmero), muestra las ltimas num
lneas del fichero. Por ejemplo, si queremos mostrar las ltimas 3 lneas del fichero
/etc/profile escribiramos:
$ tail -3 /etc/profile
Con el modificador n +num (siendo num un nmero), muestra el final del
fichero a partir de la lnea num. Por ejemplo, si queremos visualizar el contenido
del fichero /etc/profile a partir de la lnea 2 escribiramos:
$ tail n +2 /etc/profile

ORDEN head: permite visualizar el principio de un fichero. Por defecto visualiza las
10 primeras lneas. Funciona de forma similar a la orden tail. As, por ejemplo:
$ head /etc/profile
muestra las 10 primeras lneas del fichero /etc/profile.
En este caso, tanto el modificador num como n +num realizan la misma funcin, es
decir, muestran las num primeras lneas del fichero. Por ejemplo:
$ head -5 /etc/profile
$ head n +5 /etc/profile
En ambos casos muestra las 5 primeras lneas del fichero /etc/profile.

EJERCICIO: Genere un nuevo fichero en blanco (con la orden touch), edite dicho
fichero con el Bloc de Notas de Windows y aada el contenido que desee (incluya al
menos unas 15 lneas), convirtalo a continuacin a formato entendible por un sistema
Unix (con la orden dos2unix) y visualice su contenido utilizando ejemplos de todas
las rdenes presentadas anteriormente, es decir, con las rdenes cat, more, tail y head,
respectivamente, probando tambin sus diferentes opciones.
Indique a continuacin todas las rdenes empleadas y los resultados obtenidos. Puede
incluir tambin comentarios sobre las diferencias que se observan entre las distintas
rdenes.
6

13

Sistemas Operativos y Programacin

Grado en Ingeniera Elctrica

3.3 COPIA, MOVIMIENTO Y RENOMBRADO DE FICHEROS


ORDEN cp: esta orden copia un fichero. El primer argumento del mandato es el
fichero origen y el segundo el fichero (o directorio) destino. Ejemplo:
$ cp /etc/profile miprofile
Dicha orden copia el fichero /etc/profile a nuestro directorio actual y con el
nombre miprofile.
Esto es equivalente a utilizar el mandato:
$ cp /etc/profile ./miprofile
Recordemos que . es nuestro directorio actual.
Tambin podemos efectuar la copia a un directorio concreto. As, la siguiente orden
copia el fichero /etc/profile dentro del directorio prueba3 y le asigna el mismo
nombre (es decir, profile).
$ cp /etc/profile prueba3
La orden cp tambin copia directorios. Lgicamente, nos interesar copiar tanto un
directorio como su contenido. Para esto utilizamos el modificador recursivo -R.
$ cp -R prueba3 midir
ORDEN mv: esta orden mueve ficheros entre diferentes directorios. Si se usa sobre el
mismo directorio el efecto obtenido consiste en cambiar el nombre al fichero.
Por ejemplo, el siguiente mandato cambia el nombre del fichero miprofile a
nuevo_profile:
$ mv miprofile nuevo_profile
Y el siguiente mandato coloca el fichero nuevo_profile en el directorio midir :
$ mv nuevo_profile midir
Podemos comprobarlo utilizando el mandato ls midir que devolver el contenido
del directorio midir. La orden mv ha cambiado el fichero de sitio (ha movido el
fichero). Si ejecutamos la orden ls directamente podremos observar que el fichero
nuevo_profile ha desaparecido del directorio en el que se encontraba.
Si el fichero destino al que copiamos o movemos ya existe y no tiene permisos de
escritura entonces el sistema nos pide confirmacin. Los permisos del fichero copiado o
movido son los mismos que los del fichero original. Estudiaremos los permisos ms
adelante en prximas prcticas.

14

Sistemas Operativos y Programacin

Grado en Ingeniera Elctrica

EJERCICIO: Realice todas las rdenes de copiado, movimiento y/o renombrado de


ficheros que se han indicado en este apartado. Anote a continuacin los resultados
obtenidos:
7

3.4 BORRADO DE FICHEROS


ORDEN rm: esta orden suprime un fichero de un directorio.
$ rm profile
Vale la pena resaltar algunas de las opciones que admite la orden rm:
-i : Opcin interactiva. Solicita la confirmacin del usuario antes de proceder al
borrado.
$ rm -i fichero1
rm: remove fichero1?

-r : Opcin recursiva. Borra recursivamente todos los directorios y subdirectorios


del nivel que estamos y de los niveles inferiores. Ojo! Esta orden es muy peligrosa.
Mejor no utilizarla nunca, especialmente si no pedimos la confirmacin.

EJERCICIO: Realice la siguiente secuencia de acciones. Indique a continuacin las


rdenes que ha empleado para ello y muestre los resultados de ejecutarlas:
a) Cree un fichero vaco llamado mifich. Muvalo al directorio prueba1, con el nombre
mifichNombre, donde Nombre es su nombre de pila. Y liste el contenido del
directorio prueba1 para comprobar que el fichero se ha movido a all.
b) Copie el fichero /etc/profile a su directorio de trabajo. Muestre sus 5 primeras lneas.
Y finalmente renmbrelo como profileNombre, donde Nombre es su nombre de pila.
8

15

Sistemas Operativos y Programacin

Grado en Ingeniera Elctrica

4. OTROS ASPECTOS SOBRE FICHEROS Y DIRECTORIOS


4.1 REGLAS PARA NOMBRAR FICHEROS
Los nombres de los ficheros estn formados por caracteres. Su nmero vara entre los
diferentes sistemas UNIX (en algunos hasta 14, y en otros hasta 255). Los caracteres
vlidos pueden ser cualesquiera en teora. En la prctica hay algunos que debemos
evitar:
; < > $ | * ?
ya que estos caracteres tienen un significado especial dentro de los comandos de
sistemas Unix.
Como regla general se trata de utilizar los caracteres alfabticos, numricos, el guin
inferior (_) y el (.). Este ltimo no se ha de utilizar como primer carcter del nombre de
un fichero a no ser que queramos ocultarlo. Unix oculta los nombres de fichero que
comienzan con . excepto si utilizamos la orden ls -a.
Ejemplos de nombres correctos:
practica.c
mi_practica
practica3
Ejemplos de nombres incorrectos:
practica*
>practica
prac|tica
4.2 CARACTERES COMODINES
A veces es interesante referenciar ficheros que tengan en su nombre caractersticas
comunes. Por ejemplo: Todos los ficheros que empiezan por la letra c.... En Unix o
Linux esto se consigue utilizando caracteres especiales (llamados metacaracteres o
comodines) que representan lo siguiente:
El carcter asterisco * representa a cualquier cadena de caracteres arbitraria
incluyendo la cadena vaca.
La interrogacin ? representa a cualquier carcter simple.
Los corchetes [ ] pueden contener un grupo o rango de caracteres y corresponden a
un carcter simple.
El shell o intrprete de rdenes interpreta estos caracteres antes de ejecutar las rdenes.
De este modo, sustituye dichos caracteres comodines por los nombres de los ficheros
existentes en el directorio actual, y estos nombres son pasados como argumentos.
Ejemplos: Vamos a utilizar la orden ls, aunque en principio los comodines se pueden
aplicar a cualquier orden.
$ ls
$ ls *.*
$ ls a /bin
$ ls copia?
$ ls /bin/[a-c]*
$ ls /bin/[ac]*
Todas estas opciones pueden ser combinadas entre s.
16

Sistemas Operativos y Programacin

Grado en Ingeniera Elctrica

EJERCICIO: Ejecute las rdenes anteriores del mandato ls y pruebe otras diferentes
combinaciones de metacaracteres. Anote a continuacin sus observaciones sobre los
resultados obtenidos.
9

4.4 EVITANDO LA INTERPRETACIN DE LOS METACARACTERES


El shell no interpreta los caracteres encerrados entre comillas o antecedidos por la barra
invertida (\), lo que permite escribir un mandato en varias lneas. Por ejemplo:
$echo *
$echo Los ficheros * estan en el directorio actual.
$echo Los ficheros \*\ son * y estan en el directorio
actual.
$ echo \
aqu \
hay \
cuatro \
argumentos
$ echo Se puede usar el intro
> dentro de comillas
EJERCICIO: Ejecute las cinco rdenes echo anteriores, tal y como se muestra en el
boletn. Anote a continuacin el resultado de dicha ejecucin:
10

EJERCICIO: Ejecute de nuevo las cinco rdenes echo anteriores, pero esta vez no
incluya ninguna comilla ni barra invertida. Muestre a continuacin qu obtiene (o bien
explique los problemas de ejecucin encontrados):
11

17

Sistemas Operativos y Programacin

Grado en Ingeniera Elctrica

TABLA RESUMEN Introduccin al shell de Unix / Linux


Orden

Descripcin

Ejemplos
($ es el prompt del sistema)

Muestra el manual de ayuda sobre la orden


indicada.

$ man ls

date

Muestra la fecha y hora del sistema.

$ date

echo

Muestra por pantalla el mensaje que se le


pasa.

$ echo Hola mundo

mkdir

Crea uno o varios directorios.

$ mkdir prueba1

rmdir

Elimina un directorio (que debe estar vaco).

$ rmdir prueba1

Indica cul es el directorio actual.

$ pwd

man

pwd

cd

ls
touch

cat

more

Permite cambiar de directorio:


- a un directorio especfico
- al directorio de trabajo
- al directorio de nivel superior
Muestra el contenido de un directorio
(indicando los ficheros que contiene).
Crea un fichero vaco.
Actualiza los tiempos de acceso y ltima
modificacin de un fichero ya existente.
Muestra el contenido de un fichero regular.
Permite mostrar el contenido de varios
ficheros secuencialmente.
Muestra el contenido de un fichero regular, y
se para cuando se llena la pantalla, esperando
a que se pulse la tecla espacio para
continuar.

$ cd ./prueba1
$ cd
$ cd ..
$ ls
$ ls -l
$ touch mifich

$ cat /etc/profile
$ cat fichero1 fichero2

$ more /etc/profile

tail

Muestra las ltimas (10) lneas de un fichero.

head

Muestra las primeras (10) lneas de un


fichero.

$
$
$
$

cp

Copia un fichero.

$ cp /etc/profile miprofile

mv

Mueve un fichero entre diferentes


directorios. Tambin permite cambiar el
nombre de un fichero.

$ mv miprofile ./prueba1
$ mv fich newfich

rm

Borra un fichero de un directorio.

$ rm miprofile

Convierte un fichero de un sistema Windows


a un formato entendible en un sistema Unix.
Convierte un fichero de un sistema Unix a un
unix2dos
formato entendible por un sistema Windows.
dos2unix

tail
tail
head
head

/etc/profile
-5 /etc/profile
/etc/profile
-5

$ dos2unix mifich.txt
$ unix2dos mifich

18

Potrebbero piacerti anche