42
2008 Escuela de Informática y Telecomunicaciones, DuocUC Escuela de Informática y Telecomunicaciones Clase 5: Comandos de manipulación de Directorios y Redireccionamientos Nombre unidad de aprendizaje: Introducción al LINUX Programación Aplicada

2008 Escuela de Informática y Telecomunicaciones, DuocUC Escuela de Informática y Telecomunicaciones Clase 5: Comandos de manipulación de Directorios y

Embed Size (px)

Citation preview

Page 1: 2008 Escuela de Informática y Telecomunicaciones, DuocUC Escuela de Informática y Telecomunicaciones Clase 5: Comandos de manipulación de Directorios y

2008 Escuela de Informática y Telecomunicaciones, DuocUC

Escuela deInformática y Telecomunicaciones

Clase 5: Comandos de manipulación de Directorios y Redireccionamientos

Nombre unidad de aprendizaje: Introducción al LINUX

Programación Aplicada

Page 2: 2008 Escuela de Informática y Telecomunicaciones, DuocUC Escuela de Informática y Telecomunicaciones Clase 5: Comandos de manipulación de Directorios y

2© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Objetivos

Objetivos de la clase

Identifica sistemas de archivos y comandos del sistema operativo para inclusión en programas realizados en el ambiente de programación del intérprete de comandos Bash.

Page 3: 2008 Escuela de Informática y Telecomunicaciones, DuocUC Escuela de Informática y Telecomunicaciones Clase 5: Comandos de manipulación de Directorios y

3© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Desarrollo

Comandos LINUX de manipulación de directorios

LS - Para desplegar información acerca del contenido de un directorio se utiliza el comando ls (que viene de LiSt). Descubrirá que es uno de los comandos de LINUX que se usan con mayor frecuencia, por lo tanto, existen muchas opciones para controlar su salida.

La función básica de ls es desplegar una lista alfabética de los nombres de archivos en un directorio.

Page 4: 2008 Escuela de Informática y Telecomunicaciones, DuocUC Escuela de Informática y Telecomunicaciones Clase 5: Comandos de manipulación de Directorios y

4© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Desarrollo

Comandos LINUX de manipulación de directorios

Por ejemplo, para listar los archivos del directorio /home, usar: ls /home.

Cualquier archivo cuyo nombre comience con un “.” se denomina ARCHIVO OCULTO. Los nombres de los archivos ocultos, por ejemplo, .bash_profile, no se enlistan cuando se usa el comando ls, a menos que se emplee la opción -a (all o todos).

Page 5: 2008 Escuela de Informática y Telecomunicaciones, DuocUC Escuela de Informática y Telecomunicaciones Clase 5: Comandos de manipulación de Directorios y

5© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Desarrollo

Comandos LINUX de manipulación de directorios

Para desplegar la mayor información posible acerca de un directorio o archivo, se usa el comando ls con la opción -l (larga). La salida consiste en un resumen del almacenamiento en disco seguido de una línea por archivo.

Por ejemplo, consideremos:

[alumno@localhost ~]$ ls –l datos-rw-r--r-- 1 alumno alumno 2255 Aug 3 20:30 datos

Page 6: 2008 Escuela de Informática y Telecomunicaciones, DuocUC Escuela de Informática y Telecomunicaciones Clase 5: Comandos de manipulación de Directorios y

6© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Desarrollo

Comandos LINUX de manipulación de directorios

En el extremo izquierdo de cada línea, el primer caracter indica el tipo de archivo (existen varias posibilidades, pero las que por el momento interesan son “d”, que significa directorio, y “-”, que quiere decir archivo ordinario).

A continuación se especifican los PERMISOS que los distintos tipos de usuarios tiene sobre dicho archivo.

Page 7: 2008 Escuela de Informática y Telecomunicaciones, DuocUC Escuela de Informática y Telecomunicaciones Clase 5: Comandos de manipulación de Directorios y

7© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Desarrollo

Comandos LINUX de manipulación de directorios

