Hlavní navigace

Hrátky z řádky: prompt, file, at a další

Petr Macek 18. 2. 2008

Opět se setkáváme u pravidelné pondělní dávky tipů a triků z černé řádky. V minulém díle jsme se více věnovali teorii, dnes se zase vrátíme k praxi. Ukážeme si několik úprav promptu, konečně se dostaneme ke slíbeným souborům, na závěr si ukážeme program at pro plánované spouštění úloh a něco více o iftop.

Prompt

Byl by to špatný seriál o CLI, kdybychom se nezmínili o promptu. Troufám si tvrdit, že většina uživatelů Linuxu je zvyklá na bash, a tak se zaměříme na něj. Prompt může vypadat různě, zkuste si třeba následující:

$ export PS1='cekam na rozkazy: '
cekam na rozkazy: export PS1='\u@\H '
root@minastirith.local export PS1='\u@\h \t:'
root@minastirith 22:12:30:

Jak vypadá prompt, definujeme v proměnných PS1 až PS4. Nás budou zajímat především první dvě. PS1 je běžný prompt, PS2 se použije při příkazu delším než jeden řádek. Běžný je definován nějak takhle:

$ echo $PS1
\u@\h:\w$

Znak @ se normálně zobrazí, ale u, h, w a $ mají speciální význam. Např. u nám zobrazí jméno uživatele, h jméno stroje a w je současný adresář. Existují i další symboly, více najdete v man bash, v sekci PROMPTING. U promptu můžeme využít třeba i barvičky (nastavují se pomocí ANSI escape sekvencí). Prostudujte si seznam barviček. Jak vypadá prompt, můžete zapsat třeba do /etc/profile, .bash_profile, … a to nám dává další možnost – můžeme si napsat jednoduchý skript a například rozlišit typ terminálu nebo třeba přihlášeného uživatele:

me=`whoami`
case $me in
    root)
        PS1='\e[0;31m[\u@\h \W]\$ \e[m '
    ;;
    *)
    PS1='[\u@\h \W]\$ '

    ;;

esac

Výsledek pak vypadá nějak takhle:

[pm@minastirith pm]$ su
Password:
[root@minastirith root]#

Něco málo o souborech

Teď se vrátíme ke slíbeným souborům. Když potřebujete rychle vymazat obsah souboru, ale tak aby zůstal zachován vlastník a práva, je zbytečné soubor mazat celý a znovu zakládat. Zadejte jen  > jmeno_souboru.

Ukážeme si program file. Ten se snaží rozeznat, o jaký soubor se jedná:

$ file *
postup.txt:                ASCII text
pp.txt.gz:                 gzip compressed data, was "pp.txt", from Unix, max compression
slax-5.0.5.iso:            empty
wifi_up.sh:                Bourne shell script text executable

Split nám slouží k rozdělení souboru na části. Pokud třeba chcete mailbox rozřezat na jednotlivé maily, zkuste:

$ split -p "^From " /var/mail/pm

Pokud neřekneme jinak, vznikají soubory xaa, xab, xac. Nemusíte rozdělovat jen podle nějakého řetězce vyjádřeného regulárním výrazem. Můžete rozdělovat třeba podle počtu řádků nebo bajtů.

Naopak spojení provedem programem cat. Chci spojit předtím rozdělené soubory začínající písmenkem x:

$ cat x* > spojeny_soubor.

Program at – spuštění úlohy ve stanovený čas

Velice užitečnou utilitkou v každém systému je program at. Slouží nám k jednorázovému spouštění úloh ve stanovený čas. Někdy si povíme i o programu cron, ten se stará o periodické spouštění. Pokud chceme třeba vypnout nebo restartovat server v nočních hodinách, není nic snažšího:

at 23:00
reboot

Ukončete ctrl+d.

Můžete si například naplánovat úlohu měsíc dopředu. At totiž zvládá spoustu časových zadání, vše je popsáno v manuálu. Rád používám například at teatime, at midnight ale je možné i třeba at now + 10 minutes. Musím upozornit, že je možné vložit více než jeden příkaz, můžete třeba vykonat úlohu nakonec přidat příkaz mail na odeslání emailu o úspěšném provedení.

Když si třeba hraji s pravidly na firewallu a je šance, že si odříznu připojení, používám právě at now + 10 minutes a do této úlohy si naplánuji smazání pravidel firewallu.

Příkaz atq nám zobrazí načasované úlohy včetně čísla jobu, příkazem atrm cislo_jobu pak můžeme daný job zrušit.

