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>
Note que cuando Usted mueve múltiples archivos el destino debe ser un directorio. Para renombrar un archivo, simplemente lo mueve al nombre nuevo.
-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
(ctime
); y finalmente, la última fecha cuando
se modificó el contenido del archivo
(mtime
).
[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.