A continuación , se muestra un número que indica cuántos enlaces existen para ese archivo, seguido del identificador de usuario del dueño del archivo y su grupo, el tamaño del archivo en bytes, la fecha y hora en que se modificó el archivo por última vez, y por último, el nombre del archivo.

Page 8: 2008 Escuela de Informática y Telecomunicaciones, DuocUC Escuela de Informática y Telecomunicaciones Clase 5: Comandos de manipulación de Directorios y

8© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Desarrollo

Comandos LINUX de manipulación de directorios

Si lo que se quiere es ver detalles de un directorio, y no de su contenido, se debe usar ls con la opción -d, por ejemplo, ls -ld /home.

Con ls es posible obtener un listado “recursivo” de los archivos del directorio y subdirectorios incluidos por medio de la opción -R, por ejemplo, ls -R /home.

Page 9: 2008 Escuela de Informática y Telecomunicaciones, DuocUC Escuela de Informática y Telecomunicaciones Clase 5: Comandos de manipulación de Directorios y

9© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Desarrollo

Comandos LINUX de manipulación de directorios

Otras opciones de ls son: -s para listar junto con los nombre de archivos su tamaño (size) en bloques, -i para listar junto con los nombre de archivos su número de i-node, -F para llevar a cabo una categorización de los archivos, etc.

La opción -F agrega a los nombres de archivos en el listado marcas como un “*” para los archivos ejecutables y “/” para los directorios.

Page 10: 2008 Escuela de Informática y Telecomunicaciones, DuocUC Escuela de Informática y Telecomunicaciones Clase 5: Comandos de manipulación de Directorios y

10© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Desarrollo

Comandos LINUX de manipulación de directorios

CD - Para cambiar su directorio de trabajo, utilice el comando cd (change directory o cambiar directorio).

Por ejemplo, para pasar al directorio /bin utilice: cd /bin.

Si emplea el comando cd sin un nombre de directorio, por defecto, lo lleva a su directorio propio (cd es equivalente a cd $HOME).

Page 11: 2008 Escuela de Informática y Telecomunicaciones, DuocUC Escuela de Informática y Telecomunicaciones Clase 5: Comandos de manipulación de Directorios y

11© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Desarrollo

Comandos LINUX de manipulación de directorios

Un directorio que contiene otro directorio se denomina DIRECTORIO PRINCIPAL. Cuando se pasa de un directorio a un directorio principal, el último se designa con ".." en la mayoría de los sistemas.

Se debe escribir cd .. en LINUX para acceder a un directorio principal.

El directorio actual suele denotarse por “.”.

Page 12: 2008 Escuela de Informática y Telecomunicaciones, DuocUC Escuela de Informática y Telecomunicaciones Clase 5: Comandos de manipulación de Directorios y

12© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Desarrollo

Comandos LINUX de manipulación de directorios

PWD - Para desplegar el nombre de su directorio de trabajo, utilice el comando pwd (print working directory o imprimir el directorio de trabajo).

[alumno@localhost ~]$ pwd/home/alumno[alumno@localhost ~]$ cd tarea[alumno@localhost ~]$ pwd/home/alumno/tarea

Page 13: 2008 Escuela de Informática y Telecomunicaciones, DuocUC Escuela de Informática y Telecomunicaciones Clase 5: Comandos de manipulación de Directorios y

13© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Desarrollo

Comandos LINUX de manipulación de directorios

MKDIR - Para crear un directorio utilice el comando mkdir (make directory o hacer directorio).

Por ejemplo, para crear un directorio llamado extra dentro de su directorio de trabajo use: mkdir extra.

La opción -m permite establecer los permisos de los directorios creados.

Page 14: 2008 Escuela de Informática y Telecomunicaciones, DuocUC Escuela de Informática y Telecomunicaciones Clase 5: Comandos de manipulación de Directorios y

14© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Desarrollo

Comandos LINUX de manipulación de directorios

La opción -p permite crear los directorios padre que falten para cada argumento del directorio.

RMDIR - Para borrar o remover un directorio emplee el comando rmdir (remove directory o remover directorio).

Por ejemplo, para borrar el directorio extra de su directorio de trabajo use: rmdir extra.

