Byly zpracovány a na YouTube zveřejněny videozáznamy z konference LinuxDays 2025.
Na konferenci LinuxDays 2025 byl oficiálně představen nový router Turris Omnia NG.
Přímý přenos (YouTube) z konference LinuxDays 2025, jež probíhá tento víkend v Praze v prostorách FIT ČVUT. Na programu je spousta zajímavých přednášek.
V únoru loňského roku Úřad pro ochranu osobních údajů pravomocně uložil společnosti Avast Software pokutu 351 mil. Kč za porušení GDPR. Městský soud v Praze tuto pokutu na úterním jednání zrušil. Potvrdil ale, že společnost Avast porušila zákon, když skrze svůj zdarma dostupný antivirový program sledovala, které weby jeho uživatelé navštěvují, a tyto informace předávala dceřiné společnosti Jumpshot. Úřad pro ochranu osobních údajů
… více »Google Chrome 141 byl prohlášen za stabilní. Nejnovější stabilní verze 141.0.7390.54 přináší řadu novinek z hlediska uživatelů i vývojářů. Podrobný přehled v poznámkách k vydání. Opraveno bylo 21 bezpečnostních chyb. Za nejvážnější z nich (Heap buffer overflow in WebGPU) bylo vyplaceno 25 000 dolarů. Vylepšeny byly také nástroje pro vývojáře.
eDoklady mají kvůli vysoké zátěži technické potíže. Ministerstvo vnitra doporučuje vzít si sebou klasický občanský průkaz nebo pas.
Novým prezidentem Free Software Foundation (FSF) se stal Ian Kelling.
Na čem pracují vývojáři webového prohlížeče Ladybird (GitHub)? Byl publikován přehled vývoje za září (YouTube).
Vyšla kniha Počítačové programy a autorské právo. Podle internetových stránek nakladatelství je v knize "Významný prostor věnován otevřenému a svobodnému softwaru, jeho licencím, důsledkům jejich porušení a rizikům „nakažení“ proprietárního kódu režimem open source."
Red Hat řeší bezpečnostní incident, při kterém došlo k neoprávněnému přístupu do GitLab instance používané svým konzultačním týmem.
Většina un*xových emulátorů terminálu podporuje řídící (escape) sekvence ANSI, které slouží (mimo jiné) k formátování výstupu na textových terminálech.
Nejdříve si povíme něco k teorii a pak si ukážeme ukázky kódu v různých programovacích jazycích. Tato záležitost není multiplatformní a na Windows je třeba postupovat trochu jinak než na Linuxu a jiných unixových systémech. Ne každý emulátor terminálu má implementovánu podporu všech standardizovaných vlastností a aby toho nebylo málo, některé vlastnosti dokonce v různých terminálech dělají různé věci. To vám doufám postačí jako pádný důvod k tomu, abyste v případě, že použijete formátování ve svém programu, nezapomněli i na možnost formátování úplně vypnout.
Snad jsem vás ještě neodradil. V praxi to není až tak hrozné. Většinou budete chtít zřejmě používat jen základní možnosti formátování textu a s těmi není žádný problém na hojně používaných emulátorech terminálu.
Takže jak na to? Escapovací sekvence se tomu neříká jen tak pro nic za nic, escape je totiž znak, který tyto řídící sekvence zahajuje. Tedy ještě spolu se znakem „[“, který jej musí následovat. Této sekvenci znaků se říká zkratkou CSI, a to znamená Control Sequence Introducer/Initiator – česky iniciátor řídící sekvence. Za touto sekvencí následuje samotný příkaz. My se v tomto článku budeme zabývat pouze příkazem ovlivňujícím zobrazení textu na terminálu. Jeho předpis vypadá takto:
CSI a [;b] m
Mezery jsou v předpisu pouze pro přehlednost a hranatá závorka značí volitelnost. A co to znamená? CSI je zmiňovaná zahajovací sekvence, tedy ESC+[
. Písmena „a“ a „b“ jsou parametry, které nahradíme za čísla. Za jaká? To záleží na tom, co od příkazu očekáváte. Možnosti jsou vypsané v tabulce níže. Za parametry je třeba dát písmeno „m“ tak, jak je.
A teď když konečně prozradím, jak napsat znak escape, tak si to budeme moci předvést. Máte tři možnosti, jak napsat escape, buď \033
(umístění znaku escape v ASCII tabulce zapsáno v osmičkové soustavě je 33), \x1b
(umístění znaku v ASCII tabulce zapsáno v šestnáctkové soustavě je 1B) nebo \e
(styl jazyka C), což je nestandardní (a někde nepodporovaný), ale poměrně rozšířený zápis (dostupný nejen v C).
\033[31mAhoj barevný světe!\033[0m
^^ ^- vypne formátování
`- zahájí výpis v červené barvě
Jak je vidět, v tomto případě používáme pouze parametr „a“ (z předpisu výše). Když použijeme zároveň i parametr „b“, můžeme nastavit dvě atributy najednou stylem „a;b“, takže to pak celé vypadá takto: \033[a;bm
, přičemž za „a“ a „b“ dosadíme číselné hodnoty. Následuje výběr ze seznamu možných hodnot parametrů:
U výše zmíněných rozsahů hodnot není jasné, která hodnota náleží které barvě. Proto následuje tabulka barev:
číslo | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
barva | černá | červená | zelená | žlutá | modrá | purpurová | tyrkysová | bílá |
Přidám ještě několik ukázkových parametrů, abyste si mohli ověřit, že to celé chápete správně:
Ukázkové sekvence s oběma parametry:
\033[31;42m
– červený text (31) na zeleném pozadí (42)\033[42;31m
– totéž\x1b[32;1m
– tučný (1) zelený text (32)\x1b[34;4m
– podtržený (4) modrý text (34)\e[101;34m
– světle červené pozadí (101), modrý text (34)\e[44;1m
– modré pozadí (44), tučný text (1)Poznámka: Nikdy nezapomínejte ukončovat formátování pomocí \033[0m
.
Nyní přejdeme k ukázkám z praxe.
V Bashi lze barevný text vypisovat pomocí příkazu echo s přepínačem -e.
echo -e "\033[31mAhoj barevný světe!\033[0m" for((i = 0; i <= 7; i++)) do echo -e "(3$i) \033[3${i}mBarevný text\033[0m a (4${i}) \033[4${i}mbarevné pozadí…\033[0m" done
V Pythonu můžete použít funkci print().
print("\033[32mZelený text\033[0m") YELLOW = '\033[93m' END = '\033[0m' print(YELLOW + "Žlutý text!" + END)
V Perlu lze také použít funkci print().
my @colors = ("cerna", "cervena", "zelena", "zluta", "modra", "purpurova", "tyrkysova", "bila"); do { my $number = 37 – $#colors; my $color = shift @colors; print "\033[${number}m${color}, \033[1mtucna ${color}\033[0m\n"; } while (@colors);
PuTTY na Symbianu je ukázkou toho, že ne všude všechny atributy fungují. (Tučný text se zobrazí jako normální.)
Lze použít funkce printf() z C nebo std::cout z C++.
/* C nebo C++ */ #include <stdio.h> void vypis_tucne(const char* text) { printf("\x1b[1m%s\x1b[0m\n", text); } /* C++ */ #include <iostream> void vypis_tucne_cpp(std::string text) { std::cout << "\e[1m" << text << "\e[0m\n"; }
Nástroje: Tisk bez diskuse
Tiskni
Sdílej:
8 - rudá
, která je na černé lépe vidět. Škoda že není i v xterm
.
"\033[1;31m"
je IMHO videt vsude dobre.
http://www.abclinuxu.cz/blog/idea/2008/7/ansi-ridici-sekvence
echo $TERM
a zamyslet se, co to asi znamená Jistě zajímavá perlička, ale prosím prosím, opravdu to takhle nikdy v programech nedělejte.Uzasny nazor. Protoze to nekde nefunguje, tak to nebudu vubec pouzivat
less
se dá donutit, aby barvičky zachoval: less -R
\E[0;1;4;5;7;8m^N
by používal jen blázen, když tu jsou nové a lepší terminfo \E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
. Jen žertuji :)
Nevím ale když je v shellu něco jako "Ahoj ${cred}lidi${cnorm}" tak mi to až tak "plné divokých nečitelných sekvencí" nepřipadá.
termcap_set_attr(TERMCAP_RED | TERMCAP_BOLD); /*...*/ termcap_set_attr(TERMCAP_PLAIN);
. Existuje to?
echo -e '\033[32;40m'
ale tučným písmem...
echo -e '\033[32;40m\033[1mXXX\033[0m'
man tput man terminfonapriklad:
echo "$(tput setaf 1) Red Text $(tput sgr0)"Jinak barev muze byt daleko vice, napriklad xterm nema problem s 256 barvama,
export TERM=xterm-256colornebo
xterm -tn xterm-256color
Vůbec se nerozčiluji a autor doufám taky ne. Prostě se mu snažím předat svoji zkušenost.Tak to má bejt; diskuse má být o tom, co jsem zapomněl, atp. Pak je užitečná.
$ cat bin/prompt #!/bin/bash ########## # prompt # ########## # prompt is a template-like program designed to simplify the process of colourizing one's prompt. # By analyzing the variables, it is easy to identify what ANSI colour sequences match up with which colour. # Thus, modifying one's bash prompt is a simple matter of going through the variables and inserting the colour of choice. # # When the script is modified to your liking, you should place it a useful place (like ~/bin/). # Then replace PS1="..." in your bootup file (~/.bashrc or ~/.bash_profile) with PS1=`~/bin/prompt` (those are backticks!) # # Only known to work as expected with bash # # No licensing or copyright is placed on this script. Do with it as you wish. ################################################ # THERE SHOULD BE NO NEED TO EDIT THIS SECTION # ################################################ #$normal will reset the colour to the default, use it to stop using a certain colour (see "prompt parts") normal="\[\e[0m\]" # # # # # # # #BACKGROUNDS # # # # # # # blackbg=";40m\]" redbg=";41m\]" greenbg=";42m\]" brownbg=";43m\]" bluebg=";44m\]" purplebg=";45m\]" cyanbg=";46m\]" greybg=";47m\]" ############################################################################################ # THERE SHOULD BE NO NEED TO EDIT THIS SECTION (UNLESS YOU DO NOT WANT A BLACK BACKGROUND) # ############################################################################################ # # # # # # # #FOREGROUNDS # # # # # # # black="\[\e[0;30$blackbg" redfaint="\[\e[0;31$blackbg" greenfaint="\[\e[0;32$blackbg" brownfaint="\[\e[0;33$blackbg" bluefaint="\[\e[0;34$blackbg" purplefaint="\[\e[0;35$blackbg" cyanfaint="\[\e[0;36$blackbg" greyfaint="\[\e[0;37$blackbg" grey="\[\e[1;30$blackbg" red="\[\e[1;31$blackbg" green="\[\e[1;32$blackbg" yellow="\[\e[1;33$blackbg" blue="\[\e[1;34$blackbg" pink="\[\e[1;35$blackbg" cyan="\[\e[1;36$blackbg" white="\[\e[1;37$blackbg" ################################## # EDIT THIS STUFF TO YOUR LIKING # ################################## # # # # # # # #PROMPT PARTS # # # # # # # prompt_opening_brace="$yellow[$normal" prompt_closing_brace="$yellow]$normal" prompt_date="\d" prompt_hostname_short="$blue\h$normal" prompt_hostname_long="\H" prompt_jobs="\j" prompt_terminal="\l" prompt_shellname="\s" prompt_time_24="\t" prompt_time_12="\T" prompt_time_12_am_pm="\@" prompt_username="$green\u$normal" prompt_version="\v" prompt_version_patchlevel="\V" prompt_pwd_long="\w" prompt_pwd_short="$red\W$normal" prompt_history_number="\!" prompt_session_number="\#" prompt_usertype_sign="\\$" prompt_git_branch="$white\$(__git_ps1)$normal" # # # # # # # # #FINAL PROMPT # # # # # # # # echo -n "$prompt_opening_brace$prompt_time_24 $prompt_username@$prompt_hostname_short $prompt_pwd_short$prompt_git_branch$prompt_closing_brace$prompt_usertype_sign "
transparentbg="m\]"
ESC[ [i];a[;b]m
, kde A (30-37) a B (40-47) su farby popredia a pozadia tak ako popisuje clanok. Intenzita farby I (0-8) sa zapisuje ako prvy nepovinny parameter. Clanok ale uvadza, ze hodnoty 0-8 by mohli byt zapisane do parametra A. Resp. ak sa do A zapise intenzita a potom do B farba popredia, clanok nespomina moznost tretieho parametra kam sa zada farba pozadia. Ako to teda je?
\e[A;Bm\e[Cm tradáá \e[0m
# 3x to samý \e[1;33;43m \x1b[33;1;43m \033[43;1;33mEvidentně tam lze zadat libovolný množství parametrů.