Página siguiente Página anterior Índice general

5. Manejo de ficheros foráneos

Linux, aparte de tener un sistema de ficheros mejor que muchos otros (por ejemplo, indiscutiblemente superior a FAT/VFAT), también permite, para comodidad de sus usuarios, ``fisgonear'' en discos duros con otros formatos, como el propio FAT/VFAT (el de MS-DOS y Windows, vamos), dentro de poco NTFS (el de Windows NT; ahora está en acceso sólo lectura), muchos otros de UNIX, el de OS/2, el sistema de ficheros de los CD-ROM, etc.

La forma que tienen los UNIX en general de hacer esto es montando los discos duros foráneos a partir de un subdirectorio especificado. Por ejemplo, yo tengo en mi disco duro de Linux un subdirectorio vacío, llamado /dos, donde monto el disco duro con formato FAT. Una vez montado, todo mi disco duro de MS-DOS ``aparece'' a partir de ese subdirectorio, o sea, que ``de pronto'', existen los subdirectorios /dos/dos, /dos/utilidad, /dos/windows, etc., que originalmente, bajo MS-DOS, son C:\DOS, C:\UTILIDAD, C:\WINDOWS, ... Por supuesto, se puede modificar, no sólo leer.

5.1 Los nombres de los dispositivos en Linux

Los dispositivos se representan por ficheros, que por convenio están en el directorio /dev. La forma de nombrar los dispositivos varía entre versiones de UNIX, aunque es parecida. Aquí sólo voy a hablar de las unidades de almacenamiento (discos duros, IDE y SCSI, CD-ROM; no se cuentan las unidades de disco flexible), siendo la de Linux como sigue:

La letra es a, b, c, etc. Linux va identificando dispositivos y los va nombrando, con sucesivas letras. En el caso de que tengas sólo un disco duro y una unidad de CD, ambas IDE, seguramente se llamarán /dev/hda y /dev/hdb, respectivamente. Si no sabes si tus dispositivos son IDE o SCSI, probablemente son IDE, pero pregunta a alguien antes de hacer nada peligroso. Estás advertido.

Si consigues cargar Linux (con un disco de arranque, por ejemplo), al cargar el núcleo aparecerá un mensaje del estilo (aparecerán montones, pero fíjate en alguno que sea parecido a este):

        hda: QUANTUM BIGFOOT1280A, 1226MB w/87kB Cache, CHS=623/64/63, DMA
        hdb: OTI-HERMES, ATAPI CDROM drive
        hdc: SAMSUNG WN321620A (2.16 GB), 2060MB w/109kB Cache, CHS=4186/16/63
        ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
        ide1 at 0x170-0x177,0x376 on irq 15
        Partition check:
         hda: hda1 hda2 hda3
         hdc: [PTBL] [523/128/63] hdc1
De ahí puedes sacar la información de que hay dos discos duros (/dev/hda y /dev/hdc) y una unidad de CD-ROM (/dev/hdb). Todos IDE, por supuesto, porque los ha llamado hd, y no sd. Aparte de eso, también puedes sacar (las tres últimas líneas) que el primer disco duro tiene tres particiones (que llama hda1, hda2 y hda3) y que el tercer disco duro tiene una sola partición (hdc1).

Si tienes unidad ZIP, has de saber que, aunque sea la versión de puerto paralelo, se trata como un dispositivo SCSI. También has de saber que, por defecto, la única partición con información que hay es la cuarta, y no la primera. Pero para los asuntos de la unidad ZIP, diríjete a los mini-COMOs ZIP-Install y ZIP-Drive.

5.2 La orden mount

Esta orden se utiliza para montar los sistemas de ficheros. El formato de la orden es:

        mount -t sistema_ficheros /dev/dispositivo /directorio/de/montaje
Donde sistema_ficheros es el sistema de ficheros que tiene el disco duro a montar (fat, vfat, ext2, hpfs, etc.), /dev/dispositivo es el nombre del dispositivo que representa al disco duro, y /directorio/de/montaje es el directorio donde se va a montar el disco duro (que tiene que existir).