Page 15: 2008 Escuela de Informática y Telecomunicaciones, DuocUC Escuela de Informática y Telecomunicaciones Clase 5: Comandos de manipulación de Directorios y

15© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Desarrollo

Comandos LINUX de manipulación de directorios

Cuando borre un directorio, LINUX lo obliga a seguir dos reglas importantes. Primera: no puede borrarlo a menos que se encuentre vacío. Esta es una medida de seguridad.

La segunda regla para borrar directorios especifica que no puede borrar ningún directorio que se encuentre dentro de su directorio de trabajo y de su directorio raíz.

Page 16: 2008 Escuela de Informática y Telecomunicaciones, DuocUC Escuela de Informática y Telecomunicaciones Clase 5: Comandos de manipulación de Directorios y

16© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Desarrollo

Comandos LINUX de manipulación de directorios

Quizás haya ocasiones en que en realidad quiera borrar un directorio que no está vacío. Durante esa operación, puede emplear el comando rm con la opción –r.

Page 17: 2008 Escuela de Informática y Telecomunicaciones, DuocUC Escuela de Informática y Telecomunicaciones Clase 5: Comandos de manipulación de Directorios y

17© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Desarrollo

ALIAS de comandos en LINUX

Los ALIAS permiten dar nombres alternativos (mas fáciles de recordar, más cortos,…) a los comandos LINUX.

En LINUX los ALIAS se definen por medio del comando alias, de acuerdo con la siguiente sintaxis:

alias nombre_de_alias=“comando_LINUX”

Page 18: 2008 Escuela de Informática y Telecomunicaciones, DuocUC Escuela de Informática y Telecomunicaciones Clase 5: Comandos de manipulación de Directorios y

18© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Desarrollo

ALIAS de comandos en LINUX

Por ejemplo, para definir un alias que permita listar solo los subdirectorios del directorio actual, usaremos: alias sd=“ls -l ¦ grep ^d”.

Ahora ejecutar sd será equivalente a ejecutar ls -l ¦ grep ^d.

Si queremos que el alias esté siempre disponible debemos agregarlo a un archivo que se ejecute al inicio de sesión, por ejemplo, al archivo .bash_profile.

Page 19: 2008 Escuela de Informática y Telecomunicaciones, DuocUC Escuela de Informática y Telecomunicaciones Clase 5: Comandos de manipulación de Directorios y

19© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Desarrollo

ALIAS de comandos en LINUX

Para eliminar un alias previamente definido, se utiliza el comando unalias, así, por ejemplo, la orden unalias sd elimina el alias sd creado previamente.

Page 20: 2008 Escuela de Informática y Telecomunicaciones, DuocUC Escuela de Informática y Telecomunicaciones Clase 5: Comandos de manipulación de Directorios y

20© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Desarrollo

E/S estándar y descriptores de archivos en LINUX

La ENTRADA Y SALIDA ESTÁNDAR es la capacidad del INTÉRPRETE DE COMANDOS o SHELL para controlar y dirigir la entrada de datos de los programas, la salida de información útil y la información de errores.

Cuando se ejecuta un programa en LINUX se abre automáticamente tres archivos de E/S para ellos. Estos son: la entrada estándar, la salida estándar y el error estándar.

Page 21: 2008 Escuela de Informática y Telecomunicaciones, DuocUC Escuela de Informática y Telecomunicaciones Clase 5: Comandos de manipulación de Directorios y

21© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Desarrollo

E/S estándar y descriptores de archivos en LINUX

Page 22: 2008 Escuela de Informática y Telecomunicaciones, DuocUC Escuela de Informática y Telecomunicaciones Clase 5: Comandos de manipulación de Directorios y

22© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Desarrollo

E/S estándar y descriptores de archivos en LINUX

ENTRADA ESTÁNDAR (STDIN) o DESCRIPTOR DE ARCHIVO 0 - El descriptor de archivo STDIN está asociado al dispositivo estándar de entrada de texto, que por defecto es el teclado.

La ENTRADA ESTÁNDAR se refiere al medio desde el cual el comando, archivo o proceso recibe la información.

