mandato dd
Finalidad
Convierte y copia un archivo.
Sintaxis
dd [ bs=TamañoBloque ][cbs=TamañoBloque ]
[conv= [ ascii |block|ebcdic | ibm | unblock ]
[oblock ] [notrunc ]][recuento =
InputBlocks ] [ archivos=Archivos de entrada ] [fskip=
SkipEOFs ] [ ibs=InputBlockSize ] [si=
InFile ] [ obs=OutputBlockSize ] [de=
OutFile ] [ buscar=RecordNumber ] [skip=
SkipInputBlocks ][ span=sí|no ]
dd [ Option=Valor ]
Descripción
Cuando se especifican tamaños, se espera un número de bytes. Un número que termina con w, bo k especifica la multiplicación por 2, 512 o 1024 respectivamente; un par de números separados por una x o un * (asterisco) indica un producto. El parámetro de recuento espera que se copie el número de bloques, no el número de bytes.
Las correlaciones de juegos de caracteres asociadas con los distintivos conv=ascii y conv=ebcdic son operaciones complementarias. Estos distintivos se correlacionan entre caracteres ASCII y el subconjunto de caracteres EBCDIC que se encuentra en la mayoría de estaciones de trabajo y keypunches.
Utilice el valor del parámetro cbs si especifica alguna de las conversiones block, unblock, ascii, ebcdico ibm . Si se especifican los parámetros unblock o ascii , el mandato dd realiza una conversión de longitud fija a longitud variable. De lo contrario, realiza una conversión de longitud variable a longitud fija. El parámetro cbs determina la longitud fija.
Cuando finaliza, el mandato dd informa del número de bloques de entrada y salida completos y parciales.
- Normalmente, sólo necesita acceso de escritura al archivo de salida. Sin embargo, cuando el archivo de salida no está en un dispositivo de acceso directo y utiliza el distintivo seek , también necesita acceso de lectura al archivo.
- El mandato dd inserta caracteres de nueva línea sólo al convertir con los distintivos conv=ascii o conv=unblock establecidos; sólo se rellena al convertir con los distintivos conv=ebcdic, conv=ibmo conv=block establecidos.
- Utilice el mandato backup, taro cpio en lugar del mandato dd siempre que sea posible para copiar archivos en cinta. Estos mandatos están diseñados para su uso con dispositivos de cinta. Para obtener más información sobre el uso de dispositivos de cinta, consulte el archivo especial rmt .
- Los valores de tamaño de bloque especificados con los distintivos bs, ibs y obs siempre deben ser un múltiplo del tamaño de bloque físico para el soporte que se está utilizando.
- Cuando se especifica el distintivo conv=sync , el mandato dd rellena los bloques de entrada parciales con nulos. Por lo tanto, el mandato dd inserta valores nulos en el medio de la secuencia de datos si alguna de las lecturas no recibe un bloque completo de datos (tal como especifica el distintivo ibs ). Esto es una ocurrencia común al leer de las tuberías.
- Si el distintivo bs se especifica por sí mismo y no se especifica ninguna conversión que no sea sync, noerror o notrunc , los datos de cada bloque de entrada se grabarán como un bloque de salida independiente; si la lectura devuelve menos de un bloque completo y no se especifica sync , el bloque de salida resultante tendrá el mismo tamaño que el bloque de entrada. Si no se especifica el distintivo bs , o se especifica una conversión que no sea sync, noerror o notrunc , la entrada se procesará y se recopilará en bloques de salida de tamaño completo hasta que se alcance el final de la entrada.
Expansión entre dispositivos
La expansión de dd entre dispositivos no se producirá si uno de los parámetros InFile o OutFile es stdin o stdout.
La expansión se producirá de tal forma que dd solicitará el siguiente dispositivo durante la grabación si el dispositivo de salida está lleno. Durante la lectura desde el dispositivo de entrada, dd solicitará el siguiente dispositivo si los datos se leen completamente desde el dispositivo de entrada incluso cuando el dispositivo no ha llegado al final. En este caso sería necesario presionar ' n' para salir.
Distintivos
| Elemento | Descripción |
|---|---|
| bs=TamañoBloque | Especifica el tamaño de bloque de entrada y salida, reemplazando los distintivos ibs y obs . Los valores de tamaño de bloque especificados con el distintivo bs siempre deben ser un múltiplo del tamaño de bloque físico para el soporte que se está utilizando. |
| cbs=TamañoBloque | Especifica el tamaño de bloque de conversión para conversiones de longitud variable a longitud fija y de longitud fija a longitud variable, como por ejemplo conv=block. |
| count=Bloques de entrada | Sólo copia el número de bloques de entrada especificados por la variable InputBlocks . |
| conv= Conversión,.... | Especifica una o más opciones de conversión. Las conversiones múltiples deben estar separadas por comas. La lista siguiente describe las opciones posibles:
|
| files=Archivosde entrada | Copia el número de archivos especificados por el valor de la variable InputFiles de los archivos de entrada antes de finalizar (sólo tiene sentido cuando la entrada es una cinta magnética o un dispositivo similar). |
| fskip=SaltarEOFs | Omite el número de caracteres de fin de archivo especificados por la variable SkipEOFs antes de empezar a copiar; esta variable SkipEOFs es útil para el posicionamiento en cintas magnéticas multiarchivo. |
| ibs=InputBlockSize | Especifica el tamaño de bloque de entrada; el valor predeterminado es 512 bytes o un bloque. Los valores de tamaño de bloque especificados con el distintivo ibs siempre deben ser un múltiplo del tamaño de bloque físico para el soporte que se está utilizando. |
| si=InFile | Especifica el nombre del archivo de entrada; la entrada estándar es el valor predeterminado. |
| obs=OutputBlockSize | Especifica el tamaño de bloque de salida; el valor predeterminado es 512 bytes o un bloque. Los valores de tamaño de bloque especificados con el distintivo obs siempre deben ser un múltiplo del tamaño de bloque físico para el soporte que se está utilizando. |
| of=Archivode salida | Especifica el nombre del archivo de salida; la salida estándar es el valor predeterminado. |
| buscar=RecordNumber | Busca el registro especificado por la variable RecordNumber desde el principio del archivo de salida antes de copiarlo. |
| skip=SaltarBloquesDeEntrada | Omite el valor especificado de SkipInputBlocks de los bloques de entrada antes de empezar a copiar. |
| span=sí|no | Permite la expansión entre dispositivos si se especificayesy funciona como valor predeterminado si se especifica comono. Consulte Expansión entre dispositivos, para obtener más información. |
Estado de salida
Este mandato devuelve los siguientes valores de salida:
| Elemento | Descripción |
|---|---|
| 0 | El archivo de entrada se ha copiado correctamente. |
| >0 | Se ha producido un error. |
Ejemplos
- Para convertir un archivo de texto ASCII a EBCDIC, escriba:Este mandato convierte eltext.asciien la representación EBCDIC, almacenando la versión EBCDIC en latext.ebcdic.xlsxNota: Al especificar el parámetro conv=ebcdic , el mandato dd convierte el carácter ASCII ^ (circunflejo) en un carácter EBCDIC no utilizado (9A hexadecimal) y el ASCII ~ (tilde) en el EBCDIC ^ (símbolo NOT).
- Para convertir el archivo ASCII de registro de longitud variable /etc/passwd en un archivo de registros EBCDIC de longitud fija de 132 bytes, escriba:
- Para convertir el archivo EBCDIC de 132 bytes por registro en líneas ASCII de longitud variable en minúsculas, escriba:
- Para convertir el archivo ASCII de registro de longitud variable /etc/passwd en un archivo de registros de longitud fija de 132 bytes en la versión IBM de EBCDIC, escriba:
- Para copiar bloques de una cinta con bloques de 1KB en otra cinta utilizando bloques de 2KB , escriba:
- Para utilizar el mandato dd como filtro, escriba:ls -l | dd conv=ucaseEste mandato muestra un listado largo del directorio actual en mayúsculas.Nota: El rendimiento del mandato dd y del mandato cpio en la unidad de cinta magnética 9348 Modelo 12 se puede mejorar cambiando el tamaño de bloque predeterminado. Para cambiar el tamaño de bloque, utilice el mandato chdev de la siguiente manera:
chdev -l Device_name -a block_size=32k - Para realizar transferencias eficientes al disquete de 3.5-inch 1.4MB utilizando 36 bloques de 512 bytes, escriba:
Este mandato escribe el valor del parámetro Filename en el dispositivo de disquete un cilindro a la vez. Los 2conv=synces necesario al leer del disco y cuando el tamaño de archivo no es un múltiplo del tamaño de bloque de disquete. No intente esto si la entrada del mandato dd es un conducto en lugar de un archivo, rellenará la mayor parte de la entrada con nulos en lugar de sólo el último bloque.
- Para copiar bloques de un archivo de entrada con el tamaño de bloque establecido en 720b bloques en un tipo de disquete de tamaño 1.44MB :dd if=testfile of=/dev/fd0 bs=720b conv=syncNota: Si el archivo de entrada es mayor que el tamaño físico del dispositivo de salida, dd le solicitará otro dispositivo.
- Para copiar bloques de un archivo de entrada con el tamaño de bloque establecido en 32k bloques en un tipo de cinta:dd if=inputfile of=/dev/rmt0 bs=32k conv=sync
- Para copiar bloques de datos de cinta en un archivo del directorio actual con el tamaño de bloque establecido en 32k bloques, escriba lo siguiente:dd if=/dev/rmt0 of=outfile bs=32k conv=sync
- Para copiar bloques de un archivo de entrada con el tamaño de bloque establecido en 720b, en un disquete de tamaño 1.44MB , entre:
dd if=testfile of=/dev/fd0 bs=720b conv=sync span=yesNota: Si el archivo de entrada es mayor que el tamaño físico del dispositivo de salida, dd le solicitará otro dispositivo. - Para copiar bloques de un archivo de entrada con el tamaño de bloque establecido en 32k, en una cinta, entre:
dd if=inputfile of=/dev/rmt0 bs=32k conv=sync span=yes - Para copiar bloques de datos de cinta con el tamaño de bloque establecido en 32k, en un archivo del directorio actual, entre:
dd if=dev/rmt0 of=outfile bs=32k conv=sync span=yes
Archivos
| Elemento | Descripción |
|---|---|
| /usr/bin/dd | Contiene el mandato dd . |