martedì 5 aprile 2011

La conversione di dd

Oggi mi va di parlare del comando dd.

dd sta per data duplicator e il suo compito è quello di effettuare copie di dati.

La mia intenzione non è quella di spiegare in modo pedissequo tutto ciò che dd può fare (non ne sarei nemmeno capace), bensì di mettere in evidenza una sua funzione (che definirei marginale) non molto conosciuta.

Ho scoperto, infatti, che dd riesce a convertire i caratteri di un file .txt dal minuscolo al maiuscolo e dal maiuscolo al minuscolo.


Partiamo dal file di testo, che  ho nominato file1


Il file si trova sulla scrivania; perciò apro il terminale e digito

$ cd Scrivania

Ora, per effettuare la conversione dei caratteri dal minuscolo al maiuscolo, digito

$ dd if=file1 conv=ucase of=file2

Questa riga di comando può sembrare complicata, ma in effetti non lo è. 

Premesso che ci stiamo occupando della conversione in maiuscolo dei caratteri di un file di testo,

per prima cosa dobbiamo prendere in considerazione  il file in entrata (if=file input) e il file in uscita (of=file output)

Una volta stabilito che if e of stanno rispettivamente per file-in e file-out, dobbiamo specificare a dd cosa deve fare.

Ed ecco che entra in scena l'opzione conv.

Conv sta per conversione. Ma in cosa consiste questa conversione?

Entra così in gioco un ulteriore elemento: Ucase. Ucase è uno dei tanti simboli che l'operando  conv può assumere e sta per "convertire in maiuscolo".



Ecco allora il contenuto del file2 (file output)

Per effettuare, invece, la conversione dal maiuscolo al minuscolo utilizzeremo quest'altra riga


$ dd if=file2 conv=lcase of=file1

In tal caso conv=lcase  sta per convertire in minuscolo.


Ciao! :)

10 commenti:

  1. dd è un tool a dir poco eccezionale! Non conoscevo questa sua capacità (non conosco molto le sue capacità in effetti) :)

    Io per conversioni di questo tipo ho sempre usato tr:

    tr a-z A-Z < file1

    Il problema è che non salva su un file, allora:

    tr a-z A-Z < file > file2

    RispondiElimina
  2. E' un po' strano usare dd per fare queste cose, pero' cosi' chi non lo conosce puo' prendere familiarita' con dd che e' uno strumento bello potente.

    Cosa piu' importante, come finisce la barzelletta?

    RispondiElimina
  3. @Mattux
    Tr è un altro tool che mi affascina. Un altro modo per convertire caratteri di un file in maiuscolo con tr è il seguente:

    cat file1 | tr '[:upper:][:lower:]' '[:lower:][:upper:]' >file2

    :D

    RispondiElimina
  4. @Idl

    Mi dispiace ma la barzellettà non ha un finale. O meglio, non ha un finale lieto; infatti il figlio muore prima di svelare il suo gran segreto. :(

    RispondiElimina
  5. Ma si può anche fare così

    echo "test" | sed 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'

    RispondiElimina
  6. @lightuono
    E che magari così converte i caratteri di un file di testo. Giusto? :D

    cat file1 | sed 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' >file2

    RispondiElimina
  7. si oppure

    sed -i 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' file1

    RispondiElimina
  8. @Bit3Lux @Lightuono Che figo poter fare le cose in n modi diversi :D

    Comunque sed prima o poi devo imparare a usarlo :\

    RispondiElimina
  9. davvero un bel post!

    Ma tutti quanti vorremmo sapere a che cavolo gli servivano quelle palline?! xD

    RispondiElimina
  10. @Picchio

    Grazie Picchio. Circa l'utilizzo di quelle palline, mi dispiace ma non l'ho mai saputo. :D

    RispondiElimina