En el capítulo Conceptos básicos de Unix del Guía del Usuario, le hemos mostrado como iniciar un shell. En este capítulo, le mostraremos como ponerlo a trabajar.
La ventaja principal del shell es el número de utilitarios existentes: hay miles de ellos, y cada uno está dedicado a una tarea en particular. Solo veremos un pequeño número de ellos aquí. Una de las ventajas principales de Unix es la capacidad de combinar estos utilitarios, como veremos más adelante.
La manipulación de archivos significa aquí copiar, mover y borrar archivos. Más adelante, veremos formas de cambiar los atributos de los mismos (dueño, permisos asociados).
mkdir se usa para crear directorios. Su sintaxis es simple:
mkdir [opciones] <directorio> [directorio ...]
Sólo una opción es digna de interés: la opción -p. Si esta opción se pasa como argumento, mkdir creará los directorios padre si es que aún no existían. Si no se especifica esta opción y los directorios padre no existen, mkdir mostrará un error. Ejemplos:
mkdir pepe crea un directorio denominado pepe en el directorio corriente.
mkdir -p images/misc docs crea un directorio misc en el directorio images creando primero el último (si es que no existe), junto con un directorio docs.
Inicialmente, el comando touch no está orientado a la creación de archivos sino a la actualización de la hora de acceso y modificación de los archivos[1]. Sin embargo, touch creará los archivos mencionados como archivos de 0 bytes si es que no existían. La sintaxis es:
touch [opciones] archivo [archivo...]
Entonces, ejecutar el comando:
touch archivo1 images/archivo2
creará un archivo de 0 bytes denominado archivo1 en el directorio corriente y un archivo de 0 bytes denominado archivo2 en el directorio images.
Este comando reemplaza a los comandos del y deltree de DOS, y agrega más opciones. Su sintaxis es la siguiente:
rm [opciones] <archivo|directorio> [archivo|directorio...] |
Entre las opciones, se encuentran:
-r, o -R Borrar "recursivamente". Esta opción es obligatoria para borrar un directorio, vacío o no. Sin embargo, también existe el comando rmdir para borrar directorios vacíos.
-i Pedir confirmación antes de cada supresión. Se recomienda hacer un alias del comando rm por rm -i en su shell, así como también para los comandos cp y mv.
-f La opuesta de -i, fuerza la supresión de los archivos o directorios, incluso si el usuario no tiene derecho de escritura sobre los archivos[2].
Algunos ejemplos:
rm -i images/*.jpg archivo1 Borra todos los archivos cuyo nombre termina en .jpg en el directorio images y borra el archivo archivo1 en el directorio corriente, pidiendo confirmación para cada uno de los archivos. Responda y para confirmar la supresión, n para cancelarla.
rm -Rf images/misc/ archivo* Borra todo el directorio misc/ del directorio images/ junto con todos los archivos del directorio corriente cuyos nombres comiencen con archivo sin pedir confirmación alguna.
![]() | un archivo borrado utilizando rm se borra irrevocablemente. ¡No hay forma alguna de recuperar los archivos![3] No dude en usar la opción -i para asegurarse de no borrar algo por error. |
La sintaxis del comando mv es la siguiente:
mv [opciones] <archivo|dir.> [archivo|dir. ...] <destino> |
-f Fuerza el movimiento de archivos -- no hay advertencia alguna en caso de que la operación sobre-escriba un archivo que ya existe.
-i La opción contraria -- pedir confirmación al usuario antes de sobre-escribir un archivo existente.
-v Modo verboso, reportar todos los cambios y la actividad.
mv -i /tmp/pics/*.gif . Mover todos los archivos del directorio /tmp/pics/ cuyos nombres terminan en .gif al directorio corriente (.), pidiendo confirmación antes de sobre-escribir cualquier archivo.
mv pepe pupu Cambiar el nombre del archivo pepe por pupu.
mv -vf archivo* images/ tacho/ Mover, sin pedir confirmación, todos los archivos del directorio corriente cuyos nombres comiencen con archivo junto con todo el directorio images/ al directorio tacho/, y mostrar cada operación llevada a cabo.
cp reemplaza a los comandos copy, xcopy de DOS, y agrega más opciones. Su sintaxis es la siguiente:
cp [opciones] <archivo|dir.> [archivo|dir. ...] <destino> |
cp tiene un montón de opciones. Estas son las más comunes:
-R Copiar "recursivamente"; obligatoria para copiar un directorio, incluso uno vacío.
-i Pedir confirmación antes de sobre-escribir cualquier archivo que podría sobre-escribirse.
-f Lo opuesto de -i, reemplazar cualquier archivo existente sin pedir confirmación alguna.
-v Modo" verboso", reporta todas las acciones ejecutadas por cp.
Algunos ejemplos:
cp -i /tmp/images/* images/ Copia todos los archivos del directorio /tmp/images al directorio images/ del directorio corriente, pidiendo confirmación si se va a sobre-escribir un archivo.
cp -vR docs/ /shared/mp3s/* miscosas/ Copia todo el directorio docs al directorio actual más todos los archivos del directorio /shared/mp3s al directorio miscosas ubicado en el directorio corriente.
cp pepe pupu Hace una copia del archivo pepe bajo el nombre pupu en el directorio corriente.
[1] | Hay tres etiquetas de tiempo distintas para cada archivo en Unix: la última fecha de acceso al mismo (atime), es decir, la fecha cuando se abrió para lectura o escritura; la última fecha cuando se modificaron los atributos del i-nodo (mtime); y finalmente, la última fecha cuando se modificó el contenido del archivo (ctime). |
[2] | Es suficiente que un usuario no privilegiado tenga derecho de escritura sobre un directorio para que pueda borrar los archivos que se encuentran en el mismo, incluso si dicho usuario no es el dueño de los archivos. |
[3] | Bueno, en realidad hay formas de recuperarlos, pero son tan complicadas que es más fácil usar la opción -i... |
Anterior | Inicio | Siguiente |
Breve introducción a la línea de comandos | Manipulación de los atributos de los archivos |