Page 23: 2008 Escuela de Informática y Telecomunicaciones, DuocUC Escuela de Informática y Telecomunicaciones Clase 5: Comandos de manipulación de Directorios y

23© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Desarrollo

E/S estándar y descriptores de archivos en LINUX

SALIDA ESTÁNDAR (STDOUT) o DESCRIPTOR DE ARCHIVO 1 - El descriptor de archivo STDOUT está asociado al dispositivo estándar de salida de texto normal de los programas, que por defecto es la pantalla.

La SALIDA ESTÁNDAR se refiere al lugar que el comando, archivo o proceso envía la salida.

Page 24: 2008 Escuela de Informática y Telecomunicaciones, DuocUC Escuela de Informática y Telecomunicaciones Clase 5: Comandos de manipulación de Directorios y

24© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Desarrollo

E/S estándar y descriptores de archivos en LINUX

ERROR ESTÁNDAR (STDERR) o DESCRIPTOR DE ARCHIVO 2 - El descriptor de archivo STDERR también es una salida de texto, pero se usa exclusivamente para mostrar los errores generados por los programas. Pordefecto también está asociado al terminal de pantalla.

Page 25: 2008 Escuela de Informática y Telecomunicaciones, DuocUC Escuela de Informática y Telecomunicaciones Clase 5: Comandos de manipulación de Directorios y

25© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Desarrollo

Redireccionamientos en LINUX

Como ya se había mencionado anteriormente, por defecto la SALIDA ESTÁNDAR está conectada a la pantalla, la ENTRADA ESTÁNDAR al teclado, y el ERROR ESTÁNDAR a la pantalla.

Es posible reasignar estos destinos (y otros archivos abiertos) antes de ejecutar el programa, en lo que se conoce como REDIRECCIÓN DE E/S.

Page 26: 2008 Escuela de Informática y Telecomunicaciones, DuocUC Escuela de Informática y Telecomunicaciones Clase 5: Comandos de manipulación de Directorios y

26© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Desarrollo

Redireccionamientos en LINUX

El REDIRECCIONAMIENTO simplemente indica capturar salida desde un archivo, comando, programa, SCRIPT, o un bloque de código dentro de un SCRIPT y enviarlo como entrada a otro archivo, comando, programa o SCRIPT.

El símbolo para REDIRECCIONAR LA ENTRADA es “<“ y se utiliza como:

comando < nombre_archivo

Page 27: 2008 Escuela de Informática y Telecomunicaciones, DuocUC Escuela de Informática y Telecomunicaciones Clase 5: Comandos de manipulación de Directorios y

27© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Desarrollo

Redireccionamientos en LINUX

Por ejemplo, la orden sort<listado ordena alfabéticamente el contenido del archivo listado y lo despliega en pantalla.

Por ejemplo, el comando cat, si no recibe argumentos, lee desde el teclado por la ENTRADA ESTÁNDAR y lo pasa a la SALIDA ESTÁNDAR:

[alumno@localhost ~]$ catHola mundo!!Hola mundo!!^D

Page 28: 2008 Escuela de Informática y Telecomunicaciones, DuocUC Escuela de Informática y Telecomunicaciones Clase 5: Comandos de manipulación de Directorios y

28© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Desarrollo

Redireccionamientos en LINUX

Otra facilidad para REDIRECCIONAR ENTRADA ESTÁNDAR es “<<“, que después de un comando, permite ingresar, por teclado, un texto que se constituirá en la ENTRADA ESTÁNDAR. A continuación de “<<“ debe ponerse una palabra, que indicará el fin de la entrada. La ENTRADA ESTÁNDAR constará de las líneas que se digiten a continuación hasta la primera que contenga sólo la palabra que indicaba el fin de la entrada.

Page 29: 2008 Escuela de Informática y Telecomunicaciones, DuocUC Escuela de Informática y Telecomunicaciones Clase 5: Comandos de manipulación de Directorios y

29© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Desarrollo

Redireccionamientos en LINUX

Por ejemplo:

[alumno@localhost ~]$ sort<<END>Chile>Perú>Brasil>ENDBrasil Chile Perú

