sábado, 23 de noviembre de 2013

OPERACIONES CON ARCHIVO Y DIRECTORIOS

CONCEPTO DE ARCHIVO O FICHERO

FICHEROS:

La memoria principal es volatil. Los datos que están en memoria principal se pierden cuando apagamos la máquina. Asi que, hay que almacenarlos en memorias externas (discos, DVD, etc.) para conservarlos indefinidamente. Los datos se guardan en estructuras llamadas ficheros o archivos. El concepto de fichero como conjunto de fichas no es válido en el caso de los ordenadores. Cualquier dato de cualquier tipo se tiene que almacenar en un fichero o archivo. Asi que un fichero puede ser cualquier cosa: una lista de clientes, una carta, un fragmento de sonido, un video, una fotografía, un programa (conjunto de instruciones), un virus...
Para poder gestionar de forma eficiente los datos (ficheros) le asignamos a cada uno un nombre arbitrario con caracteres válidos. El sistema operativo impone las normas para nombrar a los ficheros. En Window no son válidos los siguientes caracteres:


El nombre de cualquier fichero se compone de dos partes: el nombre propiamente dicho y la extensión. El nombre es obligatorio y como mínimo debe tener un carácter (256 como máximo). La extensión es opcional e indica el tipo de fichero. Entre el nombre y la extensión hay un punto (.) como caracter separador.


LOS ICONOS:
Cuando exploramos un disco duro o cualquier otro dispositivo de memoria externa, observamos infinidad de símbolos (iconos en Window) con un nombre en su pie. Son los ficheros o archivos asociados a un dibujo o icono. El icono sólo sirve para identificar de forma visual el tipo de un archivo. El icono carece de importancia: podemos cambiar el dibujo por otro, en cambio no debemos cambiar la extensión o el nombre porque el archivo puede quedar inutilizado. Windows asocia un icono a cada tipo de archivo reconocido por el sistema. Si un archivo no es reconocido por el sistema se le asocia un icono genérico. Los siguientes iconos representan algunos ejemplos: fichero de imagen, documento de Word, texto plano, sistema, hoja de cálculo Excel, carpeta de ficheros, archivo desasociado...


En el disco duro de cualquier ordenador podemos contar decenas de miles de ficheros de todo tipo. Sin pretender ser rigurosos, vamos a clasificar, por razones de claridad, los ficheros de la siguiente manera:


LOS DIRECTORIOS:
Los directorios (carpetas en adelante) son ficheros especiales que contienen más ficheros. Estos permiten estructurar y organizar las memorias externas en forma de arboles.
LOS PROGRAMAS, EJECUTABLES...
Estos ficheros permiten que trabajemos con la máquina. Hacen que funcione la máquina y que tengamos aplicaciones con las que trabajar. Por ejemplo, podemos escribir una carta en Word porque tenemos en el disco duro un fichero (winword.exe) que es el conocido programa de Microsoft...
LOS FICHEROS DE DATOS:
Son lo que crea el usuario y hacen de la máquina algo productivo. 

CREACION DE ARCHIVOS


copy con
Podemos crear archivos no muy extensos y de cualquier tipo desde msdos:
Por ejemplo, si deseamos crear un archivo de texto, utilizamos el comando copy con cuya síntaxis es la siguiente:
copy con nombre del archivo.extension

Una ves que acabemos de escribir nuestro archivo es necesario presionar el boton F6 para indicar que hemos terminado, seguido de la tecla enter.
vamos a crear ahora el archivo carta.txt:
copy con carta.txt
Escribimos el texto, presionamos F6, enter y listo!!!.
                 Creación de archivos
Nota: el archivo creado se encuentra en la ubicación desde donde ejecutamos el programa, en este ejemplo , el archivo quedó almacenado en C.
Type
El comando type nos permite visualizar desde msdos, archivos de texto, pero eso si , de solo lectura, es decir, no podremos editarlos desde este comando.
type nombre.extension
por ejemplo, si queremos ver el contenido del archivo que acabamos de crear:
type carta.txt
            

Creación de archivos

COPIAR, ELIMINAR, RENOVAR ARCHIVOS


rightclick

Con el apuntador sobre el archivo, documento o folder, presionamos el botón derecho del ratón y escogemos la opción de copiar ("Copy"), borrar ("Delete") o renombrar ("Rename")  

CONCEPTOS DE DIRECTORIO


Un directorio es un sistema que la computadora utiliza para organizar ficheros a partir de información específica. Los directorios pueden estar organizados jerárquicamente de forma que los ficheros aparezcan de distintas maneras, como por ejemplo el orden en que fueron creados, por orden alfabético, según el tipo, etc.


