Los comandos del
AmigaDOS (III)
Por Francisco Javier Rodríguez
Realizar operaciones como el formateado de un disco y copiar o borrar el contenido de los mismos, son factibles desde el WorkBench; sin embargo aunque ciertamente se está formateando el disco y copiando o borrando un fichero, esta operación sigue una norma fija cuando se ejecuta desde el WorkBench. Es decir usted se verá encauzado a la forma de realizar dichas operaciones mediante las opciones del menú WorkBench. Sin embargo el AmigaDOS, a través de sus comandos correspondientes, ofrece al usuario una mayor libertad, y control, sobre las mismas operaciones. A continuación veremos el por qué.
Formatear: no sólo existe un camino
Cuando utilizamos la opción Format encontrada en el WorkBench nos vemos limitados a observar como los números decrecen en una de las columnas (número de cilindros que restan) e incrementan en otra (número de cilindros ya formateados), además de observar como, de forma automática, se crea el cajón Trashcan (pese a que usted pueda no estar interesado en la creación del mismo), y FFS (Fast File System) cuando se trata de discos duros. Obviamente pese a ser el más utilizado no es el más conveniente. Veamos las opciones que nos ofrece este mismo comando desde el AmigaDOS, utilizando para ello el parámetro de ayuda '?' ya visto en anteriores capítulos.
WorkBench:>Format ?
Format usage: Format DRIVE <disk> NAME <name>
[NOICONS][QUICK] [FFS] [NOFFS] [INHIBIT]
A simple vista ya observamos más de un modo de operación con dicho comando. Veamos a continuación para qué sirve cada parámetro y cuando resulta recomendable su aplicación en la ejecución del comando.
Los dos primeros parámetros (disk y name) resultan evidentes, ya que los mismos deberán corresponderse con la asignación del dispositivo en el cual se encuentra el disco a formatear -ya se trate de unidades de disco flexibles o discos duros- y el nombre que se le asignará a dicho disco una vez formateado respectivamente. Estos pueden indicarse entrecomillados o no, siendo imprescindible que el nombre del disco se entrecomille cuando contenga algún espacio entre las palabras que compongan el mismo. Por ejemplo:
WorkBench:>Format drive df0: name Prueba
ó
WorkBench:>Format drive "df0:" name "prueba de formateo"
Serán sintaxis correctas, mientras que
WorkBench:>Format drive "df0:" name prueba de formateo
Provocará un mensaje de error por parte del sistema.
Son los parámetros siguientes los que harán variar el resultado obtenido en el mismo proceso. Mediante el parámetro 'NOICONS' el proceso no generará ni el icono ni el cajón (directorio en AmigaDOS) correspondiente al Trashcan del sistema. De esta forma no tendrá el doble trabajo de ser creado por parte del sistema, y encargarse usted personalmente de borrarlo del disco en el supuesto de que no desee la presencia de dicho directorio especial del sistema en su disco.
La segunda opción, QUICK, es una de las más interesantes a la hora de ser aplicada desde el AmigaDOS, ya que mediante la inclusión del mismo se ahorrará el 98% del proceso de formateo. La única regla, a tener en cuenta en la utilización de dicho parámetro, es que este sólo es operativo sobre discos que se encuentren formateados mediante el sistema tradicional. ¿Por qué? Lo que realmente hace este parámetro es borrar los apuntadores a los ficheros y directorios en el mapa de ficheros, con lo que en definitiva el disco volverá a encontrarse 'vacío', sin la necesidad de formatear el mismo a nivel físico (crear de nuevo la segmentación de bloques). Por ello no es posible utilizar el parámetro en un disco que no haya sido previamente formateado bajo el sistema convencional (¿qué mapa va a borrar cuando ni siquiera existe la estructura?). La única respuesta que obtendrá, al intentar utilizar dicha función sobre un disco sin formato físico, será un mensaje de error por parte del sistema.
Sin embargo, como se comentó anteriormente, esta opción es la ideal cuando se trata de 'reformatear' cualquier disco de Amiga cuyo contenido ya no interese. Si aún no le ha convencido, compare los aproximadamente dos minutos que tarda el formato tradicional, en oposición a los 3 segundos necesarios mediante la inclusión de QUICK en la sintaxis de la instrucción Format. La sintaxis completa es la siguiente:
WorkBench:>Format DRIVE "df0:" NAME "Formateo veloz" QUICK
Los dos parámetros siguientes, FFS y NOFFS, son autoexcluyentes. Es decir, no podrá utilizar la combinación de ambos como parámetros asociados a la instrucción Format. Deberá elegir entre formatear un disco con el FFS (Fast File System/Sistema de Ficheros Rápido) o no utilizar el mismo. Como consecuencia lógica en la evolución del sistema operativo siempre se suelen formatear los discos duros bajo dicho sistema. Sin embargo los usuarios de la versión 1.2 del KickStart (si es que todavía queda alguno) no podrán trabajar con discos formateados bajo el sistema FFS, por lo que siempre es conveniente tener a mano dicho parámetro para poder formatear un disco con el viejo sistema de ficheros (NOFFS).
¿Cuándo es aconsejable utilizar el parámetro NOFFS?, evidentemente cuando desee que su disco pueda trabajar en un ordenador equipado con la vieja ROM. Por defecto la instrucción format, si no se encuentra acompañada de ninguna de ambos parámetros, toma por defecto el formateo bajo el antiguo sistema (OFS/Old File System) correspondiente a discos flexibles, por lo que deberá indicar de forma específica que desea formatear el disco bajo el FFS para aprovechar todas las prestaciones, generalmente de velocidad de acceso, ofrecidas por la ROM 1.3 y posteriores.
INHIBIT es el último de los parámetros que se pueden incluir en la sentencia Format. Su función no es propiamente la de afectar el modo en que se realiza la operación de formateo. Su verdadera función es la de impedir el acceso a la unidad, por parte de cualquier otro programa, en el proceso de formateo. De esta forma nos evitaremos sorpresas desagradables como el 'cuelgue' del proceso de formateo e incluso la posible aparición de un GURU MEDITATION. ¿Cuándo es aconsejable la utilización de dicho parámetro?, normalmente cuando se esté ejecutando más de un programa de fondo, al mismo tiempo que se está realizando el proceso de formateo; pues la probabilidad de que alguno de estos intente acceder a la undiad es bastante elevada, con el consiguiente cuelgue por parte del sistema.
La flexibilidad del comando COPY
Comparando esta función con la misma del WorkBench, marca más la diferencia en cuanto a la flexibilidad y potencia ofrecida. Para comenzar realizaremos la misma operación que se ha ejecutado sobre todos los comandos para conocer las opciones disponibles asociadas a dicho comando:
WorkBench:>COPY ?
FROM,TO/A,ALL/S,QUIET/S,BUF=BUFFER,CLONE/S,DATE/S, NOPRO/S,COM/S
Como pueden adivinar, esta función ofrece más posibilidades desde el AmigaDOS que el simple hecho de arrastrar un icono de una ventana a otra desde el WorkBench. Con los dos primeros parámetros (totalmente opcionales), se asignará tanto la fuente (FROM) como el destino (TO) para la función de copia. Por ejemplo:
WorkBench:>Copy FROM sys:prueba TO ram:prueba
Copiará el fichero 'prueba' desde (FROM) la unidad SYS: al (TO) disco RAM: con el mismo nombre. Sin embargo también es posible alterar el nombre de salida del fichero en el proceso de copia; de esta forma mediante:
WorkBench:>Copy FROM sys:prueba TO ram:prueba1
Copiará el fichero 'prueba' al disco RAM: bajo el nombre de 'prueba1'.
Como se comentó al comienzo de este apartado, ambos parámetros (FROM, TO) son totalmente opcionales, pudiendo escribir la sentencia de la siguiente forma con la misma validez e iguales resultados:
WorkBench:>Copy sys:prueba ram:prueba
Sin embargo esto no es todo lo que se puede realizar con el comando COPY, son los siguientes parámetros los encargados de alterar el proceso de copia de una forma u otra bajo la asignación de los mismos. De esta forma mediante el parámetro ALL se copiará el contenido completo de un disco directorio o subdirectorio al dispositivo asignado como destino. Por ejemplo mediante la sentencia:
WorkBench:>Copy sys:devs ALL TO ram:
Copiará el contenido completo del directorio 'devs' incluido en el disco 'sys' al dispositivo RAM:; creando incluso los directorios precisos de forma automática para contener los ficheros y subdirectorios encontrados en el directorio fuente. Pero mediante este parámetro no se conseguirá copiar de forma exacta el fichero o ficheros fuentes en el destino. Para observar las diferencias ejecute el comando 'LIST' sobre ambos (tanto fuente como destino), y observará que no son exactamente iguales.
DISKCOPY VS COPY
Aunque los dos comandos realizan básicamente la misma operación, copiar ficheros, es conveniente resaltar cuando se aconsejable la utilización de uno sobre el otro.
Es evidente que si desea copiar ficheros a disco duro o a disco RAM o RAD, el comando a emplear es COPY puesto que DISKCOPY no puede realizar el proceso con dichos dispositivos. Sin embargo cuando se trata de copiar de disco a disco el contenido total del mismo ha de observarse una característica fundamental: la fragmentación de ficheros. Se dice que un fichero se encuentra fragmentado cuando los bloques que componen el mismo no se encuentran contiguos en el disco, sino con una gran separación entre los mismos; por lo que en el proceso de carga se empleará un mayor tiempo debido al número de veces en el que la cabeza a de encontrar el bloque correcto a lo largo del disco.
Copiar un disco que cuenta con un buen número de ficheros fragmentados mediante el comando DISKCOPY no solucionará el problema, ya que este comando copiará el disco fuente al destino manteniendo la misma estructura, por tanto se mantendrá la fragmentación de ficheros. Sin embargo utilizando la función COPY se podrá solucionar dicho problema de fragmentación, puesto que no se sigue la estructura original del disco fuente sino que se reasignarán nuevos bloques a un fichero concreto dentro del disco destino.
Por tanto es aconsejable el uso del comando DiskCopy cuando se trata de un disco que contenga pocos ficheros y estos sean de gran tamaño (este tipo de distribución evita en gran parte la fragmentación de ficheros), ya que en sí se evita la necesidad de formatear previamente un disco. Por otro lado es aconsejable utilizar la función COPY para copiar el contenido completo de un disco, cuando se trata de muchos ficheros de poco o mediano tamaño (generalmente este tipo de ficheros son más propensos a la fragmentación). Un inconveniente es que ha de formatear previamente el disco sobre el que se copiarán los ficheros. |
Mediante el siguiente parámetro (QUIET) se elimina la aparición de los mensajes correspondientes a la función de copia en la ventana SHELL. De esta forma se copiará el archivo o archivos sin que se visualicen los mismos por la ventana, siendo ésta opción especialmente útil como estética en la ejecución del mismo.
Mediante BUF, uno de los parámetros sin lugar a dudas más curioso, podrá incrementar el número de buffers de 512 bytes a utilizar en el proceso de copia, acelerando, en unos pocos segundos dicho proceso. El incremento de buffer sólo será significativo cuando se trate de copiar ficheros de gran tamaño, ya que en los que sólo tienen 80 ó 100 KB apenas se apreciará la diferencia. Es con el siguiente parámetro con el que se consigue copiar un fichero o un conjunto de estos de forma exacta. Mediante el parámetro CLONE no sólo se copiará el contenido del fichero fuente al fichero destino, sino que se mantendrán en el fichero destino los bits de protección, así como la fecha de creación y comentario asignados en el fichero fuente. Es decir, mediante CLONE se obtendrá una réplica exacta del fichero fuente. Su sintaxis es la siguiente:
WorkBench:>Copy devs: all to ram: CLONE
Otros parámetros que afectan a la operación de copia son DATES, NOPRO y COMENT mediante los cuales se copiará la fecha de creación del fichero fuente en el fichero destino, se eliminará el bit de protección del fichero fuente en el fichero destino y se copiará el comentario del fichero fuente en el fichero destino respectivamente.
Estos últimos parámetros son los que engloban la opción CLONE, sin embargo mediante los mismos se puede asignar en el proceso de copia las características individuales que se desean copiar en el fichero destino, dejando fuera las que no se crean convenientes.
Como habrán podido observar, la opción de copia desde el AmigaDOS es más potente que el simple hecho de arrastrar un icono desde el WorkBench.
DISKCOPY: Otro comando para copia
Además del comando COPY, el AmigaDOS cuenta con otro comando específico para copiar el contenido de un disco a otro. Las principales diferencias de este comando con respecto a COPY es que no se podrá trabajar sobre discos duros o disco RAM:. Es decir, su uso queda limitado al trabajo sobre discos flexibles.
Sin embargo su principal ventaja, además de copiar de forma exacta el contenido del disco fuente en el disco destino, es que el disco destino no tiene por qué estar formateado, ya que en el proceso realizado por DiskCopy se procederá al formateo del mismo.
Mediante el parámetro NAME <name> se podrá cambiar el nombre del disco destino de lo contrario el disco destino contendrá el mismo nombre que el disco fuente.
DELETE: Borrando ficheros
Una operación que se suele realizar con cierta frecuencia es la de borrar ficheros innecesarios, para ello el AmigaDOS pone a nuestra disposición un comando (DELETE) que el mayor número de veces sólo se utiliza de forma más elemental. Sin embargo este comando posee varias características poco empleadas que comentaré a continuación. Para comenzar haremos el requerimiento normal para que dicho comando nos muestre sus parámetros:
WorkBench:>Delete ?
DELETE: ,,,,,,, ALL/S, Q=QUIET
¿Qué significado tiene tantas comas?, Pues algo tan sencillo como que puede borrar hasta un total de 20 ficheros, situados en diferentes caminos, de una sola vez separados por espacios. Por ejemplo:
WorkBench:>Delete df0:fichero1 df1:fichero1 df1:fichero2 ram:fichero.0a
Borrará todos los ficheros definidos sin la necesidad de realizar la misma operación paso a paso. Mediante el parámetro ALL se borrarán todos los ficheros contenidos en el disco o directorio especificado. Por ejemplo:
WorkBench:>Delete RAM: ALL
Borrará todos los ficheros contenidos en dicho dispositivo. Sin embargo este comando tiene ciertas limitaciones. Una de ellas, la más importante, es que no se podrá borrar un directorio propiamente dicho si este no se encuentra vacío. Por lo tanto es preciso borrar el contenido de un directorio antes de proceder a borrar el mismo. Si intenta borrar un directorio, sin previamente haber borrado los ficheros contenidos en el mismo, obtendrá un mensaje de error.
El último parámetro (QUIET) es el mismo que se encuentra en la función COPY, la finalidad es la misma: no mostrar en la ventana del SHELL ninguno de los ficheros que se borran mediante el proceso. |