Page 30: 2008 Escuela de Informática y Telecomunicaciones, DuocUC Escuela de Informática y Telecomunicaciones Clase 5: Comandos de manipulación de Directorios y

30© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Desarrollo

Redireccionamientos en LINUX

Los tabuladores se eliminan de la entrada en el caso de usar la redirección “<<-” y se mantienen con “<<“.

El operador de REDIRECCIÓN DE SALIDA “>” permite cambiar la SALIDA ESTÁNDAR de un comando o programa.

Por ejemplo:

[alumno@localhost ~]$ date +%D > fecha

Page 31: 2008 Escuela de Informática y Telecomunicaciones, DuocUC Escuela de Informática y Telecomunicaciones Clase 5: Comandos de manipulación de Directorios y

31© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Desarrollo

Redireccionamientos en LINUX

Envía la fecha actual al archivo fecha en vez de a pantalla.

También podemos cambiar a la vez entrada y salida estándar de un comando o programa usando ambos operadores de redirección.

Por ejemplo, sort<listado>listado_ordenado, permitirá que sort ordene el archivo listado y envíe dicho contenido ordenado al archivo listado_ordenado.

Page 32: 2008 Escuela de Informática y Telecomunicaciones, DuocUC Escuela de Informática y Telecomunicaciones Clase 5: Comandos de manipulación de Directorios y

32© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Desarrollo

Redireccionamientos en LINUX

Cuando se utiliza “>” hay que tener mucho cuidado de no borrar un archivo sobreescribiéndolo. Cuando se utilizan redirecciones, debido a su utilidad en los scripts, "no se realizan confirmaciones". Así, si el archivo a escribir ya existe desde antes, el redireccionador “>” lo sobreescribe con flujo de texto nuevo.

Page 33: 2008 Escuela de Informática y Telecomunicaciones, DuocUC Escuela de Informática y Telecomunicaciones Clase 5: Comandos de manipulación de Directorios y

33© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Desarrollo

Redireccionamientos en LINUX

En cambio el operador “>>” realiza un agregado de texto en el flujo existente.

También se podrá REDIRECCIONAR EL ERROR ESTÁNDAR para que no salga en pantalla. Si quisiéramos realizar un listado de un directorio y, en caso de producirse un error, este fuese redirigido a un archivo, usaremos la siguiente orden: ls /bin 2>/tmp/error.ls.

Page 34: 2008 Escuela de Informática y Telecomunicaciones, DuocUC Escuela de Informática y Telecomunicaciones Clase 5: Comandos de manipulación de Directorios y

34© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Desarrollo

Redireccionamientos en LINUX

Esta simple redirección solo tendría efecto sobre el ERROR ESTÁNDAR (STDERR). Con esta redirección los posibles errores serían redirigidos al archivo /tmp/error.ls.

Si quisiéramos dividir tanto la salida por pantalla como el error en dos archivos separados podemos hacerlo de esta manera: ls /bin 1>/tmp/salida 2>/tmp/error.ls.

Page 35: 2008 Escuela de Informática y Telecomunicaciones, DuocUC Escuela de Informática y Telecomunicaciones Clase 5: Comandos de manipulación de Directorios y

35© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Desarrollo

Redireccionamientos en LINUX

Muchas veces no se quiere que un programa muestre mensajes en la consola del usuario, en este caso es muy común redirigir su SALIDA ESTÁNDAR y SALIDA DE ERRORES ESTÁNDAR al archivo /dev/null, por ejemplo: gcc *.cpp > /dev/null 2> /dev/null.

Otro operador útil es el OPERADOR DE REDIRECCIÓN 2>> el que se usa para almacenar los conocidos logs de errores.

Page 36: 2008 Escuela de Informática y Telecomunicaciones, DuocUC Escuela de Informática y Telecomunicaciones Clase 5: Comandos de manipulación de Directorios y

36© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Desarrollo

Entubamientos (piping) en LINUX

El sistema LINUX permite transferir datos entre diferentes procesos. Este proceso se llama "piping", pues "pipe" es el nombre que se le da al símbolo utilizado para transferir datos.

