Linux:Přehled základních příkazů: Porovnání verzí

m
Robot: kosmetické úpravy
(oprava kódu)
m (Robot: kosmetické úpravy)
stroj@user:~$ export PATH="$PATH:/sbin"
 
nebo zapsat spouštěný příkaz s plnou, nebo relativní cestou ke spustitelnému souboru
 
stroj@user:~$ /sbin/swapon
 
 
== Čtení dokumentace ==
{| class="wikitable"
| <code>[[Linux:apropos|apropos]]</code> || prohledává u manuálových stránek sekce název (NAME) a popis (DESCRIPTION) || součást instalačního balíku '''man-db'''
|}
 
== Analýza souborů ==
{| class="wikitable"
| <code>[[Linux:file|file]]</code> || Utilita, která podle tzv. ''magického čísla'' identifikuje soubor || samostatný instalační balík '''file'''
První sloupec vypisuje počet řádků, druhý počet slov, a poslední počet znaků.
 
Novější verze [[Linux:wc|wc]] rozlišují mezi počtem bytů a počtem znaků.
 
{{Výpis|1=
}}
 
== Utility pro práci se soubory ==
 
'''Pozn.:''' Tento přehled obsahuje také příkazy pro práci s adresáři, symbolickými odkazy,
|}
 
=== Procházení adresářů ===
'''pwd''' (název vychází z anglického ''''''P'''rint name of current '''W'''orking '''D'''irectory'') má jedinou funkci: vypisuje celou cestu do aktuálního pracovního adresáře. Přesto, že existuje tento příkaz jako samostatná aplikace, váš shell může mít implementován vlastní variantu příkazu [[Linux:pwd|pwd]].
 
'''chroot''' (z angl. '''''C'''hange '''ROOT''''' – ''změnit kořen'') je příkaz, kterým spustíte novou instanci shellu, která bude mít nastaven jako kořen adresář předaný příkazu [[Linux:chroot|chroot]]. Využívá se toho především při instalaci na nový disk, pro vytvoření odděleného prostředí.
 
=== Použití příkazů pro práci s adresáři ===
 
'''mkdir''' (z angl. '''''M'''a'''K'''e '''DIR'''ectories'') vytvoří adresář (nebo adresáře), pokud již ovšem neexistují. K příkazu lze přidat další parametry:
* '''-m''' nebo '''--mode=MODE''' – nastaví přístupová práva (podobně jako příkaz chmod)
* '''-p''' nebo '''--parents''' – vytvoří rodičovské adresáře
* '''-v''' nebo '''--verbose''' – vypíše hlášku pro každý vytvořený adresář
{{Výpis|1={{Linux:user}}[[Linux:mkdir|mkdir]] -p -v -m 755 Nový/adresář}}
Výsledkem příkazu bude vytvoření adresáře s názvem <code>Nový</code> ve kterém bude další adresář s názvem <code>adresář</code>
 
'''ls''' je základní utilita pro výpis obsahu adresáře. Nejčastěji používané parametry, které lze vzájemně kombinovat:
* '''-a''' vypíše všechny soubory (včetně skrytých souborů, tj. těch co začínají tečkou)<br />
* '''-l''' aktivuje podrobný výpis vlastností jednotlivých souborů<br />
* '''-i''' ve výpisu bude uvedeno také číslo i-nodu<br />
* '''-t''' výpis souborů je setříděn podle času poslední změny souboru<br />
* '''-r''' výpis je proveden v obráceném pořadí
{{Výpis|1={{Linux:user}}[[Linux:ls|ls]] -ali test*.txt
297845 -rw-r--r-- 2 want users 1086 1. dub 13.22 test.txt
Dříve se tato utilita využívala k vygenerování indexové stránky u webových adresářů s uloženými soubory. Dnes však, pokud má váš server povoleno vylistování adresářů, to již není nutné.
 
=== Použití zásobníku zapamatovaných adresářů ===
 
Pro přecházení mezi adresáři lze využít i tzv. zásobník zapamatovaných adresářů a vestavěných příkazů shellu. Pracovním adresářem je pak vždy ten, který je první položkou zásobníku. Položky do zásobníku lze nejen přidávat nebo z něj odebírat, ale také u nich měnit pořadí a tím přecházet podle potřeby mezi pracovními adresáři. Z následujícího příkladu snad poznáte lépe, jak to funguje a jaké příkazy se pro práci s ním používají.
Příkaz s volbou "+1" uvedený v příkladu odstraní n-tou položku ze zásobníku (v uvedeném příkladu druhou v pořadí). Pracovní adresář se přitom nemění. Je-li příkaz zadán pořadového čísla položky, nebo s pořadovým číslem "0", tak se ze zásobníku odstraní aktuální adresář, a aktivním pracovním adresářem se stane ten, co byl pozici "1". Rovněž u tohoto příkazu lze pro změnu pořadí položek v zásobníku použít opačného znaménka.
 
=== Kopírování, přesun a mazání souborů ===
 
'''cp''' (z angl. '''''c'''o'''p'''y'' – vyrobit kopii) vytváří duplicitní soubory. Prvním parametrem je cesta k originálu a druhým cíl do kterého má být kopie umístěna. Cesty mohou být zadány jak absolutně, tak relativně.
Za normálních okolností se příkazem [[Linux:rm|rm]] pouze odstraní záznam o souboru. Kdežto utilita [[Linux:shred|shred]] přepíše samými nulami také prostor v němž byl uložen obsah souboru.
 
=== Pevné a symbolické odkazy v Linuxu ===
Odkazy (lze se setkat také s anglickým výrazem '''link''') jsou v unixových systémech dvojí povahy: pevné a symbolické.
 
;Pevné odkazy
:Jinak také '''tvrdé''', umožňují používat pro jeden a týž soubor více jmen, aniž by jej bylo nutné kopírovat. Využívají zvláštního mechanismu, který spočívá v tom, že jména souborů jsou uchovávána odděleně od i-uzlů s daty. V každém i-uzlu je místo vlastního názvu uvedeno pouze jakési id. Vytvoříme-li nový pevný odkaz, tak se do tabulky s názvy souborů pouze přidá další položka odkazující na stejné id.
; Symbolické odkazy (symlinky)
:Používají se mnohem častěji. Na rozdíl od odkazů pevných je lze aplikovat i na adresáře a soubory, a to i na jiné fyzické datové svazky. Symbolické odkazy totiž nejsou pouhým přidáním dalšího jména souboru, ale speciální soubory, které mají v datovém prostoru uloženo kam mají směřovat. Při jejich vytváření se nijak nekontroluje existence a dostupnost cílového objektu.
Obslužný program '''ln''' vytváří implicitně pevný odkaz (hardlink). Pevný odkaz nelze prakticky odlišit od jména souboru. Na soubor se lze odkazovat pomocí jeho jména nebo jména pevného odkazu vytvořeného příkazem '''ln'''. Všechny pevné odkazy na soubor musejí být definovány v tomtéž souborovém systému jako samotný soubor.
První formát příkazu '''ln''' můžete použít k vytvoření odkazu mezi existujícím jménem souboru a novým jménem. Druhý formát můžete použít k vytvoření odkazů existujících souborů do různých adresářů. Nové odkazy budou mít stejná jednoduchá jména jako původní soubory, ale budou mít jiná plná jména (tj. jména včetně cesty).
Obslužný program '''ln''' můžete také použít k vytvoření symbolických odkazů. Na rozdíl od pevného odkazu může symbolický odkaz existovat v jiném souborovém systému. Také platí, že symbolický odkaz může spojovat soubor s adresářem.
 
'''Argumenty'''
'''Volby:'''
* Jestliže se nezadá volba '''-c''', vytvoří program '''touch''' ty soubory uvedené v seznamu ''file-list'', které neexistují. Pokud se program '''touch''' pustí bez voleb '''-d''' nebo '''-t''', použije se aktuální datum a čas.
* '''--date''' ''datestring'' nebo '''-d''' ''datestring''
** Po zadání volby '''-d''' se čas poslední modifikace souboru nastaví podle stanovených hodnot v řetězci ''datestring''. Pro řetězec ''datestring'' je povolena většina známých formátů. Pokud řetězec ''datestring'' neobsahuje některé komponenty, doplní se podle aktuálních hodnot. Tato volba nesmí být použita s volbou '''-t'''
* '''--no-create''' nebo '''-c'''
** Pokud soubory uvedené v seznamu ''file-list'' neexistují, tak s touto volbou nebudou ani vytvořeny.
* '''-t''' ''nnddhhmm[cc[yy]][.ss]''
** Pomocí volby '''-t''' se specifikuje čas.
*** ''nn'' – specifikuje měsíc (01–12)
*** ''dd'' – specifikuje den (01–31)
*** ''hh'' – specifikuje hodinu (00–23)
*** ''mm'' – specifikuje minuty (00–59)
*** ''yy'' – je nepovinná a určuje poslední dvě cifry z roku.
*** ''cc'' – může být také zadáno století, ale pokud je zadána položka ''yy''
*** ''.ss'' – volitelný parametr určuje sekundy v intervalu (00-59); tato položka musí být od ostatních oddělena tečkou. Kterákoli z volitelných položek bude nahrazena, pokud bude tečka chybět. Nesmí být použito s volbou '''-d'''
* '''-time==atime''' nebo '''-time=access''' nebo '''-a'''
** Jestliže se zada volba '''-a''', bude se aktualizovat pouze čas posledního přístupu k souboru a čas poslední modifikace zůstane nezměněn
* '''-time==mtime''' nebo '''-time=modify''' nebo '''-a'''
** Jestliže se zadá volba '''-m''', bude se aktualizovat pouze čas poslední modifikace souboru a čas posledního přístupu zůstane nezměněn
 
=== Příkazy pro práci se speciálními soubory ===
'''mkfifo''' je utilita, kterou se vytváří speciální typ souboru – tzv. pojmenovaná roura (FIFO, zkratka z angl. '''''F'''irst '''I'''n – '''F'''irst '''O'''ut'')
 
Informace o hlavních a vedlejších číslech zařízení můžete najít ve zdrojovém kódu linuxového jádra, máte-li je nainstalováno včetně dokumentace. A to v souboru <code>/usr/src/linux/Documentation/devices.txt</code> (v případě, že ve vaší instalaci ukazuje symbolický odkaz ''/usr/src/linux'' na adresář se zdrojovým kódem jádra).
 
=== Čtení a úprava obsahu souborů ===
 
{| class="wikitable"
|}
 
== Příkazy informačního charakteru ==
 
{| class="wikitable"
|}
 
=== Příkazy pro zjišťování množství obsazeného prostoru ===
 
Příkaz '''du''' oznamuje diskovou kapacitu alokovanou soubory, adresáři a podobně.
 
Příkaz pro každý zadaný argument vypíše diskovou kapacitu, kterou objekt adresovaný argumentem zabírá. Implicitně se velikost vypisuje v KB. Definujeme-li proměnnou prostředí POSIXLY_CoRRECT, bude se informace vypisovat v 512bajtových blocích. Příkaz akceptuje následující volby:
* '''-a''' nebo '''--all'''
: Kapacita se bude vypisovat pro jednotlivé soubory, ne pouze pro celé adresáře
* '''-b''' nebo '''--bytes'''
: Velikost se bude oznamovat v bajtech
* '''-c''' nebo '''--total'''
: Vypíše se celková kapacita získaná součtem kapacit jednotlivých zpracovaných argumentů. Volba se používá tehdy, pokud nás zajímá např. kapacita adresáře vyjma některých souborů. Celková kapacita se vypisuje jako poslední položka pod označením total
* '''-k''' nebo '''--kilobytes'''
: Informace se vypisuje v KB místo 512bajtových bloků. Touto volbou přebíjíme nastavení učiněné proměnnou POSIXLY_CORRECT.
* '''-l''' nebo '''--count-links'''
: Vypíše velikost i opakujících se (jako tvrdé odkazy) souborů
* '''-s''' nebo '''--summarize'''
: Pro každý zadaný argument se vypíše pouze celková hodnota
* '''-x''' nebo'''--one-file-system'''
: Adresáře, které se fyzicky nacházejí v jiném systému souborů, se nezpracovávají
* '''-D''' nebo'''--dereference-args'''
: Symbolické odkazy uvedené jako argumenty se rozvinou a zpracuje se položka, na kterou symbolický odkaz ukazuje, místo vlastního symbolického odkazu. Ostatní symbolické odkazy nejsou touto volbou dotčeny. Význam spočívá ve snadném zjištění alokovaného diskového prostoru známými adresáři, do kterých se dostáváme nejčastěji přes symbolické odkazy (např. /usr/tmp)
* '''-L''' nebo '''--dereference'''
: Podobně jako '''-D''' se rozvinou symbolické odkazy. Rozdíl je v tom, že se rozvíjejí všude a ne jenom v argumentech.
* '''-S''' nebo '''--separate-dirs'''
: Vypočte a oznámí se velikost každého adresáře a podadresáře zvlášť.
 
Pokud je argumentem úplné jméno speciálního souboru diskového zařízení s připojeným systémem souborů, potom se vypíší informace o tomto systému souborů místo systému souborů, ve kterém se odkazovaný speciální soubor nachází (zpravidla kořenový systém souborů). GNU implementace příkazu '''df''' neumí vypisovat informace o nepřipojených discích. A to proto, že provedení této operace je systémově závislé a GNU '''df''' by se špatně přenášelo na různé systémy.
Příkaz '''df''' rozpoznává tyto volby:
* '''-a''' nebo '''-all''': Do výpisu se zahrnou i ty systémy souborů, které mají 0 bloků. Tyto systémy souborů se implicitně ignorují. Jde zpravidla o pomyslné systémy souborů se speciálním významem (např. vstupní body pro automount).
* '''-i''' nebo '''--inodes'''
: Místo informace o obsazených a volných blocích se vypisuje informace o obsazených a volných i-uzlech
* '''-k''' nebo '''--kilobytes'''
: Informace se vypisuje v KB místo 512bajtových bloků. Touto volbou přebíjíme nastavení učiněné proměnnou POSIXLY_CORRECT.
* '''--no-sync''': Před čtením z disku se neprovádí operace '''sync'''. V systémech s velkým množstvím disků tak příkaz skončí dříve.
* '''-P''' nebo '''--portability'''
: Výstup bude ve formátu podle normy POSIX. Vypadá jako implicitní tvar, ale informace o jednom každém systému souborů se vypíše právě na jeden řádek. V implicitním tvaru se totiž pro lepší čitelnost se jméno připojovaného disku od ostatních informací oddělí novým řádkem tehdy, pokud je delší než 20 znaků (typické pro vzdálené disky, kde je i jméno počítače).
* '''--sync'''
: Před zjišťováním údajů z disků se provede operace '''sync'''. Tím získáme aktuální údaje, ale v systémech s veklým počtem disků může tato operace trvat poměrně dlouho.
* '''-ttyp''' nebo '''type=typ'''
: Do výpisu se zahrnou jenom ty systémy souborů, které jsou zadaného typu. Více typů můžeme zadat více volbami '''-t'''. Na místě typu se může vyskytnout některý z následujících (seznam je nutně neúplný)
** '''nfs''': Systém vzdáleně (z jiného počítače po síti) připojovaných disků.
** '''ext2''': Jeden ze základních systémů souborů pro ukládání dat na disk používaný Linuxem.
** '''msdos''': Systém souborů v oblasti MS-DOSu
* '''-xtyp''' nebo '''--exclude-type=typ'''
: Do výpisu se nezahrnou systémy souborů vyjmenovaných typů. Více typů zadáváme více volbami '''-x'''. Implicitně se vypisují všechny systémy souborů.
* '''-v'''
: Volba se v GNU implementaci '''df''' ignoruje. Používá ji [[Systém V]].
df vypíše jména právě připojených disků/oddílů, jejich velikost celkovou/užitou/zbývající/ v procentech a adresáře, do nichž jsou disky/oddíly připojeny
Jdou i kombinace df –aT atd.
 
== Příkazy pro správu přístupových práv ==
 
{| class="wikitable"
|}
 
== Nástroje pro archivaci ==
 
'''Pozn.:''' Archivační nástroje v linuxu na rozdíl od těch které se obvykle používají v MS Windows, nemusí nutně provádět také kompresi. Proto je tabulka rozdělena.
|}
 
== Vyhledávání ==
 
Pro vyhledávání se v Linuxu používají především dvě důležité aplikace [[Linux:find|find]] a [[Linux:grep|grep]]. Každá z nich plní svou specifickou funkci a jejich vzájemnou kombinací lze dosáhnout opravdu efektivních výsledků.
|}
 
=== Hledání souborů podle vzorků a vlastností ===
 
'''find''' vždy prochází celou větev adresářové struktury, která začíná udanou ''cestou''. Přitom hledá ty soubory (i adresář je souborem), které splňují zadané ''podmínky''. Najde-li takové, pak může nad těmito nalezenými soubory provádět různé operace počínaje vypsáním informace o jejich umístění po spouštění nejrůznějších skriptů. [[Linux:find|find]] má ohromné množství parametrů, proto doporučuji studovat pro náročnější nasazení jeho manuálovou stránku. Následujících příklady pouze demonstrují nejčastější možnosti použití a popisují jak vlastně [[Linux:find|find]] pracuje.
Prvním, nepovinným parametrem je výchozí adresář pro prohledávání. V následujících příkladu, kdy má [[Linux:find|find]] za úkol najít soubor s názvem <code>soubor.txt</code> jej vynechám. Bude se tedy prohledávat pouze adresář ve kterém právě jsem. Pokud [[Linux:find|find]] soubor najde, pak k němu vypíše plnou cestu. Pokud ne, nevypíše nic.
{{Výpis|1={{Linux:user}}[[Linux:find|find]] -name soubor.txt}}
V následujícím příkladu má za úkol vypsat všechny soubory, jejichž název končí ''txt''. Povšimněte si, že hledaný vzorek je uzavřen do uvozovek, a znak hvězdičky ('''*''') umožňuje tzv. "globbing", tj. že vzorku vyhoví ''všechny'' názvy které na řetězec ''txt'' končí.
{{Výpis|1={{Linux:user}}[[Linux:find|find]] -name "*txt"}}
Vyhledání jen souborů typu adresář (''directory'').
{{Výpis|1={{Linux:user}}[[Linux:find|find]] -type d}}
A nyní moje oblíbené použití. Jak už bylo zmíněno, s nalezenými soubory je možno pracovat dále tak, že jsou předhozeny nějakému jinému příkazu. V našem případě jsou všechny soubory typu soubor (''file'') s plnou cestou předány (přes dvojici složených závorek) k dalšímu zpracování příkazu [[Linux:chmod|chmod]], který jim nastaví práva na 664. Příkaz je nutné ukončit středníkem, který musí být "escapován" obráceným lomítkem (jinak by se jej pokoušel brát jako součást vloženého příkazu). A složené závorky je vhodné uzavřít do jednoduchých uvozovek, pro případ, že by se mezi nalezenými vzorky vyskytly některé s mezerou. Během akce se pak postupně nahrazují výsledky hledání.
{{Výpis|1={{Linux:user}}[[Linux:find|find]] -type f -exec [[Linux:chmod|chmod]] 664 '{}' \;}}
 
/usr/bin/X11/whereis}}
 
=== Vyhledávání vzorků v souborech ===
 
'''grep''' na rozdíl od příkazu find neprochází adresářovou strukturu, ale ''obsah'' předaných souborů. Ty můžeme předat buď najednou, jako seznam na příkazovém řádku, nebo pomocí vzorku. Jenže při větším počtu souborů narazíme na omezení příkazové řádky. Pak je vhodnější jej použít v kombinaci s příkazem find, navíc tím získáme možnost sofistikovaněji předávat soubory podle dalších podmínek.
 
=== Vyhledávání uživatelů ===
 
=== Vyhledávání v instalačních balíčcích ===
 
== Informativní příkazy ==
 
{| class="wikitable"
}}
 
== Uživatelé a jejich procesy ==
 
{| class="wikitable"
Z ukázkového výpisu můžete vyčíst, že v okamžiku spuštění příkazu byl do systému kromě uživatele ''user'', který byl přihlášen na grafické konzoli (typicky <code>tty7</code>), přihlášen také ''root'', a to na první konzoli.
 
Mezi tím, než byl spuštěn příkaz s parametrem '''-a''' se do systému přihlásil pod uživatelem ''user'' také ještě někdo jiný ze vzdáleného stroje ''stroj.domena.cz''. Údaj "6:15" u konzole <code>tty1</code> udává, že už je tomu víc jak šest hodin co na této konzoli ''root'' vyvíjel nějakou aktivitu.
 
'''w''' – pro zjištění, kdo je v systému přihlášen, lze místo [[Linux:who|who]] použít také tento příkaz. Vypíše nejen ,kdo je kam přihlášen, ale také, co má na konzoli spuštěno.
}}</small>
 
== Systémové informace ==
 
{| class="wikitable"
|}
 
== Správa procesů ==
 
{| class="wikitable"
'''kill''' prostřednictvím různých signálů ukončí nebo změní stav jednoho nebo více procesů. Samotný příkaz kill má jako implicitní signál číslo 15, tedy signál ukončující označený proces (procesy). Můžeme však pomocí volby nastavit jiný signál a daný proces tak například jen zastavit. Při zadávání příkazu kill je podmíněno, aby cílový proces byl spuštěn uživatelem, který se snaží kill použít, výjimkou (ostatně jako vždy) je administrátor. Po provedení příkazu kill zobrazí program kill příslušné hlášení.
 
Zadáme-li příkaz ''kill -l'', pak nám terminál vypíše všechny signály, které můžeme použít s uvedením jejich čísla a funkce (např: 1) SIGHUP, 3) SIGQUIT, 9) SIGKILL, 15) SIGTERM atd.). Implicitním signálem je SIGTERM. Většinu signálů může cílový proces tzv. zachytit a zpracovat, tedy například signál ignorovat nebo před ukončením uložit rozpracovaná data.
 
Argumenty, které zde používáme, jsou čísla procesů, které chceme pomocí programu kill ovlivnit. Tyto PID můžeme zjistit například pomocí obslužného programu PS. Tyto argumenty pak v příkazu kill udáváme za volbu. Např: ''kill -9 1265'' vyšle signál SIGKILL, který proces s číslem PID 1265 usmrtí (bezpodmínečně ukončí), takto ukončený proces nemá šanci ani uložit svá data.
Budeme-li chtít rychle ukončit všechny procesy a odhlásit se, pak stačí zadat příkaz <code>kill -9 0</code> (ukončí rodiče rodičů a tím i všechny potomky).
 
== Příkazy pro práci s jádrem ==
 
{| class="wikitable"
{{Poznámka|Příklady použití těchto příkazů naleznete v kapitole [[Moduly linuxového jádra]]}}
 
== Různé ==
 
{| class="wikitable"
2 768

editací