430 likes | 610 Views
Comandos de manipulación de Archivos. 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. Desarrollo. Comandos LINUX
E N D
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.
Desarrollo Comandos LINUX • Todos los comandos de LINUX se ajustan mas o menos al siguiente formato: • Opciones hace referencia a las distintas opciones de aplicación de dicho comando; van precedidas de un “-”. • Argumento hace referencia al elemento sobre el cual se va a aplicar el comando (puede ser un archivo, una variable, un directorio, etc.). comando [opciones] [argumento]
Desarrollo Comandos LINUX • La mayoría de los comandos LINUX de usuario simple se encuentran en los directorios /bin, /usr/bin y /usr/local/bin. • Los comandos LINUX son archivos binarios, de ahí el nombre de estos directorios (bin viene de binary).
Desarrollo Comandos LINUX de manipulación de archivos • CAT - Todo lo que hace cat es copiar los datos desde la entrada estándar (teclado) hacia la salida estándar(pantalla). • Con el comando cat>archivo la entrada estándar sigue siendo el teclado, pero la salida estándar se ha redireccionado hacia un archivo. Cada línea que teclee se copiará en el archivo.
Desarrollo Comandos LINUX de manipulación de archivos • Si el archivo no existe, LINUX lo crea por usted. Si existe, su contenido se reemplaza. • Puede teclear cuantas líneas desee y, al final, oprimir <CTRL>+<D>. • Si desea anexar datos al final de un archivo existente, use >> para redireccionar la salida estándar: cat>>archivo
Desarrollo Comandos LINUX de manipulación de archivos • HEAD - El comando head permite desplegar el comienzo de un archivo. Por defecto, head despliega las primeros diez líneas de un archivo. • Si lo que se desea es desplegar un número diferente de líneas, se pueden especificar como opción al comando head.
Desarrollo Comandos LINUX de manipulación de archivos • Por ejemplo, para desplegar las primeras veinte líneas de un archivo se puede usar: head –20 archivo. • TAIL - El comando tail permite desplegar el fin de un archivo. Por defecto, tail despliega las últimos diez líneas de un archivo. • Por ejemplo, tail -15 archivo desplegará las últimas 15 líneas del archivo.
Desarrollo Comandos LINUX de manipulación de archivos • La opción -f (follow) de tail, permite escribir la última parte del archivo a medida que va creciendo. Esta opción es muy útil para monitorizar archivos de registro “log“ que van creciendo con el tiempo, a modo de ejemplo, considere la orden: tail –f /var/log/messages, que permite monitorizar el ARCHIVO DE LOG /var/log/messages.
Desarrollo Comandos LINUX de manipulación de archivos • MORE - Además de cat, podemos servirnos de otra orden para visualizar archivos, llamada more. Este comando visualiza, el o los archivos indicados, por pantallas completas, deteniéndose al final de cada pantalla o cada vez que se encuentre un caracter de borrado de pantalla. • Una diferencia con cat es que sólo se pueden visualizar archivos de texto, no binarios.
Desarrollo Comandos LINUX de manipulación de archivos • Con more al final de cada página desplegada en pantalla se nos indica que hay más, por medio del indicador --More--, y también se nos informa del porcentaje de caracteres que hemos visualizado. Si en este punto pulsamos la <BARRA ESPACIADORA>, conseguiremos una nueva pantalla del mismo archivo, que se imprimirá y volverá a informarnos de la misma manera como lo hizo anteriormente.
Desarrollo Comandos LINUX de manipulación de archivos • El procedimiento antes mencionado lo podríamos repetir hasta llegar al final del archivo. • Pulsando la tecla <RETORNO> conseguiremos que se visualice una sola línea más. • CP - Para realizar una copia de un archivo se utiliza el comando cp.
Desarrollo Comandos LINUX de manipulación de archivos • Copiar un archivo consiste en sacar una copia del mismo pero con otro nombre, o en otro lugar, es decir, tener dos archivos exactamente iguales, pero independientes, cada uno con su nombre y en su propio directorio. • Por ejemplo, si tenemos un archivo llamado datos y se desea obtener una copia que lleve el nombre extra, se usa: cp datos extra.
Desarrollo Comandos LINUX de manipulación de archivos • Con cp no solo es posible copiar archivos, sino que también es posible copiar directorios “recursivamente” por medio de la opción -R. • Con la opción -p se preservan los permisos, el usuario y el grupo del archivo a copiar. • Con la opción -f se borran los archivos de destino ya existentes.
Desarrollo Comandos LINUX de manipulación de archivos • Para indicar la ubicación en disco de un archivo hay que indicar la lista completa de directorios que contienen al fichero. Es decir, un fichero puede estar dentro de un directorio que a su vez está dentro de otro y así varios. • En esta lista, que denominaremos RUTA DE ACCESO, cada directorio está separado del siguiente directorio por el signo “/” , y sin dejar espacios en blanco.
Desarrollo Comandos LINUX de manipulación de archivos • MV - El comando mv nos va a permitir cambiar el nombre a un archivo, o moverlo de un directorio a otro. Por ejemplo, si desea mover un archivo llamado datos hacia un directorio llamado trabajo, use: mv datos trabajo. • si un directorio llamado trabajo no existe, entonces mv supone que usted quiere cambiar el nombre del archivo.
Desarrollo Comandos LINUX de manipulación de archivos • Con el comando mv se pueden renombrar y mover no sólo archivos, sino también directorios. • RM - Para borrar o eliminar un archivo tenemos el comando rm. Tras la propia orden pondremos el o los nombres de los archivos que deseemos borrar.
Desarrollo Comandos LINUX de manipulación de archivos • Si un archivo tiene enlaces y lo borramos, en realidad habremos borrado uno de sus enlaces, y no el archivo propiamente tal, pero suponiendo que el enlace que estemos borrando sea el último entonces se borrará también el archivo. • Por ejemplo, si deseamos borrar el archivo llamado datos, usaremos: rm datos.
Desarrollo Comandos LINUX de manipulación de archivos • Para borrar un subdirectorio completo “recursivamente” use el comando rm con la opción -r y especifique el nombre de un directorio; rm no sólo borra el directorio sino todos sus archivos y subdirectorios. • Por ejemplo, para borrar un directorio llamado extra, teclee: rm –r extra.
Desarrollo Comandos LINUX de manipulación de archivos • Con la opción -f no se imprimen mensajes de error, ni se pregunta al usuario confirmación de cada archivo borrado. • Con la opción -i (interactive) se pregunta al usuario por confirmación del borrado, esto podría ser útil cuando, a modo de ejemplo, se desea borrar solo algunos de los archivos cuyos nombres empiezan con “a”: ls -i a*.
Desarrollo Comandos LINUX de manipulación de archivos • ¿Es posible restaurar un archivo previamente borrado? Resp.: NO. • WC - El comando wc cuenta las líneas, palabras y caracteres. Los datos pueden provenir de la entrada estándar o de uno o más archivos. Este comando es de acción inmediata. Genera como salida tres números: de líneas, palabras y caracteres en los datos.
Desarrollo Comandos LINUX de manipulación de archivos • Si usted especifica el nombre de un archivo, wc escribe el nombre del archivo después de los tres números. Si especifica más de un archivo, wc también proporciona las estadísticas totales. • Si no quiere los tres números, puede usar las opciones : -l cuenta las líneas; -w cuenta las palabras; y –c cuenta los caracteres.
Desarrollo Comandos LINUX de manipulación de archivos • Por ejemplo, podemos usar el comando wc para contar el número de identificadores de usuario dentro de su sistema actualmente, por medio de la orden: who ¦ wc –l. • LN - El comando ln permite crear un enlace (o liga) para un archivo. Por ejemplo, si tenemos un archivo llamado datos y deseamos crear un enlace para este archivo llamado otro, usaremos : ln datos otro.
Desarrollo Comandos LINUX de manipulación de archivos • La opción -s permite crear un ENLACE SIMBÓLICO de un archivo. • Cuando se ejecuta ls -l en un directorio donde hay un ENLACE SIMBÓLICO, éste se nota de la siguiente manera: [alumno@localhost ~]$ ln –s archivo enlace [alumno@localhost ~]$ ls –l enlace lrw-r--r-- 1 alumno alumno 11 Apr 8 13:33 enlace ->archivo
Desarrollo Comandos LINUX de manipulación de archivos • SORT - El comando sort efectúa dos tareas principales. Primera, y como es de esperar, ordena datos. sort es muy útil para ordenar archivos de datos y para ordenar los datos dentro de una interconexión de procesos. Segunda: sort lee archivos con datos previamente ordenados y los fusiona para formar un archivo grande y ordenado.
Desarrollo Comandos LINUX de manipulación de archivos • La manera más sencilla de usar sort consiste en ordenar un solo archivo y desplegar el resultado en pantalla, por ejemplo: sort datos. • Para guardar los datos ya ordenados en otro archivo, puede redireccionar la salida estándar y usar: sort datos>maestro. • Para ordenar un archivo y guardar la salida en el mismo archivo, usar: sort –o datos datos.
Desarrollo Comandos LINUX de manipulación de archivos • De manera preestablecida, los datos se acomodan en orden ascendente, de acuerdo con el código ASCII. Lo relevante es que el código ASCII es como el alfabeto que usted usa, pues los caracteres guardan cierto orden, orden que usa sort para hacer comparaciones. • El comando sort tiene varias opciones que puede usar para modificar el orden que desea emplear.
Desarrollo Comandos LINUX de manipulación de archivos • Por ejemplo, La opción –d sólo toma en cuenta letras, números y espacios, ignorando los demás caracteres; la opción –r ordena los datos de manera inversa. • Además de ordenar los datos, sort también fusiona archivos múltiples que contengan datos ordenados. Para usar sort de este modo, especifique la opción –m.
Desarrollo Comandos LINUX de manipulación de archivos • CUT - El comando cut extrae columnas de datos de un archivo. Este comando ofrece una gran flexibilidad. Puede extraer columnas específicas o fragmentos delimitados de cada línea del archivo. • cut requiere la lista de columnas que usted desea extraer y el nombre de un archivo de entrada.
Desarrollo Comandos LINUX de manipulación de archivos • Por ejemplo, para extraer las columnas 1, 8 y 10 del archivo llamado datos, se puede usar: cut –c1,8,10 datos • También puede especificar un rango de números de columna colocando el comienzo y el final del rango. • Por ejemplo, para extraer las columnas de la 1 a la 3 del archivo datos, use: cut –c1-3 datos.
Desarrollo Comandos LINUX de manipulación de archivos • PASTE – El comando PASTE fusiona líneas correspondientes de un archivo en columnas verticales e imprime al resultado a pantalla. Un ejemplo de uso de PASTE sería: paste arch1 arch2. • Si uno de los archivos tiene menos líneas que el otro, el comando PASTE concatenará las líneas con el archivo más largo con una línea en blanco.
Desarrollo Comandos LINUX de manipulación de archivos • El comando PASTE toma líneas desde dos o más archivos y los coloca en columnas y los presenta en la salida estándar o pantalla. • El delimitador por defecto en la salida será el tabulador, con la opción -d se puede especificar un delimitador diferente. Por ejemplo, podemos usar: paste -d: nombres apellidos>datos.
Desarrollo Comandos LINUX de manipulación de archivos • Se pueden separar columnas con diferentes caracteres solo con especificar más de un carácter después de la opción -d, por ejemplo: paste -d ‘-*’ arch1 arch2, separaría la primera de la segunda columna con un “-” y la segunda de la tercera columna con un “*”. • Si más de una columna existe, el comando paste alternaría usando “-” y “*” como delimitador.
Desarrollo Comandos LINUX de manipulación de archivos • La opción -s de PASTE permite fusionar todas las líneas de cada archivo en una única línea. • Cada “\n” en un archivo, excepto el último, es reemplazado con un tabulador o un delimitador especificado por la opción –d. Por ejemplo, paste –s –d ‘*’ nombres, fusiona todas las líneas del archivo nombres en una línea usando “*” como delimitador.
Desarrollo Comandos LINUX de manipulación de archivos • FILE - El comando file realiza una serie de comprobaciones en un archivo para tratar de clasificarlo. • Tras la ejecución de find se muestra el tipo del archivo e información al respecto del mismo. [alumno@localhost ~]$ file tarea tarea: is a directory
Desarrollo Comandos LINUX de manipulación de archivos • STAT - El comando stat nos muestra información muy completa acerca de archivos o SISTEMAS DE ARCHIVOS. • Este comando nos reporta el nombre del archivo, su tamaño, los bloques que ocupa, el tipo de archivo (regular), información física de donde se encuentra (dispositivo/i-node), los permisos estándar, los dueños del archivo y las tres marcas de tiempo UNIX.
Desarrollo Comandos LINUX de manipulación de archivos [alumno@localhost ~]$ stat archivo File: `archivo'Size: 93300148 Blocks: 182424 IO Block: 4096 Regular File Device: 804h/2052d Inode: 1785294 Links: 1Access: (0644/-rw-r--r--) Uid: ( 1000) Gid: ( 100/ users)Access: 2008-04-03 18:45:29.000000000 +0200Modify: 2008-01-30 17:56:08.000000000 +0100Change: 2008-03-04 23:32:02.000000000 +0100
Desarrollo Comandos LINUX de manipulación de archivos • Una parte importante acerca de la información desplegada por stat, tiene que ver con la información de la fecha de registro del acceso al archivo. Muestra que se accedió (Access) al archivo el 2008-04-03 a las 18:45:29, o el 3 de abril de 2008 a las 18:45:29 PM. Este es el momento en el cual se empezó a utilizar el archivo. El archivo fue modificado (Modify) el 2008-01-30 a las 23:32:02.
Desarrollo Comandos LINUX de manipulación de archivos • Finalmente, la fecha de registro al lado de Cambiar (Change) muestra cuándo fue cambiado el estado del archivo. • Además del tamaño de archivo usual (que se puede obtener de ls -l), se puede obtener la cantidad de bloques que ocupa este archivo.
Desarrollo Comandos LINUX de manipulación de archivos • El tamaño de bloque LINUX típico es de 512 bytes, entonces un archivo de 93.300.148 bytes ocuparía (93300148/512=) 182226.85 bloques. Como los bloques se utilizan en su totalidad, este archivo utiliza un número entero de bloques. En lugar de hacer conjeturas, usted puede saber cuáles son los bloques exactos.
Desarrollo Comandos LINUX de manipulación de archivos • La opción -f del comando stat permite mostrar la información de un SISTEMA DE ARCHIVO en lugar de un archivo: [alumno@localhost ~]$ stat -f oracle File: "oracle" ID: 0 Namelen: 255 Type: ext2/ext3 Blocks: Total: 24033242 Free: 15419301 Available: 14198462 Size: 4096 Inodes: Total: 12222464 Free: 12093976
Desarrollo Comandos LINUX de manipulación de archivos • Por último, la opción -t brinda exactamente la misma información pero en una sola línea, con los datos separados por un espacio.
Resumen • Los comandos LINUX de manipulación de archivos calzan, mas o menos, con el siguiente formato: comando [opciones] [argumentos]. • Comando es el nombre del comando u orden que el SHELL debe ejecutar, opciones especificará la o las opciones del comando y argumentos corresponde a el o los elementos (archivos) sobre los cuales se aplicará el comando. • Podemos distinguir: comandos de visualización de archivos: cat, more, less, comando para copiar archivos: cp, comando para borrar archivos: rm, comandos filtros: head, tail, cut, sort, entre otros. • El comando sort efectúa dos tareas principales: ordenamiento de datos y fusión de dos o más archivos ordenados.