El símbolo para "piping" es “¦” y se utiliza de la siguiente manera:

procesoA ¦ procesoB ¦ procesoC ¦ …

Page 37: 2008 Escuela de Informática y Telecomunicaciones, DuocUC Escuela de Informática y Telecomunicaciones Clase 5: Comandos de manipulación de Directorios y

37© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Desarrollo

Entubamientos (piping) en LINUX

Desde el punto de vista de un programa no hay diferencia entre leer texto guardado en un archivo o introducido mediante el teclado, escribir un texto en un archivo o en la pantalla del terminal, etc.

Extendiendo esta idea es también posible enlazar la salida de un programa con laentrada de otro. Esta operación se puede realizar mediante una tubería (pipe) queune dos (o más) comandos en uno solo.

Page 38: 2008 Escuela de Informática y Telecomunicaciones, DuocUC Escuela de Informática y Telecomunicaciones Clase 5: Comandos de manipulación de Directorios y

38© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Desarrollo

Entubamientos (piping) en LINUX

Un ejemplo clásico de piping es cuando se requiere listar un directorio que ocupa más de una pantalla. Se podrá entonces utilizar el comando para listar ls y enviar su salida a otro programa que lo muestre de a una página de pantalla por vez, por ejemplo el more.

Page 39: 2008 Escuela de Informática y Telecomunicaciones, DuocUC Escuela de Informática y Telecomunicaciones Clase 5: Comandos de manipulación de Directorios y

39© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Desarrollo

Entubamientos (piping) en LINUX

Así, podemos usar: ls -l ¦ more.

Si deseamos obtener el listado de archivos regulares desde mi directorio, podemos usar: ls -l ¦ grep “^-”.

El siguiente ejemplo muestra una orden compuesta que ordena todos los archivos con extensión ".txt", elimina las líneas duplicadas y guarda los datos en el archivo resultado.sal: cat *.txt ¦ sort ¦ uniq > resultado.sal.

Page 40: 2008 Escuela de Informática y Telecomunicaciones, DuocUC Escuela de Informática y Telecomunicaciones Clase 5: Comandos de manipulación de Directorios y

40© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Desarrollo

Entubamientos (piping) en LINUX

Para mostrar los nombres de todos los usuarios definidos en mi máquina ordenados alfabéticamente, podemos utilizar: cut –d \: -f 1 < /etc/passwd ¦ sort.

Page 41: 2008 Escuela de Informática y Telecomunicaciones, DuocUC Escuela de Informática y Telecomunicaciones Clase 5: Comandos de manipulación de Directorios y

41© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Resumen Resumen de la clase

Los comandos de manipulación de directorios de LINUX son: ls, mkdir, rmdir, cd y pwd.

Los ALIAS permiten dar nombres alternativos (mas fáciles de recordar, más cortos, más significativos…) a los comandos LINUX.

Cuando se ejecuta un programa en LINUX se abren automáticamente tres archivos de E/S para ellos. Estos son: la entrada estándar (STDIN), la salida estándar (STDOUT) y el error estándar (STDERR).

La ejecución normal (sin redireccionamiento) y correcta de un comando LINUX implicaría:

Page 42: 2008 Escuela de Informática y Telecomunicaciones, DuocUC Escuela de Informática y Telecomunicaciones Clase 5: Comandos de manipulación de Directorios y

42© 2007 Cisco Systems, Inc. Todos los derechos reservados. Cisco Public

Escuela de Informática y Telecomunicaciones

Resumen Resumen de la clase

STDIN se asocia con el teclado, STDOUT y STDERR se asocian con la pantalla.

Algunos caracteres especiales permiten redireccionar la entrada estándar (<), la salida estándar (>) y el error estándar (2>).

Los sistemas UNIX/LINUX permiten transferir datos entre diferentes procesos. Este proceso se llama "piping", pues "pipe" (o tubo) es el nombre que se le da al símbolo utilizado para transferir datos.

La salida de un proceso es tomada como entrada para otro proceso, por medio del carácter “pipe” (¦).