Více k iftopu

Minule jsem v příkladu o screenu nakousli iftop. Je to moc pěkný a užitečný program, dnes se na něj podíváme detailněji. Iftop nám umožňuje monitorovat sítový provoz. Obrazovka je rozdělena na několik částí, největší část ukazuje vlastní spojení, vpravo jsou pak hodnoty za poslední 2, 10 a 40 vteřin, dole je součet za celou síťovou kartu. Při spuštění parametrem -i určujeme, kterou síťovou kartu chceme sledovat, např. iftop -i eth0. Můžete si vybrat jen některý provoz, například:

$ iftop -i eth0 -f „host www.seznam.cz“

Spousta parametrů se nemusí zadávat jen při spuštění. Když běží iftop, zmáčkněte ?, zobrazí se help. Stiskem klávesy n můžeme vypnout resolvováni IP na DNS, velké N stejně zpracovává čísla portů. Stejného výsledku bychom dosáhli při spouštění iftop a zadání -n a -N. Další zajímavé pohledy jsou třeba pod klávesami t a T. Iftop asi budete muset nainstalovat, nebývá standardní součástí systému.

Pokud si nepamatujete, které číslo nebo jméno má která služba nebo protokol, podívejte se ve svém systému na soubory:

/etc/services
/etc/protocols

Měli byste je najít v každé distribuci, neboť tuto tabulku využívá spousta programů.

Našli jste v článku chybu?

18. 2. 2008 7:57

Pozor při spojování pomocí cat x* > spojeny_soubor. Hvězdičku totiž expanduje bash a třídí podle nastaveného locale, takže pokud příkazem split vytvoříte tolik souborů, že se dostanete až k xch, tak bash ho pak při spojování zařadí až za xhz a před xia a tudíž spojeny_soubor bude jiný, než původní soubor!

18. 2. 2008 6:33

pht (neregistrovaný)
prompt lze taky generovat pri kazdem vypsani dynamicky. jeden pekny trik je vizualizace navratove hodnoty posledniho prikazu.

PS1='`if [[ $? -eq 0 ]]; then echo ":)"; else echo ":("; fi`'

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Vitalia.cz: Říká amoleta - a myslí palačinka

Říká amoleta - a myslí palačinka

DigiZone.cz: Česká televize mění schéma ČT :D

Česká televize mění schéma ČT :D

Podnikatel.cz: Vládu obejde, kvůli EET rovnou do sněmovny

Vládu obejde, kvůli EET rovnou do sněmovny

Podnikatel.cz: K EET. Štamgast už peníze na stole nenechá

K EET. Štamgast už peníze na stole nenechá

Měšec.cz: Zdravotní a sociální pojištění 2017: Připlatíte

Zdravotní a sociální pojištění 2017: Připlatíte

Lupa.cz: Není sleva jako sleva. Jak obchodům nenaletět?

Není sleva jako sleva. Jak obchodům nenaletět?

120na80.cz: Pánové, pečujte o svoje přirození a prostatu

Pánové, pečujte o svoje přirození a prostatu

Podnikatel.cz: Na poslední chvíli šokuje vyjímkami v EET

Na poslední chvíli šokuje vyjímkami v EET

DigiZone.cz: ČT má dalšího zástupce v EBU

ČT má dalšího zástupce v EBU

120na80.cz: Rakovina oka. Jak ji poznáte?

Rakovina oka. Jak ji poznáte?

Vitalia.cz: Baletky propagují zdravotní superpostel

Baletky propagují zdravotní superpostel

Lupa.cz: Google měl výpadek, nejel Gmail ani YouTube

Google měl výpadek, nejel Gmail ani YouTube

DigiZone.cz: Recenze Westworld: zavraždit a...

Recenze Westworld: zavraždit a...

DigiZone.cz: NG natáčí v Praze seriál o Einsteinovi

NG natáčí v Praze seriál o Einsteinovi

Podnikatel.cz: EET: Totálně nezvládli metodologii projektu

EET: Totálně nezvládli metodologii projektu

Podnikatel.cz: EET zvládneme, budou horší zákony

EET zvládneme, budou horší zákony

120na80.cz: Jak oddálit Alzheimera?

Jak oddálit Alzheimera?

Vitalia.cz: Tesco: Chudá rodina si koupí levné polské kuře

Tesco: Chudá rodina si koupí levné polské kuře

Vitalia.cz: Paštiky plné masa ho zatím neuživí

Paštiky plné masa ho zatím neuživí