Por ejemplo, para montar en el directorio /dos mi partición VFAT, que está en /dev/hda1, tendría que escribir la siguiente orden (en realidad no tengo porqué, porque utilizo el /etc/fstab, explicado más abajo):

        mount -t vfat /dev/hda1 /dos

5.3 /etc/fstab

Este fichero indica algunos valores por defecto, a utilizar cuando no se dé más información. Es muy útil, dado que normalmente montamos el mismo dispositivo en el mismo directorio. Así que, para montar el CD, en el directorio /cdrom, sólo tenemos que hacer

        mount /cdrom
suponiendo que tenemos bien configurado el fichero /etc/fstab. El mount, al ver que le falta información, buscará en /etc/fstab una entrada que tenga como punto de montaje /cdrom. Al ver una entrada parecida a esta:
/dev/hdb        /cdrom       iso9660 user,ro,noauto               0       0
Algunas cosas sobre esta línea:

5.4 Ficheros de texto

Desafortunadamente, el ``formato'' de los ficheros de texto en UNIX, Mac y DOS es diferente. Aunque todos suelen utilizar el ISO-latin1 o ASCII para los caracteres ``normales'', los caracteres de salto de línea son diferentes entre los tres sistemas. En UNIX, se utiliza el LF (line-feed, salto de línea), que tiene la ventaja de que así se pueden diferenciar saltos de línea de caracteres INTRO literales. En Mac se utiliza el CR (carriage return, retorno de carro). En MS-DOS y derivados se utiliza en CR-LF. Esto provoca que al mirar un texto de MS-DOS en UNIX, aparezca un caracter extraño (el ^M) al final de cada línea. Al ver un fichero de texto con formato UNIX en MS-DOS (esto depende del programa que utilices), verás que el texto es una sola línea, y que de vez en cuando aparece un caracter ``desconocido'' (en el Bloc de notas aparece un cuadro negro). Con ficheros de Mac habrán problemas parecidos.

Pero, afortunadamente, esto es UNIX, y la solución (si conoces el problema y las herramientas) es múltiple y simple. Yo voy a explicar la que normalmente utilizo y una más cómoda para los que no conozcan (ni quieran conocer :-)) el corrector de textos estándar, el vi (es un programa bastante raro de manejar cuando no tienes costumbre, pero he escrito un tutorial). Lo que yo hago, dado que trabajo con el vi, es lo siguiente:

        :%s/^M//

Esto sustituye cada caracter ^M que se encuentre (el ^M se consigue pulsando las teclas Ctrl-V, y luego la tecla INTRO) por nada, es decir, los borra. En el vim (el programa que en realidad utilizas si llamas al vi desde Linux) no existen esos problemas, porque se da cuenta automáticamente y no te molesta con basura. Aún así, si quieres cambiar entre un formato y otro, puedes abrir el fichero, y escribir :set textmode (para convertir a texto MS-DOS) o :set notextmode (para convertir el texto a formato UNIX), y volver a grabar el fichero con :w. Para salir luego con :q, como siempre.

La solución ``fácil'': escribe este texto en un fichero, dale permiso de ejecución (con chmod +x fichero, se supone que ya sabes hacerlo), y ejecútalo. El resultado saldrá en un fichero llamado igual que el de entrada, con .unix al final. Es decir, que si llamas al programa u2d, y escribes en línea de órdenes:

        u2d foo.txt

Tendrás el fichero intacto, y uno llamado foo.txt.unix, que ocupará algo menos. El programa es el siguiente (por supuesto, se podría virguerizar, añadirle conversión en el otro sentido, y más cosas. Lo dejo como ejercicio para el avezado lector ;-). Si quieres más información para empezar a programar en el lenguaje del intérprete de órdenes, mira en el tutorial que he escrito a tal efecto, en formatos HTML o PostScript):

        sed 's/^M//' $1 >$1.unix

De nuevo, el ^M se consigue pulsando Ctrl-V y luego INTRO.


Página siguiente Página anterior Índice general