CREACION DE DIRECTORIO

Es hora de crear cierta estructura en el sistema de ficheros LFS. Crea un árbol de directorios estándar ejecutando los siguientes comandos:
mkdir -pv /{bin,boot,etc/opt,home,lib,mnt,opt}
mkdir -pv /{media/{floppy,cdrom},sbin,srv,var}
install -dv -m 0750 /root
install -dv -m 1777 /tmp /var/tmp
mkdir -pv /usr/{,local/}{bin,include,lib,sbin,src}
mkdir -pv /usr/{,local/}share/{doc,info,locale,man}
mkdir -v  /usr/{,local/}share/{misc,terminfo,zoneinfo}
mkdir -pv /usr/{,local/}share/man/man{1..8}
for dir in /usr /usr/local; do
  ln -sv share/{man,doc,info} $dir
done
mkdir -v /var/{lock,log,mail,run,spool}
mkdir -pv /var/{opt,cache,lib/{misc,locate},local}
Los directorios se crean por defecto con los permisos 755, pero esto no es deseable para todos los directorios. En los comandos anteriores se hacen dos cambios: uno para el directorio personal de root y otro para los directorios de los ficheros temporales.
El primer cambio nos asegura que nadie aparte de root pueda entrar en el directorio /root, lo mismo que debería hacer un usuario normal con su directorio personal. El segundo cambio nos asegura que cualquier usuario pueda escribir en los directorios /tmp y /var/tmp, pero no pueda borrar los ficheros de otros usuarios. Esto último lo prohibe el llamado “bit pegajoso” (sticky bit), el bit más alto (1) en la máscara de permisos 1777.

COPIAR, ELIMINAR, RENOMBRAR DIRECTORIOS

