Dnes a zítra probíhá vývojářská konference Google I/O 2025. Sledovat lze na YouTube a na síti 𝕏 (#GoogleIO).
V Bostonu probíhá konference Red Hat Summit 2025. Vybrané přednášky lze sledovat na YouTube. Dění lze sledovat na síti 𝕏 (#RHSummit).
Společnost Red Hat oficiálně oznámila vydání Red Hat Enterprise Linuxu 10. Vedle nových vlastností přináší také aktualizaci ovladačů a předběžné ukázky budoucích technologií. Podrobnosti v poznámkách k vydání.
Tuto sobotu 24. května se koná historicky první komunitní den projektu Home Assistant. Zváni jsou všichni příznivci, nadšenci a uživatelé tohoto projektu. Pro účast je potřebná registrace. Odkazy na akce v Praze a v Bratislavě.
Troy Hunt představil Have I Been Pwned 2.0, tj. nový vylepšený web služby, kde si uživatelé mohou zkontrolovat, zda se jejich hesla a osobní údaje neobjevili v únicích dat a případně se nechat na další úniky upozorňovat.
Microsoft představil open source textový editor Edit bežící v terminálu. Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT.
V Seattlu a také online probíhá konference Microsoft Build 2025. Microsoft představuje své novinky. Windows Subsystem for Linux je nově open source. Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT.
Z příspěvku Turris Sentinel – co přinesl rok 2024 na blogu CZ.NIC: "Za poslední rok (únor 2024 – únor 2025) jsme zachytili 8,3 miliardy incidentů a to z 232 zemí a z jejich závislých území. Tyto útoky přišly od 6,2 milionu útočníků (respektive unikátních adres). SMTP minipot je stále nejlákavější pastí, zhruba 79 % útoků bylo směřováno na tento minipot, 16 % útoků směřovalo na minipot Telnet, 3 % útoků směřovaly na minipot HTTP a 2 % na minipot FTP. Dále jsme zaznamenali 3,2 milionu unikátních hesel a 318 tisíc unikátních loginů, které útočníci zkoušeli."
Byla vydána (Mastodon, 𝕏) nová verze 3.0.4 svobodné aplikace pro úpravu a vytváření rastrové grafiky GIMP (GNU Image Manipulation Program). Přehled novinek v oznámení o vydání a v souboru NEWS na GitLabu. Nový GIMP je již k dispozici také na Flathubu.
Byla vydána nová stabilní verze 7.4 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 136. Přehled novinek i s náhledy v příspěvku na blogu.
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ů.