Omarchy je linuxová distribuce s dlaždicovým správcem oken Hyprland. Založena je na Arch Linuxu. Vydána byla v nové verzi 3.7.0 - The Gaming Edition. Z novinek lze vypíchnout příkaz omarchy a celou řadu herních možností.
CyberChef byl vydán v nové major verzi 11. Přehled novinek v Changelogu. CyberChef je webová aplikace pro analýzu dat a jejich kódování a dekódování, šifrování a dešifrování, kompresi a dekompresi, atd. Často je využívaná při kybernetických cvičeních a CTF (Capture the Flag).
Byla vydána nová verze 2.4.67 svobodného multiplatformního webového serveru Apache (httpd). Řešeno je mimo jiné 11 zranitelností.
Brush (Bo(u)rn(e) RUsty SHell) je v Rustu napsaný shell kompatibilní s Bash (Bourne Again SHell). Vydána byla verze 0.4.0.
Google zveřejnil seznam 1 141 projektů (vývojářů) od 184 organizací přijatých do letošního, již dvaadvacátého, Google Summer of Code. Přihlášeno bylo celkově 23 371 projektů od 15 245 vývojářů ze 131 zemí.
Na čem pracovali vývojáři GNOME a KDE Plasma minulý týden? Pravidelný přehled novinek v Týden v GNOME a Týden v KDE Plasma.
Open source počítačová hra na hrdiny NetHack (Wikipedie, GitHub) byla vydána v nové verzi 5.0.0. První verze této hry byla vydána v roce 1987.
Evropská komise naléhavě vyzvala členské státy EU, aby kvůli ochraně nezletilých na internetu urychlily zavádění unijní aplikace pro ověřování věku a zajistily její dostupnost do konce roku. Členské státy mohou zavést aplikaci EU pro ověřování věku jako samostatnou aplikaci nebo ji integrovat do takzvané evropské peněženky digitální identity.
Richard Biener oznámil vydání verze 16.1 (16.1.0) kolekce kompilátorů pro různé programovací jazyky GCC (GNU Compiler Collection). Jedná se o první stabilní verzi řady 16. Přehled změn, nových vlastností a oprav a aktualizovaná dokumentace na stránkách projektu. Některé zdrojové kódy, které bylo možné přeložit s předchozími verzemi GCC, bude nutné upravit.
Zulip Server z open source komunikační platformy Zulip (Wikipedie, GitHub) byl vydán ve verzi 12.0. Přehled novinek v příspěvku na blogu.
Aby bylo jasno, o čem bude řeč: Prompt, to je takové to user@localhost $ nebo třeba bash-4.1#, které vidíte v konzoli. Prompt lze nastavit tak, aby zobrazoval (vám) užitečné informace a navíc ještě vypadal dobře, což se vyplatí, trávíte-li v shellu aspoň nějaký čas.
Jak se to dělá? Nastavením proměnné PS1 na požadovanou hodnotu. Chcete-li například, aby výzva obsahovala pouze znak ">", nastavte PS1 takto:
PS1="> "
Aby toto nastavení přetrvalo i po ukončení shellu a použilo se pro další vytvořené shelly, přidejte deklaraci proměnné do souboru ~/.bashrc či ~/.bash_profile, pokud chcete nastavit prompt pouze pro uživatele, pod kterým pracujete, anebo do souboru /etc/bashrc (případně /etc/bash/bashrc, třeba na Gentoo), pokud chcete nastavit prompt pro všechny.
Pokud chcete používat takto chudý prompt např. z důvodu nedostatku místa na malé obrazovce mobilu, tak budiž, ale my si dále ukážeme, jak do promptu dostat nějaké užitečné informace. Manuálová stránka Bashe v sekci PROMPTING obsahuje přehled hodnot, které když do PS1 přidáte, tak se automaticky nahradí za požadovanou informaci. Některé z nich si vyjmenujeme a popíšeme:
/home/dave) je zkrácen na tildu (~)./tmp/x/y, zobrazí y).Předpokládejme počítač s názvem amd64.watzke.cz a uživatelem dave. Ukážeme si několik ukázkových zápisů PS1:
PS1="\u@\h \w \$ " # bude vypadat takto: dave@amd64 /tmp $ PS1="[\u \H \A \W]\$ " # [dave amd64.watzke.cz 16:55 tmp]$ PS1="\u [\j]> " # dave [2]>
Toto je základní způsob, jak do promptu dostat informace. Teď bychom je mohli ještě obarvit, jelikož to může zlepšit přehlednost a my pak rychleji najdeme tu konkrétní informaci, kterou zrovna hledáme. Obarvení se provádí tak, jak jsem nedávno popisoval v článku Barevný a formátovaný text v terminálu. Akorát je zde jedna maličkost. Přestože to funguje i bez toho, je vhodné přidat před každou escapovací sekvenci \[ a za ní pak \]. Dělá se to z toho důvodu, aby Bash věděl, že jde o „netisknutelné“ znaky (pouze mění formátování, nevloží žádný znak) a nezapočítával je do délky promptu, protože to způsobuje problémy se zalamováním, když zadáte nějaký dlouhý příkaz. Takže třeba červeného textu docílíte takto:
\[\033[31\]Červený text…\[\033[0m\]
Jestli vám zápisy formátování připadaly nepřehledné předtím, teď to celé dostalo nový rozměr. Proto je vhodné uložit si jednotlivé barvy do proměnných a ty pak použít při tvoření PS1.
KONEC="\[\033[0m\]"
TYRKYSOVA="\[\033[36;1m\]"
CERVENA="\[\033[31;1m\]"
PS1="${TYRKYSOVA}\u${KONEC}@${CERVENA}\h${KONEC} \$ " # dave@amd64 $
Opět připomínám, že formátování je třeba ukončovat (proměnná KONEC).
Tak už umíme sestavit barevný prompt. Je na čase si trochu rozšířit obzory. Jelikož lze do PS1 nacpat opravdu cokoliv a Bash svými speciálními sekvencemi typu \h pochopitelně nepokrývá všech nekonečno možností, je zde proměnná PROMPT_COMMAND. Do této proměnné můžete vložit příkaz, který daný prompt vygeneruje a nastaví. Vhodné je nastavit proměnnou třeba takto:
PROMPT_COMMAND="source $HOME/.prompt.sh"
Ale ještě předtím je třeba vytvořit soubor ~/.prompt.sh, ve kterém se proměnná PS1 nastaví. Může to být bashový skript se vším, co k tomu patří. Například můj prompt vypadá takto:
#!/bin/bash
S=$?
END="\[\e[0m\]"
RED="\[\e[31;1m\]"
CYAN="\[\e[36;1m\]"
GREEN="\[\e[32;1m\]"
YELLOW="\[\e[33;1m\]"
if [[ $S -eq 0 ]]; then
DOLLAR="${YELLOW}\$"
else
DOLLAR="${RED}\$"
fi
PS1="${CYAN}\u${END}@${RED}\h${END} ${GREEN}\w${END} ${DOLLAR}${END} "
Vlastně jediným důvodem, proč jsem si vytvářel skript na nastavení PS1, je nastavení barvy znaku dolaru, který je na konci. Barva závisí na návratové hodnotě naposledy spuštěného příkazu. Když je hodnota rovna 0 (příkaz se vykoná s úspěchem), dolar je žlutý, jinak je červený.
Ovšem pozor na to, vy si můžete vymýšlet daleko víc než já. Můžete si do promptu vložit výpisy z programů a podobně. Nic vám nebrání vložit tam třeba teplotu procesoru:
# tohle je velice specifický zápis (pro konkrétní senzorový čip),
# ale je to tak rychlejší než parsovat výstup příkazu sensors
CPU=$(( $(</sys/devices/platform/it87.656/temp1_input) / 1000 ))
# nastaví CPU_COLOR podle teploty procesoru
if [[ $CPU -gt 60 ]]; then
CPU_COLOR="$RED"
elif [[ $CPU -gt 50 ]]; then
CPU_COLOR="$YELLOW"
else
CPU_COLOR="$GREEN"
fi
# prompt bude vypadat takto: dave@amd64 [57°C]
PS1="\u@\h [${CPU_COLOR}${CPU}°C${END}] "
V případě, že se rozhodnete používat PROMPT_COMMAND, stačí tuto proměnnou nastavit v některém ze souborů, kam byste jinak uložili PS1 (viz začátek článku).
Za zmínku stojí ještě proměnná PS2. Řetězec, který drží, se vypíše s každým odřádkováním při psaní víceřádkového příkazu. Výchozí hodnota je "> ".
for((i=0;i<10;i++)); do > echo "číslo $i" > done # pro milovníky pythonního interpreteru PS2="... " for((i=0;i<10;i++)); do ... echo "číslo $i" ... done
Pokud používáte xterm, můžete si nastavovat i titulek okna přidáním následující sekvence do proměnné PS1:
\[\033]0;Titulek\007\]
Pro přehlednost to můžete udělat až po nastavení PS1 takto:
case "$TERM" in xterm*) TITLEBAR="\[\033]0;cwd: \w\007\]" *) TITLEBAR="" esac PS1="$TITLEBAR\ $PS1"
Jak jsem teď naznačil v kódu, je vhodné kontrolovat, zda jsme v xtermu, nebo ne, protože na VT tato sekvence přidá nesmysly do promptu.
Nástroje: Tisk bez diskuse
Tiskni
Sdílej:
PS1="\h@\u \w \$ " # bude vypadat takto: dave@amd64 /tmp $
je prohozené \h a \u.
\[\033[01;31m\]${?/#0/}\[\033[01;36m\]
Hlavny trik je ${?/#0/}, ktory zabezpeci vypis/nevypis podla navratovej hodnoty aj bez spustenia procesu.
$ echo $$ `if [[ 0 -eq 0 ]] ; then echo $$; fi` 10184 10184
$ echo $$ `ll /proc/self` 7651 lrwxrwxrwx 1 root root 64 2010-03-17 20:15 /proc/self -> 4123/
Ignorovat, prosím.
echo $$ echo `echo $$` echo `ls; echo $$`To vyzera, ze ani nerozlisuje, ci treba pustat novy proces alebo si vystaci sam, ale skutocne to vykonava v kontexte jedneho procesu
$ echo -e "$$ \n`ls -l /proc/self; echo $$`" 5287 lrwxrwxrwx 1 root root 64 2010-03-18 08:57 /proc/self -> 10210 5287
$$ Expands to the process ID of the shell. In a () subshell, it expands to the process ID of the current shell, not the subshell.Ked som skusil nieco ako grep napisane v cistom bashi, tak sa pid meni:
$ echo $$ 6096 $ echo `while read l; do [[ "$l" == Pid:* ]] && echo "$l"; done </proc/self/status` Pid: 7667 $ echo `while read l; do [[ "$l" == Pid:* ]] && echo "$l"; done </proc/self/status` Pid: 7668Trocha to vidno na premennej BASH_SUBSHELL
$ echo $BASH_SUBSHELL 0 $ echo `$ echo $BASH_SUBSHELL` 1
echo $$ `echo \$\$` 18053 18053 echo $$; (eval echo '$$') 18053 18053 echo $$ ` (eval echo '\$\$') ` 18053 18053Pokud chcete definitivní odpověď, zkuste strace
it expands to the process ID of the current shell, not the subshell.aj pozdna expanzia vracia pid nadradeneho shellu. Nesfalsovanu hodnotu som ziskal z /proc/self/status. Ked som sa externym strace pripojil na bash a spustil
echo `echo \$\$`, tak vo vypise syscallov je pipe a hned za nim clone. Takze proces sa vytvara.
Já kdysi používal něco takového, ale když se na to dívám zpětně, asi bych už takovou šílenost nikdy znovu nechtěl 
)))), tak tos byl fakt vostrej; kdyz jsem zacinal s linuxem, tak bych si to tam asi taky dal...
jo tak tuhle zrudu jsem pouzival taky
Hehe, tak to je nás viac (resp. bolo) 
Ja to mam takto a staci mi :
[ martin@~/workspace/ ]:16:25:^_^:
> qwert
bash: qwert: command not found
[ martin@~/workspace/ ]:16:39:-_-:
>
$ mc bash: mc: command not found
myslím totiž, že je hlopé, pokud je výstup příkazů true a false (a nejen tech) naprosto identický...