En este contexto, la manipulación de archivos significa copiar, mover y borrar archivos. Más adelante, veremos formas de cambiar los atributos de los mismos (dueño, permisos asociados).
mkdir (MaKe DIRectory, Crear directorio) se usa para crear directorios. Su sintaxis es simple:
mkdir [opciones] <directorio> [directorio ...] |
Sólo la opción -p es digna de interés. La misma hace dos cosas:
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 simplemente fallará, quejándose que dichos directorios padre no existen;
retornará silenciosamente si el directorio que desea crear ya existe. Similarmente, si no especificó la opción -p, mkdir retornará un mensaje de error, quejándose que el directorio ya existe.
Inicialmente, el comando touch no está orientado a la creación de archivos sino a la actualización de la fecha de acceso y modificación de los archivos[5]. Sin embargo, touch creará los archivos mencionados como archivos vacíos si es que no existían. La sintaxis es:
touch [opciones] archivo [archivo ...] |
Entonces, ejecutar el comando:
touch archivo1 imagenes/archivo2 |
creará un archivo vacío denominado archivo1 en el directorio corriente y un archivo vacío denominado archivo2 en el directorio imagenes, si dichos archivos no existían.
El comando rm (ReMove, Quitar) 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 ...] |
Las opciones incluyen:
-r, o -R: borrar recursivamente. Esta opción es obligatoria para borrar un directorio, vacío o no. Sin embargo, también puede usar el comando rmdir para borrar directorios vacíos.
-i: pedir confirmación antes de cada supresión. Note que predeterminadamente en Mandrakelinux, por razones de seguridad, rm es un alias a rm -i (existen alias similares para los comandos cp y mv). Estos alias pueden ser más o menos útiles de acuerdo a la experiencia que Usted tenga. Si desea quitarlos, puede editar su archivo ~/.bashrc y agregar esta línea: unalias rm cp 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[6].
rm -i imagenes/*.jpg archivo1: borra todos los archivos cuyo nombre termina en .jpg en el directorio imagenes 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 imagenes/misc/ archivo*: borra todo el directorio misc/ del directorio imagenes/ junto con todos los archivos del directorio corriente cuyos nombres comiencen con archivo sin pedir confirmación alguna.
La sintaxis del comando mv (MoVe, mover) es la siguiente:
mv [opciones] <archivo|directorio> [archivo|directorio ...] <destino> |
-f: fuerza la operación — no hay advertencia alguna en caso de que la operación sobre-escriba un archivo que ya existe.
-i: lo contrario — 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/*.png .: mover todos los archivos del directorio /tmp/pics/ cuyos nombres terminan en .png al directorio corriente (.), pidiendo confirmación antes de sobre-escribir cualquier archivo.
mv pepe pupu: cambiar el nombre del archivo pepe por pupu. Si ya hubiera un directorio pupu, el efecto de este comando sería mover todo el directorio pepe (el directorio en sí mismo más todos los archivos y directorios que contenga, recursivamente) dentro del directorio pupu.
mv -vf archivo* imagenes/ tacho/: mover, sin pedir confirmación, todos los archivos del directorio corriente cuyos nombres comiencen con archivo junto con todo el directorio imagenes/ al directorio tacho/, y mostrar cada operación llevada a cabo.
cp (CoPy, Copiar) reemplaza a los comandos copy, xcopy de DOS, y agrega más opciones. Su sintaxis es la siguiente:
cp [opciones] <archivo|directorio> [archivo|directorio ...] <destino> |
cp tiene un montón de opciones. Estas son las más comunes:
-R: copiar recursivamente; obligatoria para copiar un directorio, incluso si está vacío.
-i: pedir confirmación antes de sobre-escribir cualquier archivo que pudiera sobre-escribirse.
-f: lo opuesto de -i, reemplazar cualquier archivo existente sin pedir confirmación alguna.
-v: modo “verboso”, reporta todas las acciones que realiza cp.
cp -i /tmp/imagenes/* imagenes/: copia todos los archivos del directorio /tmp/imagenes al directorio imagenes/ ubicado en el directorio corriente. Si se va a sobreescribir un archivo se pide confirmación.
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.
[5] 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).
[6] 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.