GNU/Linux >> Znalost Linux >  >> Linux

Co by mohlo způsobit, že příkaz file v Linuxu nahlásí textový soubor jako binární data?

Vim se velmi snaží porozumět tomu, co na něj hodíte, aniž byste si stěžovali. To z něj dělá relativně špatný nástroj pro diagnostiku file výstup 's.

Vimovo upozornění „[converted]“ naznačuje, že v souboru bylo něco, co by vim neočekával, že uvidí v kódování textu navrženém vaším národním nastavením (LANG atd.).

Ostatní již navrhli

  • cat -v
  • xxd

Můžete zkusit grepping pro jiné znaky než ASCII.

  • grep -P '[\x7f-\xff]' filename

Druhou možností jsou nestandardní konce řádků pro platformu (tj. CRLF nebo CR), ale očekával bych file vyrovnat se s tím a nahlásit „textový soubor DOS“ nebo podobně.


Pokud spustíte file -D filename , file zobrazuje informace o ladění, včetně testů, které provádí. Na konci se zobrazí, jaký test byl úspěšný při určení typu souboru.

U běžného textového souboru to vypadá takto:

[31> 0 regex,=^package[ \t]+[0-9A-Za-z_:]+ *;,""]
1 == 0 = 0
ascmagic 1
filename.txt: ISO-8859 text, with CRLF line terminators

To vám řekne, co zjistil, aby určil, že se jedná o tento typ mime.


Problém jsem našel pomocí binárního vyhledávání k nalezení problematických řádků.

head -n {1/2 line count} file.cpp > a.txt
tail -n {1/2 line count} file.cpp > b.txt

Spuštěn file proti každé polovině a opakování procesu mi pomohlo najít linii, která se dopustila. Našel jsem ovládací prvek +P (^P ) znak v něm vložený. Odstraněním se problém vyřešil. Napíšu si skript v Perlu, abych tyto znaky (a další rozšířené) v budoucnu vyhledával.

Velké díky všem, kteří poskytli odpověď na všechny tipy!


Linux
  1. Jak používat příkaz Tar v Linuxu

  2. Vytvářejte soubory pomocí příkazového řádku v Linuxu

  3. Jaký je příkaz pro kopírování, čtení a odstraňování souboru v linuxu

  1. 4 způsoby, jak vytvořit textový soubor v terminálu Linux

  2. Základní příklady příkazu File v Linuxu

  3. 9 Užitečné příklady příkazu Split v Linuxu

  1. Jaký je účel souboru .bashrc v Linuxu

  2. Co je ekvivalentní příkazu Linux File pro Windows?

  3. K čemu je Linux test – příkazový test?