Linux - shell, příkazy



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 		- 	sh
C-shell			- 	csh
Korn shell		- 	ksh 		vychází z Bourne shellu
Bourne-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/bash
Tento 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ému
Dá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říkazu2
Ná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]slovo
Soubor 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]>>slovo
Soubor 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ýstup
tac		spojené a zápis souborů v opačném pořadí
nl		číslování řádků a zápis na standardní výstup

Výstup pouze části souboru

head		výstup začátku souboru
tail		výstup konce souboru
split		rozdělení souboru do více stejně velkých částí

Sumarizace obsahu souboru

wc		předá počet bajtů, slov a řádků souboru
sum		předá kontrolní součet souboru

Třídění obsahu souboru

sort		setřídí obsah souboru

Nástroje pro práci se soubory


Příkaz pro čtení obsahu adresáře

ls		výpis adresáře

Pří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 souboru
dd 		kopírování souboru s konverzemi

Pří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áv

Příkazy pro vytvoření, rušení a zjištění kapacity adresářů

mkdir		vytvoření adresáře
rmdir		zrušení prázdného adresáře
du		zjištění kapacity adresáře

Další příkazy

df		zjištění volné kapacity systému souborů
mkfifo		vytvoření roury
mknod		vytvoření speciálního souboru

Shellovské 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áře
stty		výpis a změna chrakteristik terminálu
printenv	výpis aktuálních proměných prostředí
tty		zjištění jména terminálu

Informace o uživatelích

id		oznámení o UID a GID
logname		oznámení přihlašovací jméno uživatele
whoami		oznámí informace o aktuálním uživateli
groups		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ích

Systémové informace

date
uname		info o systému
hostname	oznámí a nastaví jméno počítače

Jiné 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 prioritou
su		spustí proces pod jiným uživatelem