11. shell: vestavěné a externí příkazy, substituce, přesměrování vstupu a výstupu, roura
12. 6. 2007
11. shell: vestavěné a externí příkazy, substituce, přesměrování vstupu a výstupu, roura
Uživatelské rozhraní - bash - Bourne shell
Shell je interpret programovacího jazyka. Čte příkazy z terminálu nebo ze souboru a provádí je. Různé Unixovské shelly:
Bourne shell - shC-shell - cshKorn shell - ksh vychází z Bourne shelluBourne-again shell - bash představitel GNU, vychází z Bourne shellu
Posloupnost příkazů pro shell čtená ze souboru je vlastně program. Budeme ji nazývat skript.
Varianty shellu
Po přihlášení se uživateli spustí shell, kt. má uvedený v souboru /etc/passwd.Pro spuštění bash shellu je uvedeno /bin/bashTento první spuštěný shell se nazývá login shell.Provádí soubor /etc/profile - login script pro všechny uživatele při přihlášení do systémuDále provádí tyto skripty (pokud existují) v domovském adr. uživatele:
.bash_profile .bash_login .profile
Při odhlašování provádí skript v domovském adresáři:
.bash_logout
Návratový kód
Každý proces po svém ukončení předává tomu, kdo jej spustil - návratový kód.Návratový kód je desítkové číslo. Nulová hodnota se chápe jako úspěšné ukončení.
Kolony
Kolona - je posloupnost jednoho nebo více příkazů oddělených metaznakem svislá čára (|)Formát kolony:
příkaz1 | příkaz2 .....
Význam: standardní výstup příkazu1 se propojí se standardním vstupem příkazu2Návratovým kódem kolony je návratový kód posledního příkazu.
Příklad: ls | more
Seznamy
Sezanam - posloupnost jedné nebo více kolon oddělených jedním z řídících operátorů:
|| & && ;
a je ukončena jedním z operátorů:
& ; nový řádek
Pokude je příkaz ukončen znakem & , potom jej shell provádí v kopii shellu na pozadí.Pokud jsou příkazy odděleny znakem ; , potom se budou provádět sekvenčně.
příkaz1 && příkaz2
Provede se příkaz1. Příkaz2 se provede pouze tehdy, pokud příkaz1 předal nulový návratový kód. příkaz1 || příkaz2
Provede se příkaz1. Příkaz2 se provede pouze tehdy, pokud příkaz1 předal nenulový návratový kód (skončil s chybou).
Příklady:
cd adresar ; ls nejprve se provede změna adresáře a potom výpis
cd adresar & ls první příkaz se spustí v nové kopii shellu, druhý příkaz se spustí v původním shellu Příkazy na sebe nečekají.
cd adresar && ls druhý příkaz se provede jenom tehdy, pokud se provedl první příkaz bez chyby
cd adresar || mkdir adresar pokud zadaný adresář neexistuje, vytvoří se.
Závorkování
Sezanam je možno uzavírat do závorek. Možnosti jsou dvě:seznam se buď provede v kopii shellu, nebo se provede v aktuáním shellu.
(seznam) seznam se provede v kopii shellu.{seznam;} seznam se provede v aktuálním shellu
Příklad: cd adresar || { mkdir adresar; cd adresar;}
Porovnejte výsledky:
(pwd;cd adresar; pwd);pwd { pwd;cd adresar;pwd;};pwd
Přesměrování
Shell přesměrování zajišťuje ještě před provedením příkazu.
Přesměrování vstupu [n]slovoSoubor expandovaný za jméno slovo se otevře pro zápis popisovačem souboru n.Standardní výstup má číslo 1.
Přesměrování výstupu s připojením za konec souboru [n]>>slovoSoubor expandovaný za jméno slovo se otevře pro zápis popisovačem souboru n s tím že se nová data zapisují za poslední záznam v otevřeném souboru.
Příklady:
ls > adresar výpis se zapíše do souboru adresar
ls adr1 adr2 > adresar 2> chyby výpis obsahu adr1 a adr2 do soubori adresár, chybová hlášení se zapíší do souboru chyby
ls adr1 2> /dev/null chybová hlášení jdou do .... koše
ls > a > b oba soubory a i b se vytvoří, výpis se však zapíše pouze do posledního
ls | tee a > b výstup se zapíše do souboru a i do souboru b
Nástroje pro textové zpracování
Výstup kompletních souborů
cat spojení více souborů a zápis na standardní výstuptac spojené a zápis souborů v opačném pořadínl číslování řádků a zápis na standardní výstupVýstup pouze části souboru
head výstup začátku souborutail výstup konce souborusplit rozdělení souboru do více stejně velkých částíSumarizace obsahu souboru
wc předá počet bajtů, slov a řádků souborusum předá kontrolní součet souboruTřídění obsahu souboru
sort setřídí obsah souboruNástroje pro práci se soubory
Příkaz pro čtení obsahu adresáře
ls výpis adresářePříkazy pro kopírování, přesun, rušení souborů apod.
cp kopírování souborů a adresářůmv přesun, přejmenování souborů a adresářůln vytvoření odkazůrm rušení souborů a adresářůtouch změna časové informace souborudd kopírování souboru s konverzemiPříkazy pro změnu vlastnictví a přístupových práv
chgrp změna skupiny vlastníkůchown změna vlastníka a skupiny vlastníkůchmod změna přístupových právPříkazy pro vytvoření, rušení a zjištění kapacity adresářů
mkdir vytvoření adresářermdir zrušení prázdného adresáředu zjištění kapacity adresářeDalší příkazy
df zjištění volné kapacity systému souborůmkfifo vytvoření rourymknod vytvoření speciálního souboruShellovské nástroje
Přesměrování
tee přesměrování výstupu do více souborůPříkazy pro výpis a nastavení pracovního prostředí
pwd zjištění pracovního adresářestty výpis a změna chrakteristik termináluprintenv výpis aktuálních proměných prostředítty zjištění jména termináluInformace o uživatelích
id oznámení o UID a GIDlogname oznámení přihlašovací jméno uživatelewhoami oznámí informace o aktuálním uživateligroups oznámí skupinu uživatelůusers oznámí jména přihlášených uživatelůwho oznámí info o přihlášených uživatelíchSystémové informace
dateuname info o systémuhostname oznámí a nastaví jméno počítačeJiné způsoby spouštění příkazů
env spustí příkaz ve změněném prostředínice spustí příkaz se změněnou prioritousu spustí proces pod jiným uživatelem