Fórum Root.cz
Hlavní témata => Software => Téma založeno: 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:
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.
-
To jsou ANSI escape kody (viz wiki, i ceska). Printf je jen prostredek jak to tomu terminalu rict (stejnou sluzbu udela i echo -e “...”).
-
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?
-
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.
-
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.
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.
-
- %b u printf
- man printf pise:
As for s, but interpret character escapes in backslash notation in the string argument. The permitted escape sequences are slightly different in that octal escapes are \0num instead of \num.
- '\e[42m'
- dle wiki: '\e[' = CSI (Control Sequence Introducer), 42m = zmena barvy pozadi na zelenou. (Zakladni) barvy jsou 0 az 7 a pricita se 30 pro popredi nebo 40 pro pozadi. 'm' znamena "SGR - Select Graphic Rendition" (silena tabulka vseho moznyho).
- '\e[8]'
- manualova stranka pro 'console_codes': Make the current color pair the default attributes.
- '\e[H'
- Presune kurzor na 1. sloupec a 1.radek. Uplne je to '\e[radek;sloupecH' - pokud se 'sloupec' a/nebo 'radek' vynecha, pak se pouzije vychozi hodnota 1.
- '\e[J'
- Vymaze cast obrazovky od kurzoru po konec. Uplne je to '\e[cisloJ' kde 'cislo' je 0(default kdyz neni uvedeno), 1, 2 nebo 3. Kazdy dela neco jinyho
Vsechno je to na ty, i tebou odkazovany, wiki (teda az na to '\e[8]', to bylo tezsi).
-
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