GNU/Linux >> Znalost Linux >  >> Linux

Proč clang při přesměrování generuje nesrozumitelný text?

Nemá to nic společného s kódovými stránkami/kódováním. Váš výstup není prostý text. Obsahuje sekvence jako [0;1;32m . Tyto řetězce (před každým z nich je zobrazen znak [escape]) jsou pokyny pro terminál, aby zobrazil text tučně, kurzívou, v různých barvách atd. Výsledkem je snazší čtení výstupu, pokud váš terminál podporuje to.

Měla by existovat možnost říci clangovi, aby se nesnažil zkrášlit výstup, ale místo toho použil prostý text. Zkontrolujte manuál. (Nemám žádný po ruce, takže vám nemohu říci, jaký by byl správný příkaz.)


Alternativně můžete místo odstranění barev z výstupu zobrazit barevný výstup ve svém terminálu pomocí možnosti raw less

less -r output.txt

Tyto znaky, například [0;33m Připadá mi to jako ovládání výstupu na terminálu. Jsou součástí sady escape sekvencí, které se často používají k aplikaci barev na text v terminálu. Ve svém surovém stavu, jako je tento, se také často používá k nanášení barvy na samotný bash prompt - Zde je to, co jsem používal v .bashrc roky na všech mých počítačích:

export PS1='\[\033[1;33m\]\u\[\033[1;35m\]@\[\033[1;32m\]\h\[\033[0;36m\]\w\[\033[1;37m\]\$ \[\033[0;37m\]'

(Většina si myslí, že je to ošklivé, ale mně se to líbí).

Podívejte se, zda jste schopni najít přepínač pro odstranění jakéhokoli barevného kódování nebo podobně z výstupu vašich příkazů, a zjistěte, zda to pomůže.


Linux
  1. Proč OpenStack hlásí typ Hypervisoru jako QEMU, když libvirt_type je KVM?

  2. Proč možnost Ssh -t přidává Cr &Lf do přesměrovaného výstupu?

  3. "ocas -f | Iconv -fsjis” nevydává nic?

  1. Proč substituce příkazů Shell pohltí znak na konci nového řádku?

  2. Proč má Ls -l na výstupu jinou velikost než Ls -s?

  3. Proč `cat /dev/urandom` rozbije váš terminál?

  1. Jak se program rozhodne, zda bude či nebude mít barevný výstup?

  2. Ssh – Jak Ssh vyzve k zadání hesla, když jsou všechny vstupy a výstupy přesměrovány?

  3. Jak vytisknu barevný text do terminálu Linux?