Comando Linux dd explicado para principiantes (8 ejemplos)

A veces, mientras trabaja en la línea de comando en Linux, es posible que deba realizar una operación de copia de manera que los datos/texto se formatee antes de que se escriban en el destino. Un ejemplo sencillo podría ser copiar texto de un archivo y escribir la versión con cambio de mayúsculas y minúsculas (de inferior a superior o de superior a inferior) en el archivo de destino.
Si ha estado buscando una manera de hacer esto, le alegrará saber que existe una utilidad de línea de comandos, denominada dd – que está construido para este propósito. En este tutorial, discutiremos cómo funciona la herramienta usando algunos ejemplos fáciles de entender. Pero antes de hacerlo, vale la pena mencionar que todos los ejemplos mencionados aquí se probaron en Ubuntu 18.04LTS.
Comando dd de Linux
En resumen, el dd El comando le permite copiar y convertir un archivo. La herramienta ofrece algunos operandos que puede usar para especificar qué tipo de formato desea. Aquí está la sintaxis genérica del comando como se describe en su página de manual:
dd [OPERAND]... dd OPTION
Los siguientes ejemplos de preguntas y respuestas deberían darle una buena idea sobre cómo funciona el comando dd.
Q1. ¿Cómo cambiar el caso del texto de entrada usando el comando dd?
Suponga que tiene algunas líneas de texto escritas en minúsculas y el requisito es convertirlas rápidamente a mayúsculas. Puedes hacerlo usando el conversión opción de línea de comando (con caso como su valor).
Aquí hay un ejemplo:
La captura de pantalla anterior muestra el comando y el texto de entrada. La combinación de teclas Ctrl+d se usó para decirle a dd que hemos terminado de ingresar la entrada, y tan pronto como se hizo, el comando produjo el siguiente resultado:
Entonces puede ver que el texto de entrada se convirtió de minúsculas a mayúsculas. Las últimas tres líneas son solo algunas estadísticas relacionadas con la operación.
Nota: Del mismo modo, puede utilizar el valor caso para convertir texto en mayúsculas a minúsculas.
Q2. ¿Cómo leer y escribir archivos en su lugar?
En el primer ejemplo anterior, ingresamos el texto a través de stdin (entrada estándar). Sin embargo, siempre puede usar archivos de entrada y salida. Para especificar los nombres de los archivos de entrada y salida, use el si y de opciones de línea de comandos.
Por ejemplo, si desea convertir el texto en mayúsculas y minúsculas en el archivo 1 y luego escribirlo en el archivo 2, puede hacerlo de la siguiente manera:
dd if=file1 of=file2 conv=ucase
Q3. ¿Cómo omitir texto mientras lee la entrada?
Si lo desea, puede pedirle a dd que omita algunos bytes iniciales mientras lee el texto de entrada. Esto se puede hacer usando el saltar opción que requiere un valor numérico. Si, por ejemplo, este valor es ‘N’, entonces dd omitirá bloques de tamaño N ibs al comienzo de la entrada. Esto nos lleva a ‘ibs’, que también es otra opción dd de la línea de comandos cuyo valor especifica el número de bytes que lee la herramienta a la vez (el valor predeterminado es 512).
Entonces, suponga que desea omitir los primeros 4 bytes de un archivo de entrada, luego primero debe establecer ibs en 4 y luego usar 1 como valor para omitir. Esto asegurará que la herramienta omita 1 bloque de 4 bytes mientras lee el archivo de entrada.
Entonces puede ver que el texto hey, se omitió mientras se leía el archivo 1; es por eso que no apareció en el archivo 2.
Q4. ¿Cómo intercambiar cada par de bytes de entrada en la salida?
Si existe tal requisito, también puede usar dd para intercambiar cada par de bytes de entrada. Esto se puede lograr usando torunda como valor para el conversión opción de línea de comando. La siguiente captura de pantalla hará las cosas más claras:
P5. ¿Cómo hacer que dd solo funcione cuando el archivo de salida aún no existe?
Si el requisito es que el comando dd no haga nada cuando el archivo de salida ya existe, entonces esta condición se puede aplicar usando el excluido valor para el conversión opción.
La siguiente captura de pantalla muestra el caso de uso en acción:
Anuncio publicitario
P6. ¿Cómo asegurarse de que el archivo de salida se actualice en modo de adición?
De forma predeterminada, dd simplemente sobrescribe el archivo de salida (si existe). Pero si desea agregar el texto en su lugar, use el valor adjuntar por oflag BANDERA y notrunc por conversión opción.
Por ejemplo:
dd if=file1 of=file3 oflag=append conv=notrunc
Aquí está el comando anterior en acción:
P7. ¿Cómo hacer que dd no cree un archivo de salida?
Si lo desea, también puede forzar el comando dd para que no cree un archivo de salida si el archivo proporcionado en el comando aún no existe. Esto se puede hacer usando el nocrear valor de la conversión opción de línea de comando.
Por ejemplo:
P8. ¿Cómo controlar el nivel de información impresa en stderr?
Si lo desea, también puede limitar la cantidad de información que el comando imprime en stderr. Esto se puede hacer usando el estado opción de línea de comandos. Por ejemplo, si desea suprimir todo menos los mensajes de error, puede pasar el valor ninguna a esta opción de línea de comandos:
dd if=file1 of=file3 status=none
Otros valores disponibles son noxfer y Progreso. Esto es lo que dice la página del manual sobre el estado opción:
status=LEVEL The LEVEL of information to print to stderr; 'none' suppresses everything but error messages, 'noxfer' suppresses the final transfer statistics, 'progress' shows periodic transfer statis? tics
Conclusión
Los ejemplos discutidos en este tutorial solo rascan la superficie cuando se trata de explorar todo lo que puede hacer el comando dd. Solo para darle una idea, puede usar la herramienta para crear sistemas de archivos virtuales, así como copias de seguridad de discos duros o particiones del sistema. Para obtener más información sobre dd, diríjase a su página man.