Cualquier usuario de computadoras, tarde o temprano, debe copiar, mover o renombrar algún fichero. Independientemente de que utilice la línea de comandos o algún interfaz gráfico. Tanto si estás clonando un fichero existente para utilizarlo como punto de partida de un nuevo trabajo, como si estás reorganizando tus ficheros y directorios para hacerlos más fáciles de encontrar, el copiado y traslado de ficheros y directorios es tan fácil de hacer mediante la línea de comandos como lo es con la interfaz gráfica, obviando el hecho de que debes teclear en vez de apuntar y pulsar. En muchos casos, las tropecientas opciones que te ofrecen los comandos de Linux te dan un control más preciso sobre operaciones en las que un interfaz gráfico genérico no puede alcanzar tanto detalle. Continuando con la tradición Unix/Linux de "no teclear jamás más letras que las necesarias", el comando que se usa para copiar ficheros y directorios es el comando cp. Para copiar un fichero hacia otro, simplemente ejecuta el comando cp, seguido por el nombre del fichero existente, y luego el nombre del fichero que va a ser el destinatario de la copia. Por ejemplo, para copiar un fichero llamado fichero.txt hacia el nuevo fichero llamado nuevo_fichero.txt, deberías teclear:
$ cp fichero.txt nuevo_fichero.txt
¡ATENCIÓN!
Ten muchísimo cuidado cuando teclees el nombre del fichero destinatario del comando cp. Si existe otro fichero con ese mismo nombre, el comando cp lo sobreescribirá con el contenido del fichero que estás copiando, y perderás el contenido previo de ese fichero. Si te preocupan los peligros de este asunto, hay una sección en este capítulo titulada Definiendo y usando alias para saber cómo configurar una versión segura del comando cp.
Al especificar las rutas completas del fichero origen y/o del destino, el comando cp puede copiar fichero hacia cualquier parte de tu sistema (siempre que tengas los permisos adecuados para ello, se entiende). Por ejemplo, para copiar el fichero fichero.txt de mi directorio personal hacia el fichero nuevo_fichero.txt del directorio /tmp (en el que todos los usuarios tienen permisos de creación de ficheros), podría ejecutar con éxito el siguiente comando independientemente de cuál fuera mi directorio actual.
$ cp /home/bibliaubuntu/fichero.txt /tmp/nuevo_fichero.txt
También puedes utilizar cp para copiar un fichero a directorios diferentes, simplemente tecleando el nombre del directorio como destinatario del copiado. Continuando con el ejemplo anterior, he quediro copiar el fichero fichero.txt desde mi directorio personal hacia /tmp, pero de forma que el fichero copiado tenga el mismo nombre que el fichero original. Podría hacerlo con el comando:
$ cp /home/bibliaubuntu/fichero.txt /tmp
que crearía el fichero /tmp/fichero.txt como una copia exacta del /home/bibliaubuntu/fichero.txt.
El comando cp no exige opciones especiales para la copia de ficheros. Sin embargo, también puedes copiar directorios completos con él especificando la opción -r (recursivo). Para copiar un directorio mis_datos y todo su contenido hacia un nuevo directorio llamado copia_de_respaldo:
$ cp -r mis_datos copia_de_respaldo
Tardará más o menos dependiendo del número de ficheros que tengas en el directorio mis_datos. Cuando termine, el nuevo directorio contendrá una copia exacta de mis_datos. Si eres tan incrédulo como Santo Tomás y necesitas pruebas de cómo va haciendo cada paso, puedes añadir la opción -v (verboso) para mostrar cada uno de los pasos hechos durante la copia.
$ cp -rv paquetes/frozen_bubble/ /tmp
`paquetes/frozen_bubble/' -> `/tmp/frozen_bubble'
`paquetes/frozen_bubble/frozen-bubble-1.0.0-i486-4pin.tgz' ->  `/tmp/frozen_bubble/frozen-bubble-1.0.0-i486-4pin.tgz'
`paquetes/frozen_bubble/perl-sdl_perl-1.20.0-i486-2pin.tgz' -> `/tmp/frozen_bubble/perl-sdl_perl-1.20.0-i486-2pin.tgz'
Como era de esperar, un comando cp recursivo también copia recursivamente todos los subdirectorios y ficheros que contiene el objeto origen.
Antes mencioné que especificar el nombre de un directorio como destinatario de la copia de un fichero sirve para crear un fichero dentro de ese directorio y con el mismo nombre que el fichero origen. Lo mismo sirve cuando especificamos el nombre de un directorio como destino de un comando cp para una copia recursiva. Puede ser confuso al principio si estás intentando copiar un directorio hacia un directorio con un nuevo nombre existiendo previamente un directorio con ese mismo nombre. En ese caso, cp crea un directorio con el mismo nombre que tu directorio original, pero como subdirectorio del directorio destino.
Mover y renombrar fichero desde la línea de comandos es igual de fácil. Linux no dispone de un comando de renombrado separado. En Linux, el comando mv hace ambas funciones: mover ficheros y directorio hacia una nueva ubicación, y opcionalmente renombrarlos como parte de la operación de mover. Por ejemplo, para renombrar el fichero fichero.txt como nuevofichero.txt se haría:
$ mv fichero.txt nuevofichero.txt
La orden mv obedece a las mismas convenciones que cp sobre especificaciones de rutas completas y sobre especificar un directorio como nombre de la ubicación hacia donde quieres mover el fichero. Por ejemplo, el siguiente comando mueve el fichero /home/bibliaubuntu/fichero.txt hacia el directorio /tmp, y lo renombra como nuevofichero.txt:
$ mv /home/bibliaubuntu/fichero.txt /tmp/nuevofichero.txt
Si querías mover el fichero hacia /tmp manteniendo su nombre original, lo harías así:
$ mv /home/bibliaubuntu/fichero.txt /tmp
A diferencia del comando cp, el comando mv no necesita opciones especiales para mover o renombrar directorios. Por ejemplo, para renombrar el directorio pruebas hacia copia_de_seguridad, teclearías lo siguiente:
$ mv pruebas copia_de_seguridad
Igual que hace cp, si el directorio copia_de_seguridad ya existía, el comando mv movería el directorio pruebas hacia el interior de copia_de_seguridad, conservando su nombre anterior. El comando mv también dispone de una opción -v (verboso) para mostrar qué está ocurriendo durante las operaciones que hace mv, pero es menos informativo cuando lo que haces es simplemente renombrar un directorio, como puedes ver en el ejemplo siguiente:
$ mv -v pruebas copia_de_seguridad
'pruebas' -> 'copia_de_seguridad'
En este caso, mv sólo necesita renombrar el directorio. Sin embargo, debido al modo que tiene Linux de crear sistemas de ficheros, el mover directorios de un sistema de ficheros a otro sistema de ficheros residente en particiones de disco diferentes exige que cada fichero y subdirectorio se copie antes de ser borrado por mv, como en el siguiente ejemplo:
$ df . /media/pcsamba
S.ficheros         Bloques de 1K   Usado    Dispon Uso% Montado en
/dev/hda3             19141396   5678852  12490212  32% /
//servidor/compartido 51735552  33655808  18079744  66% /media/pcsamba
$ mv -v prueba /media/pcsamba
`prueba' -> `/media/pcsamba/prueba'
`prueba/6-5.png' -> `/media/pcsamba/prueba/6-5.png'
`prueba/6-1.png' -> `/media/pcsamba/prueba/6-1.png'
`prueba/VirtualBox_1.3.8_Ubuntu_edgy_i386.deb' -> `/media/pcsamba/prueba/VirtualBox_1.3.8_Ubuntu_edgy_i386.deb'
`prueba/6-0_info_commands.png' -> `/media/pcsamba/prueba/6-0_info_commands.png'
`prueba/6-2.png' -> `/media/pcsamba/prueba/6-2.png'
`prueba/6-4.png' -> `/media/pcsamba/prueba/6-4.png'
`prueba/6-3.png' -> `/media/pcsamba/prueba/6-3.png'
`prueba/6-6.png' -> `/media/pcsamba/prueba/6-6.png'
`prueba/6-7.png' -> `/media/pcsamba/prueba/6-7.png'
`prueba/6-5.png' borrado
`prueba/6-1.png' borrado
`prueba/VirtualBox_1.3.8_Ubuntu_edgy_i386.deb' borrado
`prueba/6-0_info_commands.png' borrado
`prueba/6-2.png' borrado
`prueba/6-4.png' borrado
`prueba/6-3.png' borrado
`prueba/6-6.png' borrado
`prueba/6-7.png' borrado
directorio borrado: `prueba'
Como puedes ver, la mayor parte de lo que hace mv es muy similar a lo que hace cp. En el ejemplo vemos cómo se usa el comando df para demostrar que el directorio actual (".") y el directorio destino (/media/pcsamba) están situados en sistemas de ficheros (y ordenadores) diferentes. Puedes ver las diferencias en la salida de texto verbosa del comando mv.
Igualmente que el copiar y mover, el borrar ficheros y directorios es una operación muy frecuente. Sea porque estás eliminando cosas para liberar espacio en disco para proyectos futuros, sea porque estás eliminando respaldos o proyectos que ya finalizaste, sea porque quieres borrar informaciones que no quieres que nadie más vea, es bastante fácil eliminar ficheros mediante la línea de comandos. El comando necesario se llama rm. Puedes ver que seguimos con la filosofía de "cuanto menos se teclee, mejor", y es la abreviatura del inglés remove (eliminar, borrar). Para eliminar un fichero en Linux, simplemente teclea el comando rm seguido por el nombre del fichero. Por ejemplo:
$ rm fichero.txt
Y adiós al fichero. Igual que cp, el comando rm acepta la opción -r (borrado recursivo) para que puedas eliminar directorios enteros. Por ejemplo, para eliminar permanentemente el directorio copia_de_seguridad, teclearías:
$ rm -r copia_de_seguridad
CONSEJO
Puedes eliminar directorios vacíos con el comando rmdir, aunque es una situación poco frecuente. Es raro tener directorios vacíos por ahí porque normalmente cuando se crea un directorio es para guardar algo en él. Suelo utilizar el comando rm -r para borrar cualquier directorio, vacío o no, porque así no es necesario borrar a mano previamente su contenido. Hay gente para todo, así que decide el método tú mismo.
Si te has iniciado como usuario de Ubuntu procediendo de un sistema Microsoft Windows, puede que tengas algo de idea y sepas que es casi trivial recuperar ficheros borrados en Windows. Esto se debe a que Windows borra los ficheros eliminando la entrada de directorio que los identifica. No sucede así en Linux. Cuando borras un fichero o directorio en Linux, todo el espacio en disco asociado a ese fichero, directorio, y los contenidos de ese directorio, se devuelven a una lista general de espacio libre que tu sistema tiene disponible. Aunque en Linux se pueden recuperar los ficheros/directorios eliminados, es mucho más difícil de hacer que en Windows y requiere ayuda de alguien que conozca de verdad los detalles internos del sistema de ficheros (recordemos que hay bastantes más que en Windows y cada uno se gestiona internamente de una forma). El inconveniente de esto es que no puedes recuperar con facilidad los ficheros que hayas eliminado por error. Para ayudar a autoprotegerte de borrados accidentales, lee la sección Definiendo y usando alias para saber cómo configurar de forma permanente una versión segura del comando rm que te pida confirmación antes de eliminar algo.
CONSEJO
Los comandos cp, mv y rm tienen muchas más opciones que las tratadas aquí. Para ver todas ellas, utiliza los comandos man e info para ver todo el manual en línea del comando que te interese conocer.


No hay comentarios:

Publicar un comentario