No Kubuntu Linux, o navegador Google Chrome adiciona uma soma de verificação ao arquivo, impedindo simplesmente editar o arquivo manualmente. Então, estou escrevendo um script para adicionar a soma de verificação.
$ cat .config/google-chrome/Default/Custom\ Dictionary.txt
AATEST
dotancohen
checksum_v1 = 2b7288da7c9556608de620e65308efa4$
Sem problemas, copiarei o arquivo inteiro, exceto a última linha, e verificarei se o hash MD5 corresponde à soma de verificação.
$ head -n -1 .config/google-chrome/Default/Custom\ Dictionary.txt > ~/chrome-dict
$ cat ~/chrome-dict
AATEST
dotancohen
$ md5sum ~/chrome-dict
2b7288da7c9556608de620e65308efa4 /home/dotancohen/chrome-dict
Obtivemos 2b7288da7c9556608de620e65308efa4
, como esperado. Corresponde! Então, vamos adicionar isso ao final do arquivo.
$ { printf "checksum_v1 = " ; printf $(md5sum -z ~/chrome-dict | awk '{print $1}') ; } >> ~/chrome-dict
$ cat ~/chrome-dict
AATEST
dotancohen
checksum_v1 = 08f7dd79a17e12b178a1010057ef5e34$
Não, checksum errado! Vamos tentar cat para garantir que nada seja escrito no arquivo entre as duas printf
instruções.
$ head -n -1 .config/google-chrome/Default/Custom\ Dictionary.txt > ~/chrome-dict
$ cat ~/chrome-dict
AATEST
dotancohen
$ { printf "checksum_v1 = " ; printf $(md5sum -z ~/chrome-dict | awk '{print $1}') ; } | cat >> ~/chrome-dict
$ cat ~/chrome-dict
AATEST
dotancohen
checksum_v1 = 08f7dd79a17e12b178a1010057ef5e34$
Ainda checksum errado! Vamos tentar um arquivo tmp.
$ head -n -1 .config/google-chrome/Default/Custom\ Dictionary.txt > ~/chrome-dict
$ cat ~/chrome-dict
AATEST
dotancohen
$ { printf "checksum_v1 = " ; printf $(md5sum -z ~/chrome-dict | awk '{print $1}') ; } >> ~/chrome-dict-tmp
$ cat ~/chrome-dict-tmp >> ~/chrome-dict && rm ~/chrome-dict-tmp
$ cat ~/chrome-dict
AATEST
dotancohen
checksum_v1 = 2b7288da7c9556608de620e65308efa4$
Funcionou! Por que os one-liners que redirecionam a saída para o fim do ~/chrome-dict
arquivo não retornaram o hash MD5 correto?