Fórum Root.cz

Hlavní témata => Software => Téma založeno: radoslav2 24. 09. 2019, 01:31:02

Název: Změna barev v linuxovém shellu
Přispěvatel: radoslav2 24. 09. 2019, 01:31:02
Dobrý večer,

Potřebuji přistupovat k nové pracovní stanici na které je nahraný upravený Debian.
(Stanice je umístěna na lodi a je zakázáno měnit konfiguraci systému)
Terminál v této distribuci má bílé pozadí a šedivý text a opravdu špatně se to čte.

Vytvořil jsem si zástupce pro spuštění Terminálu s jinými základními barvami a konfigurační skripty jsem si chtěl upravit na jinou barvu ale naprosto v tom plavu a vše co jsem znal o PS1 nebo o printf jsem už dávno zapomněl.

Na internetu jsem našel hromadu informací o printf (ale jedná se spíše o mini-tutoriály ze kterých nedokážu pochopit celou syntaxi)

Může mi někdo navrhnout vlastní řešení pro úpravu barev na linuxový bash shell ? (Nějaký základ, černé pozadí a zelený text)
- upravený zástupce
- změna barvy ve skriptu


Jako příklad dám tohle:
Kód: [Vybrat]
printf %b '\e[42m' '\e[8]' '\e[H\e[J'
Nepochopil jsem syntaxi a co jednotlivé hodnoty dělají, kdyby se našel někdo ochotný a dokázal to rozkódovat a vysvětlit.

Jinak většinou (minimálně) používám PowerShell kde je taky printf ale nikdy jsem to nepoužil.
Název: Re:printf a syntaxe
Přispěvatel: kmarty 24. 09. 2019, 02:43:42
To jsou ANSI escape kody (viz wiki, i ceska). Printf je jen prostredek jak to tomu terminalu rict (stejnou sluzbu udela i echo -e “...”).
Název: Re:printf a syntaxe
Přispěvatel: k3dAR 24. 09. 2019, 03:51:51
https://askubuntu.com/questions/558280/changing-colour-of-text-and-background-of-terminal
https://stackoverflow.com/questions/4842424/list-of-ansi-color-escape-sequences/33206814

nevim ale zda si terminal nebude barvy nastavovat i tak po svem, co je tam za prostredi? jakej terminal? nelze nastavit ten terminal pres sve menu/nastaveni/vzhled?
Název: Re:Změna barev v linuxovém shellu
Přispěvatel: kmarty 24. 09. 2019, 11:40:51
To je fakt. Prvni programek co si hraje z barvami (staci 'ls' s nastavenym LSCOLORS) vyresetuje barvy zpet na default (resp. vseho na default '\x1b[0m') a je tam kde byl:
(https://i.ibb.co/Z1BtJnr/Sn-mek-obrazovky-2019-09-24-v-11-36-26.png) (https://i.ibb.co/h1BhMPN/Sn-mek-obrazovky-2019-09-24-v-11-36-26.png)
Ted do jakyho extremu je brany "...je zakázáno měnit konfiguraci systému..." pro zmenu v nastaveni vychozich barev terminalu.

P.S.: '\e', '\x1b' ci '\033' je jedno a to same - znak ESC.
Název: Re:Změna barev v linuxovém shellu
Přispěvatel: radoslav2 24. 09. 2019, 13:16:09
Je to Debian klasicky s Gnome, nemohu měnit nastavení a i kdybych to udělal nastavení se automaticky resetuje.
(Dále to nehodlám řešit, protože mi to nijak nepomůže)

Používám terminál k ovadaní jiných aplikací takže procházení adresářů a podobných věci dělat nebudu.
Potřebuji pouze poradit s PS1 nebo použít print.

Zatím mi nejvíc pomohlo že vím že se jedná o: ANSI escape code
https://en.wikipedia.org/wiki/ANSI_escape_code
https://misc.flogisoft.com/bash/tip_colors_and_formatting

Pomalu se tím prokousávám, ale více něž soutěž o to kdo mi pošle nejlepší odkaz bych ocenil praktické vysvětlení které by mi pomohlo víc.

Kód: [Vybrat]
printf %b '\e[42m' '\e[8]' '\e[H\e[J'
už vím že:
\e
\033 (osmičkový)
\x1b (hexadecimální)

Už vím že když nahradím 42 za 102 dostanu světelnější odstín zelené.
Vím co dělá "%b" ale nemohu zatím k tomu najít informace a o zbytku zatím nevím nic.
Název: Re:Změna barev v linuxovém shellu
Přispěvatel: kmarty 24. 09. 2019, 15:54:22

Vsechno je to na ty, i tebou odkazovany, wiki (teda az na to '\e[8]', to bylo tezsi).
Název: Re:Změna barev v linuxovém shellu
Přispěvatel: radoslav2 25. 09. 2019, 07:39:57
Děkuji, tohle mi pomohlo.

Já se zasekl hned na tom přepínači nikde jsem to nemohl najít:
%b           expanduje posloupnosti escapované zpětným lomítkem
                   v odpovídajícím argumentu