GNU/Linux >> Tutoriels Linux >  >> Linux

Convertir le mode binaire en mode texte et l'option inverse

od -An -vtx1 Check.tar > Check.txt

Vous avez besoin de -v ou od condensera des séquences d'octets identiques.

Pour l'inverse :

LC_ALL=C tr -cd 0-9a-fA-F < Check.txt | xxd -r -p > Check.tar

Ou :

perl -ape '$_=pack "(H2)*", @F' Check.txt > Check.tar

Si votre objectif est de transférer des fichiers sur un canal qui ne prend en charge que le texte ASCII, il existe des outils dédiés pour cela comme uuencode :

tar cf - myfiles.* | xz | uuencode myfiles.tar.xz | that-channel 

Et pour récupérer ces fichiers à l'autre bout :

uudecode < file.uu

recréerait myfiles.tar.xz .

Ou :

uudecode -o - < file.uu | xz -d | tar xf -

Pour extraire les fichiers.


En répondant à la partie X de ce problème XY, je vous recommande de rechercher la raison pour laquelle vos transferts de fichiers binaires ne sont pas transférés correctement.

S'il s'avère que la raison est que vous n'avez pas de chemin de données propre de 8 bits, vous pouvez alors utiliser des outils existants qui ont été créés pour gérer cette situation, tels que base64 ou même uuencode . Vieux mais toujours très efficace.

tar czvf - /etc/h* | base64 >/tmp/tar.tgz.b64
ls -l /tmp/tar.tgz.b64
-rw-r--r-- 1 root root 7364 May 26 11:52 /tmp/tar.tgz.b64
...
base64 -d /tmp/tar.tgz.b64 | tar tzvf -

ou

tar czvf - /etc/h* | uuencode - >/tmp/tar.tgz.uue
ls -l /tmp/tar.tgz.uue
-rw-r--r-- 1 root root 7530 May 26 11:51 /tmp/tar.tgz.uue
...
uudecode /tmp/tar.tgz.uue | tar xzvf -

Dans mon cas, je n'avais pas xxd ou uudecode sur l'appareil distant mais j'avais bash. Je me suis retrouvé avec ce qui suit :

Convertissez du binaire en txt avec :

od -An -vtx1 myfile.bin > myfile.txt

Reconvertissez ensuite de txt en binaire avec :

while read p; do
    IFS=' ' read -r -a array <<< "$p" 
    for index in "${!array[@]}" 
    do
        echo -en "\x${array[index]}" 
    done
done < myfile.txt > myfile.bin

Linux
  1. Pourquoi (et comment) l'utilisation de Cat sur des fichiers binaires a-t-elle gâché le terminal ?

  2. Qu'est-ce qui pourrait amener la commande file sous Linux à signaler un fichier texte en tant que données binaires ?

  3. Comment puis-je convertir des données textuelles à deux valeurs en binaire (représentation binaire)

  4. Comment convertir les sauts de ligne dans un fichier texte entre les formats Windows et Unix/Linux ?

  5. Manière correcte d'utiliser l'option --remove-files avec TAR

Copiez et collez du texte dans le terminal sur Ubuntu 20.04

Copiez et collez du texte dans le terminal sur Ubuntu 22.04

Envoyez un ping à plusieurs serveurs et affichez la sortie dans l'interface utilisateur textuelle supérieure

Convertir tout le texte des majuscules aux minuscules et vice versa ?

Comment compresser et extraire des fichiers à l'aide de la commande tar sous Linux ?

Meilleurs éditeurs de texte Linux :les 20 éditeurs de texte et HTML examinés