Alguna vegada has intentat obrir un fitxer en un editor només per descobrir que conté un contingut binari il·legible?
L'ordre de les "cadenes" de Linux permet visualitzar els caràcters llegibles per humans de qualsevol fitxer.
El propòsit principal d'utilitzar la comanda "cadenes" és determinar quin tipus de fitxer està mirant, però també podeu utilitzar-lo per extreure text. Per exemple, si teniu un fitxer d'un programa propietari que guarda fitxers en un format binari estrany, podeu utilitzar "cadenes" per extreure el text que heu introduït al fitxer.
Exemple d'ús del comandament de cadenes
Una bona manera de demostrar el poder del comandament de cadenes és crear un document amb LibreOffice Writer.
Simplement obriu l' LibreOffice Writer i introduïu algun text i, a continuació, deseu-lo en el format ODT estàndard .
Ara obriu una finestra de terminal (premeu CTRL, ALT i T alhora) i després utilitzeu l'ordre cat per mostrar el fitxer de la manera següent:
cat yourfilename.odt | més
(Reemplaça el nom del teu nom de fitxer amb el nom del fitxer que heu creat)
El que veurà és un mur sencer de text il·legible.
Premeu la barra espaiadora per desplaçar-vos pel fitxer. Esporàdicament al llarg del fitxer, veureu el text que heu introduït.
L'ordre de cadenes es pot utilitzar per mostrar només les parts que són llegibles per humans.
En la forma més simple, podeu executar el següent comandament:
cadenes yourfilename.odt | més
Com abans, apareixerà un mur de text, però només text que es pot llegir com a humà. Si tens sort, podràs veure el teu text.
No obstant això, el que podreu veure que és clau és a primera línia:
mimetypeapplication / vnd.oasis.opendocument.text
Sabem que el tipus de fitxer és un fitxer ODT de l'LibreOffice Writer per 2 raons:
- Hem creat el fitxer
- L'extensió és .ODT
Imagineu que no heu creat el fitxer o heu trobat el fitxer en un disc recuperat i el fitxer no tenia una extensió.
La recuperació de Windows sovint recuperaria fitxers amb noms com 0001, 0002, 0003, etc. El fet que els fitxers es recuperessin sigui genial, però intentar esbrinar quins tipus d'aquests fitxers era un malson.
En utilitzar cadenes, teniu una oportunitat de fer front al tipus de fitxer. Sabent que un fitxer és un fitxer opendocument.text, podeu desar-lo amb l'extensió ODT i obrir-lo a l'escriptor de l'LibreOffice.
En cas que no sabeu que un fitxer ODT és bàsicament un fitxer comprimit. Si canvieu el nom de la vostra llista de fitxers a la vostra adreça de cerca de fitxers.zip, podeu obrir-la en una eina d'arxiu i fins i tot descomprimir el fitxer.
Comportament alternatiu
De manera predeterminada, la comanda cadenes retorna totes les cadenes d'un fitxer, però podeu canviar el comportament de manera que retorna cadenes de les seccions de dades inicialitzades i carregades en un fitxer.
Què significa això exactament? Ningú no sap que ho sap.
Té sentit assumir que està utilitzant cadenes per intentar trobar el tipus de fitxer o buscar text específic en un fitxer.
Si al executar l'ordre de cadenes utilitzant el comportament predeterminat no obté la sortida que esperava, llavors intenteu executar una de les ordres següents per veure si fa la diferència:
cadenes-de la vostra filename
cadenes: dades del teu nom
La pàgina de manual indica que l'ordre anterior pot ajudar a reduir la quantitat d'escombraries retornats de les cadenes.
La comanda "cadenes" es pot configurar per a treballar en reversa, de manera que l'opció menys l'interruptor d sigui el comportament predeterminat. Si aquest és el cas del vostre sistema, podeu tornar totes les dades utilitzant l'ordre següent:
cadenes -a vostra filename
Format de sortida
Podeu obtenir el text de la sortida per mostrar el nom del fitxer al costat de cada línia de text.
Per fer-ho, executeu una de les ordres següents:
cadenes-de la vostra filename
cadenes --print-file-name yourfilename
La sortida ara es veurà així:
el teu nom de fitxer: un text
el teu nom de fitxer: una altra peça de text
Com a part de la sortida també es pot mostrar el desplaçament d'on apareix aquest text en un fitxer. Per fer-ho executeu el següent comandament:
cadenes-o el vostre nom de fitxer
La sortida es veurà així:
16573 el vostre
Text 17024
El desplaçament és en realitat el desplaçament octal, encara que depenent de com s'hagin compilat les cadenes per al vostre sistema, podria ser fàcilment el hexadecimal o el desplaçament decimal.
Una forma més precisa d'obtenir el desplaçament que desitgeu és utilitzar les següents ordres:
cadenes -td yourfilename
cadenes - al vostre nom de fitxer
cadenes, el teu nom de fitxer
El menys t significa retornar el desplaçament i el caràcter que segueix determina el tipus de compensació. (és a dir, d = decimal, o = octal, h = hex).
Per defecte, el comandament de cadenes imprimeix cada cadena nova en una nova línia, però podeu configurar el delimitador que trieu. Per exemple, per utilitzar un símbol de canonada ("|"), ja que el delimitador executa l'ordre següent:
cadenes -s "|" el teu nom de nom
Ajusteu el límit de cadena
L'ordre de cadenes per defecte busca una cadena de 4 caràcters imprimibles seguits. Podeu ajustar el valor predeterminat de manera que només retorna una cadena amb 8 caràcters imprimibles o 12 caràcters imprimibles.
En ajustar aquest límit, podeu adaptar la sortida per obtenir el millor resultat possible. Si busqueu una cadena massa llarga, corre el risc d'ometre un text útil però, per fer-ho massa curt, potser acabeu amb una mica més de brossa retornada.
Per ajustar el límit de cadena, executeu el següent comandament:
cadenes -n 8 el teu nom de fitxer
En l'exemple anterior he canviat el límit a 8.
Podeu reemplaçar 8 amb el número que vulgueu.
També podeu utilitzar l'ordre següent per fer el mateix:
cadenes --bytes = 8 nom de fitxer
Inclou espais en blanc
Per defecte, la comanda string conté espais en blanc, com ara una pestanya o un espai com a caràcter imprimible. Per tant, si teniu una cadena que diu "el gat estava assegut a la catifa", l'ordre de les cadenes tornaria tot el text.
Els caràcters de línia nova i els retorns de carro no es consideren caràcters imprimibles de manera predeterminada.
Per obtenir les cadenes per reconèixer nous caràcters de línia i retorns de carro com a cadenes d'execució de caràcters imprimibles de la següent manera:
cadenes-en nom teu
Canvieu la codificació
Hi ha 5 opcions de codificació disponibles per al seu ús amb cadenes:
- s = 7 bit bytes (utilitzat per a ASCII, ISO 8859)
- S = byte de 8 bits
- b = 16 bits més gran
- l = 16 poc de bit
El valor predeterminat és el byte de 7 bits.
Per canviar la codificació, executeu el següent comandament:
cadenes -és el teu nom de fitxer
cadenes --encoding = s yourfilename
A l'ordre anterior, he especificat el valor predeterminat "s" que significa 7 bit byte. Simplement reemplaça la "s" amb la lletra de codificació de la teva elecció.
Canvieu el nom de la descripció del fitxer binari
Podeu canviar el comportament de les cadenes perquè utilitzi una biblioteca de descàrregues de fitxers binària diferent de la que s'ofereix al vostre sistema.
Aquest canvi és un per als experts. Si teniu una altra biblioteca a utilitzar, podeu fer-ho executant les següents cadenes:
cadenes-T bfdname
Opcions de lectura d'un fitxer
Si utilitzeu les mateixes opcions cada vegada, no voleu que hàgiu d'especificar tots els commutadors cada vegada que executeu l'ordre perquè triga el temps.
El que podeu fer és crear un fitxer de text mitjançant nano i especificar les opcions dins d'aquest fitxer.
Per provar-ho en un terminal, executeu el següent comandament:
nano stringsopts
Al fitxer introduïu el text següent:
-f -o -n 3 -s "|"
Deseu el fitxer prement CTRL i O i sortiu prement CTRL i X.
Per executar les ordres de cadenes amb aquestes opcions, executeu el següent comandament:
cadenes @stringsopts yourfilename
Les opcions seran llegides a partir dels fitxers de cadena de fitxers i hauríeu de veure el nom de fitxer abans de cada cadena, el desplaçament i el "|" com a separador.
Obtenció d'ajuda
Si voleu llegir més sobre cadenes, podeu executar l'ordre següent per obtenir ajuda.
cadenes - ajuda
També podeu llegir la pàgina del manual:
cadenes d'home
Esbrineu quina versió de cadenes s'està executant
Per trobar la versió de les cadenes que executeu executeu una de les ordres següents:
cadenes -v
cadenes -V
cadenes --versió