navody:fc5prirucka21

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revize Předchozí verze
Následující verze
Předchozí verze
Poslední revizeObě strany příští revize
navody:fc5prirucka21 [2006/08/27 18:54] mackynavody:fc5prirucka21 [2006/09/24 11:22] macky
Řádek 1: Řádek 1:
-[[fc5prirucka|Hlavní stránka]] 
  
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
-===== Základy příkazové řádky ===== 
-I když již není znalost unixových příkazů pro soužití s Linuxem natolik důležitá jako dříve, není od věci osvojit si alespoň několik základních příkazů. Důvodem je, že  
-"klikací" aplikace pro nastavení systému se mohou lišit pro jednotlivé verze distribuce. Příkazy však zůstavají neměnné. Navíc v případě, kdy budete nuceni pracovat např. v záchranném módu, budete odkázáni výhradně na příkazový řádek. Sečteno a podtrženo - znalost několika málo příkazů Vás nezabije, ale posílí (navíc zažije určitě řadu situací, kdy se Vám tato znalost bude i hodit). Jestliže Vás však tato kapitola už od prvního pohledu odpuzuje, můžete ji přeskočit.\\ 
- 
-V následujícím textu budeme zaměňovat pojmy příkazový řádek a terminál. Příkazovým řádkem / terminálem budeme rozumět rozhraní, pomocí něhož zadává uživatel příkazy. Dalším pojmem, se kterým se zde můžete setkat, je //shell//. //shell// je zjednodušeně řečeno software, který umožňuje komunikaci mezi uživatelem a jádrem OS Linux - je totiž zodpovědný za interpertaci příkazů zadávaných uživatelem prostřednictvím příkazového řádku. //shell// tak brání tomu, aby uživatelé přistupovali přímo k jádru, což lze chápat do jisté míry jako bezpečnostní prvek.\\ 
-Pro OS Linux bylo vyvinuto několik //shellů//. Standardním //shellem// je //bash//, který bude s největší pravděpodobností také součástí Vaší instalace. //bash// je akronymem sousloví "**B**ourne **A**gain **SH**ell" a je pokračovatelem původního //shellu//, který napsal Stephen Bourne koncem 70.let. Samotný //bash// pak pochází z roku 1987.\\ 
- 
-Dalším hojně používaným pojmem je příkaz. Příkaz není v podstatě nic jiného než soubor, který má nastaveno právo spouštění (viz. kapitola [[navody:fc5prirucka21#Definování přístupových práv]]). Většina těchto souborů je pak uložena v adresářích ///sbin//, ///bin//, ///usr/bin// a ///usr/sbin//. Jestliže chceme zadat daný příkaz stačí ve většině případů do příkazové řádky napsat pouze jeho jméno. 
- 
-  ls -la 
- 
-Je však možné také zadat kompletní cestu. 
- 
-  /bin/ls -la 
- 
-V případě, že adresář, ve kterém se nachází daný příkaz, není definován v proměnné //PATH//, je uvedení celé cesty nezbytné (viz. kapitola [[navody:fc5prirucka21#Proměnná PATH]]).\\ 
- 
-Příkazový řádek otevřete v grafickém prostředí Gnome pomocí nabídky //Aplikace -> Příslušenství -> Terminál//. V historii zadaných příkazů můžete listovat pomocí šipky nahoru a dolů. Dále je možné automaticky doplňovat názvy souborů a adresářů pomocí klávesy tabelator (stačí napsat část názvu souboru nebo adresáře a stisknout klávesu tabelatoru).\\ 
- 
-**Poznámka:** Zde uvedené příkazy lze označit jako naprosté minimum příkazové řádky - seznam příkazů není ani zdaleka vyčerpávající. 
- 
- 
- 
- 
- 
- 
-==== Obecné informace === 
- 
-=== Proměnná PATH === 
-Jak již bylo zmíněno v úvodu, aby bylo možné spustit daný příkaz pouze zadáním jména bez specifikování celé cesty, musí být adresář, ve kterém je příkaz uložen, definován v proměnné //PATH//. Obsah této proměnné získáte pomocí příkazu 
- 
-  echo $PATH 
-     
-  /usr/kerberos/bin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/home/macky/bin 
- 
-Na výše uvedeném výpisu je vidět, že proměnná //PATH// obsahuje cesty k několika adresářům oddělených dvojtečkou. Jestliže uživatel zadá příkaz, jsou postupně v pořadí dané výpisem procházeny jednotlivé adresáře. V případě, že některý z těchto adresářů bude obsahovat soubor se stejným jménem jako jméno příkazu, pokusí se ho //shell// spustit. 
- 
-  ls -la 
- 
-Jestliže se tento soubor spustit nepodaří (např. jestliže není nastaveno právo spouštění) nebo jestliže žádný z adresářů stejnojmnenný soubor neobsahuje, nahlásí //shell// chybu.\\ 
-V případě, že soubor existuje, avšak jeho adresář není specifikován v proměnné //PATH//, jsou možná dvě řešení. Prvním a nejjednodušším řešením je uvést celou cestu k danému souboru. 
- 
-  /bin/ls -la 
- 
-Druhou možností je pak přidat daný adresář do proměnné //PATH//. Editaci této proměnné může provádět pouze superuživatel. Je také dobré si rozmyslet, zda-li je opravdu nutné daný adresář do proměnné //PATH// přidávat. Jestliže totiž přidáme množství adresářů s velkým počtem souborů, může se z důvodu procházení těchto adresářů zpracování příkazů prodloužit. Dalším aspektem je pak bezpečnostnost. Jestliže bychom např. přidali adresář na začátek proměnné //PATH// a tento adresář nezabezpečili proti zápisu pro ostatní uživatele, může dojít k "podstrčení" příkazu. //shell// totiž postupně prochází všechny adresáře a spustí první soubor prvního adresáře, jehož jméno se shoduje se jménem příkazu. Příkaz //ls -la// by pak namísto výpisu obsahu pracovního adresáře mohl např. mazat soubory.\\ 
-Adresář ///cesta/k/adresari// je možné na konec proměnné //PATH// přidat pomocí příkazu 
- 
-  $PATH = echo $PATH:/cesta/k/adresari 
- 
-=== Spuštení vícero příkazů === 
-Standardně zapisujeme jeden příkaz na jeden řádek. 
- 
-  cd /usr/sbin 
-  ls -la 
- 
-Znak středník umožňuje spustit několik příkazů po sobě v pořadí uvedeném v příkazové řádce. 
- 
-  cd /usr/sbin; ls -la 
- 
-Tento zápis je ekvivalentní s výše uvedeným. 
- 
-=== Zástupné znaky === 
- 
-Zástupné znaky (tzv. wildcards) nám umožňují specifikovat několik jmen souborů / adresářů. najednou.\\ 
-Uvažujme soubory //text.txt//, //textik.txt// a //latex.tex//. Jestliže bychom chtěli zjistit např. nastavená práva přiřazená těmto souborům pro jednotivé uživatele, mohli toto provést pomocí tří příkazů 
- 
-  ls -la text.txt 
-  ls -la text.tex 
-  ls -ls latex.tex 
- 
-nebo pomocí jednoho příkazů s použitím zástupných znaků 
- 
-  ls -la *tex*.t* 
- 
-Zástupný znak hvězdička (//*//) představuje libovolný počet znaků (včetně žádného znaku).\\ Dalším zástupným znakem je otazník (//?//), kterým nahrazujeme libovolný jeden znak. Soubory //text.txt// a //text.tex// tedy můžeme pomocí tohoto zástupneho znaku výjádřit jako 
- 
-  ls -la text.t?? 
- 
-Libovolný znak z vybrané skupiny znaků lze zapsat pomocí dvojice hranatých závorek (//[//) a (//]//), které obsahují dané znaky. Uvažujme soubory //text_a.txt//, //text_A.txt// ((OS Linux narozdíl od OS Windows rozlišuje malá a velká písmena v názvech souborů a adresářů. Soubor //text_a.txt// a //text_A.txt// tak nejsou jeden a tentýž soubor ale dva rozdílné soubory.)), //text_b.text//, //text_B.txt//, //text_1.txt// a //text_2.txt//. Příkaz 
- 
-  ls -la text_[a,b].txt 
- 
-nám vypíše údaje o souborech //text_a.txt// a //text_b.txt//. Příkaz 
- 
-  ls -la text_[A-B].txt 
- 
-zase vypíše údaje o souborech //text_A.txt// a //text_B.txt//. Údaje o souborech //text_1.txt// a //text_2.txt// získáme např. pomocí 
- 
-  ls -la text_[0-9].txt 
- 
-Chceme-li získat údaje pro všechny soubory, použijeme syntaxi 
- 
-  ls -la text_[0-9, a-z, A-Z].txt 
- 
- 
-Informace o všech souborech kromě souboru //text_2.txt// získáme pomocí 
- 
-  ls -la text_[!2].txt 
- 
- 
- 
-=== Použití závorek a zpětného lomítka === 
-Způsob, jakým příkazový řádek vyhodnocuje zadané příkazy, si v některých případech může vynutit použití závorek popř. zpětného lomítka. Klasickým příkladem jsou mezery v názvech souborů a adresářů běžně používané v OS typu Windows. Jestliže budeme mít adresář //jmeno adresare// bude příkaz 
- 
-  cd jmeno adresare 
- 
-interpretován stejně jako kdybychom zadali pouze 
- 
-  cd jmeno 
- 
-Tento problém se dá vyřešit třemi způsoby. 
- 
-  cd 'jmeno adresare' 
-  cd "jmeno adresare" 
-  cd jmeno\ adresare 
- 
-V prvním případě jednoduché uvozovky "chrání" v nich uzavřený text před interpretací příkazovým řádkem. Druhý příklad je totožný s prvním s tím rozdílem, že dvojité uvozovky povolují interpretaci zástupných znaků. Zpětné lomítko brání interpretaci bezprostředně následujícího znaku.\\ 
- 
-Mezi znaky interpretované příkazovou řádkou patří vedle mezery např. zástupné znaky, ampersand //&//, znak "svislítko" //|// a lomítko ///// 
- 
-=== Apostrof === 
- 
-Jestliže text uzavřeme do apostrofů, bude text zpracován jako příkaz a na jeho místo bude dosazen výstup tohoto příkazu. 
- 
-  $pracovni_adresar=`pwd` 
-  echo $pracovni_adresar 
- 
-**Poznámka:** Pomocí prvního příkazu definujeme proměnnou //pracovni_adresar// a její hodnotu vypíšeme pomocí druhého příkazu. Při přiřazení hodnoty proměnné nesmí být mezi jménem proměnné, znakem rovno (//=//) a hodnotu mezera. 
- 
-=== Přesměrování výstupu === 
-Řada programů produkuje určitý výstup. Například příkaz 
- 
-  ls -la 
- 
-vypíše na obrazovku obsah pracovního adresáře. Ta je v tomto případě tzv. standardním výstupem. Kdybychom však chtěli výstup tohoto příkazu zapsat např. do souboru, museli bychom tento výstup přesměrovat. K tomu slouží znaky //>// a //>>//. 
- 
-  ls -la > obsah_adresare.txt 
-  ls -la >> obsah_adresare.txt 
- 
-Pomocí prvního příkazu vytvoříme soubor //obsah_adresare.txt//. Pokud tento soubor již existuje, přepíšeme jeho obsah. Druhý příkaz je totožný s tím rozdílem, že v případě existence souboru //obsah_adresare.txt// nedojde k přepsání jeho obsahu, ale přidání výstupu na konec souboru.\\ 
- 
-V některých případech se může být žádoucí výstup příkazu zahodit. V tomto případě přesměrujeme výstup do adresáře ///dev/null//, který je jakousi "černou dírou" systému. 
- 
-  ls -la > /dev/null 
- 
-=== Roury === 
-Roura je mechanismus, kterým je možné přímo předat výstup jednoho příkazu příkazu jinému. Klasickým příkladem je příkaz //grep//. 
- 
-  cat text.txt | grep Linux 
- 
-Příkaz nalevo od "svislítka" vygerenuje obsah souboru //text.txt//, který je předán příkazu //grep//. Ten pak vypíše všechny řádky, které obsahují slovo Linux. 
- 
-=== Příkazy spouštěné na pozadí === 
-Standardně jsou příkazy spouštěné na popředí. To znamená, že příkazový řádek je příkazem "zablokován" ((Jestliže se nejedná o interaktivní příkaz - např. textový editor.)) a uživatel musí čekat, než proběhne jeho zpracování. Alternativou k aplikacím spuštěným na pozadí jsou příkazy spuštěné na pozadí. V tomto případě není příkazový řádek příkazem blokován a uživatel může spouštět další příkazy. Příkaz se spustí na pozadí tak, že se na jeho konec přidá znak ampersand (//&//). 
- 
-  sleep 60& 
- 
-Narozdíl od výše uvedené syntaxe, blokuje příkaz 
- 
-  sleep 60 
- 
-příkazový řádek po dobu 60 sekund. Po tuto dobu nemůže uživatel zadávat další příkazy a musí čekat, než příkaz skončí. 
- 
- 
-==== Uživatelé ==== 
- 
-=== passwd === 
-Příkaz //passwd// umožňuje uživateli provést změnu hesla. Jinému uživateli může heslo změnit pouze superuživatel.\\ 
- 
-Své heslo můžete změnit pomocí 
- 
-  passwd  
- 
-Superuživatel pak může změnit heslo jiného uživatele pomocí 
- 
-  passwd jmeno_uzivatele 
- 
-=== su === 
-//su// je příkazem pro změnu uživatele. Klasickým případem je, když v rámci instalace aplikace popř. úpravě nastavení systému potřebujete získat práva superuživatele. Po zadání příkazu //su// bude vyzvání k zadání hesla daného uživatele (s vyjímkou případů, kdy tento příkaz spouštíte jako superuživatel).\\ 
- 
-Změnu uživatele na superuživatele provedeme pomocí 
- 
-  su 
- 
-popř. 
- 
-  su root 
- 
-Jestliže se chceme změnit svou "identitu" na jiného uživatele, použijeme následující syntaxi 
- 
-  su jmeno_uzivatele 
- 
-//su// můžete také spustit ve tvaru 
- 
-  su - jmeno_uzivatele 
- 
-Rozdíl oproti výše uvedené syntaxi je v tom, že se Vám nastaví kompletní shell prostředí daného uživatele (tj. včetně případných proměnných a dalších vlastností). 
- 
- 
-==== Základní informace o systému ==== 
- 
-=== uname === 
-//uname// slouží ke zjištění údajů o systému, ke kterému jste momentálně přihlášeni. 
- 
-  uname -a 
-   
-  Linux localhost.localdomain 2.6.17-1.2139_FC5 #1 Fri Jun 23 12:40:16 EDT 2006 i686 athlon i386 GNU/Linux 
- 
-=== whoami === 
-//whoami// vypíše jméno uživatele, který momentálně "ovládá" příkazový řádek. 
- 
-  whoami 
-   
-  macky 
- 
-=== free === 
-//free// vypíše informace o využití fyzické operační paměti a tzv. swapu. Údaje zde uváděné jsou v násobcích 1kB. 
- 
-  free 
-               total       used       free     shared    buffers     cached 
-  Mem:        515696     507504       8192          0      11444     189824 
-  -/+ buffers/cache:     306236     209460 
-  Swap:            0          0          0 
- 
-=== w === 
-//w// zobrazí základní informace o uživatelích přihlášených do systému a o aplikacích, které tito uživatelé spustili. Dále lze pomocí tohoto příkazu získat informace o čase a zatížení CPU za poslední 1, 5 a 15 minut. 
- 
-  w 
-   
-    18:15:43 up  1:11,  3 users,  load average: 0.40, 0.76, 0.59 
-  USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT 
-  macky    :0                      17:04   ?xdm?   4:35   0.66s gnome-session 
-  macky    pts/1    :0.0             17:18    1:20   0.02s  0.02s bash 
-  macky    pts/2    :0.0             18:12    0.00s  0.06s  0.01s w 
- 
-=== df === 
-//df// slouží k získávání informací o místě připojení jednotlivých diskových oddílů a míře zaplnění jim přiděleného prostoru. 
- 
-  df 
-   
-  Filesystem           1K-blocks      Used Available Use% Mounted on 
-  /dev/hda6              9912560   5660824   3740068  61% / 
-  tmpfs                   257848            257848   0% /dev/shm 
-  /dev/hda7              1984016    614028   1267576  33% /home 
-  /dev/hda8             28080704   4358864  22272380  17% /opt 
-  /dev/hda1              5116668   3151676   1964992  62% /media/windows_c 
- 
- 
-Informace zde uváděné jsou v tzv. blocích, které mají standardně velikost 1kB. Pokud Vám tento formát přijde nepřehledný, zkuste použít syntaxi  
- 
-  df -h 
-   
-  Filesystem            Size  Used Avail Use% Mounted on 
-  /dev/hda6             9.5G  5.4G  3.6G  61% / 
-  tmpfs                 252M      252M   0% /dev/shm 
-  /dev/hda7             1.9G  600M  1.3G  33% /home 
-  /dev/hda8              27G  4.2G   22G  17% /opt 
-  /dev/hda1             4.9G  3.1G  1.9G  62% /media/windows_c 
-   
-která vypíše volné místo v kB/MB/GB. 
- 
- 
- 
- 
-====Práce se soubory==== 
- 
-Každý soubor a adresář ((Adresář je, pro někoho možná překvapivě, z pohledu systému souborů také souborem, i když se jedná o soubor s pevně danou strukturou.)) má svého vlastníka. Standardně je vlastníkem souboru uživatel, který ho vytvořil. Soubory pak lze vytvářet pouze v adresářích, kde k tomu má uživatel oprávnění. Toto pravidlo neplatí pouze pro tzv. superuživatele ((Někdy je superuživatel označován jako tzv. root. Tyto pojmy jsou vzájmně zaměnitelné. Superuživatel je administrátorem systému - tj. provádí nejrůznější nastavení, instalaci aplikací, vytváří a ruší účty apod. Z tohoto důvodu potřebuje šiřší pravomoce než má standardní uživatel.)) - ten může přistupovat ke všem souborům a adresářům bez omezení. Více o přístupových právech viz. kapitola [[fc5prirucka21#Definování přístupových práv]]. 
- 
-=== cd === 
-//cd// slouží ke změně pracovního adresáře. Pracovním adresářem se rozumí adresář, ve kterém se uživatel momentálně nachází a k jehož souborům hodlá primárně přistupovat.\\ 
-Následujícím příkazem nastavníme adresář ///opt/games// jako pracovní. 
- 
-  cd /opt/games 
- 
-Příkaz 
- 
-  cd sauerbraten 
- 
-nás přesune do podadresáře //sauerbraten//, který se nachází v aktuální pracovním adresáři.\\ 
- 
-V první zápise uvádíme tzv. absolutní cestu k adresáři, v druhém pak cestu relativní. Absolutní cesta vždy začíná lomítkem /////, což je adresář na samém vrchodu adresářového stromu - tzv. kořenový adresář. Naproti tomu relativní cesta lomítkem nezačíná - zadaný adresář je hledán pouze v pracovním adresáři. Absolutní cesta adresáře //sauerbraten// je tedy ///opt/games/sauerbraten//. 
- 
-=== pwd === 
-//pwd// slouží k zjištění aktuálního pracovního adresáře. 
- 
-  pwd 
-   
-  /opt/games/sauerbraten   
- 
-=== ls === 
-Pomocí //ls// lze získat obsah adresáře. Maximální dostupnou informaci získáme pomocí přepínačů //-la//. 
- 
-  ls -la /opt 
-   
-  drwxr-xr-x  8 root  root   4096 Aug 13 18:35 . 
-  drwxr-xr-x 24 root  root   4096 Aug 27 17:04 .. 
-  drwx------  2 root  root  16384 Jun 24 13:50 lost+found 
-  drwxrwxrwx  5 root  root   4096 Aug 17 20:38 macky 
- 
-=== du === 
-//du// vypíše množství diskového prostoru alokovaného pro zvolený soubor či adresář. 
- 
-Příkaz 
- 
-  du /home/macky 
-   
-  ... 
-  4128    /home/macky/Desktop 
-  ... 
-  51900   /home/macky/.mozilla   
-  ... 
-   
- 
-vypíše seznam souborů a adresářů obsažených v adresáři ///opt// spolu s údajem o velikosti v jednotkách 1kB diskového prostoru, který zabírají. Příkaz je také možné použít s přepínačem //-h//, který velikost souborů a adresářů vyjádří v jednotkách kB/MB/GB. 
- 
-  du -h /home/macky 
- 
-  ... 
-  4.1M    /home/macky/Desktop 
-  ... 
-  51M     /home/macky/.mozilla 
-  ... 
- 
-Příkaz 
- 
-  du -s /home/macky 
- 
-naproti tomu vypíše pouze jedno číslo odpovídající velikosti diskového prostoru, který zabírá adresář ///opt// včetně podadresářů a souborů. Opět je možné použít přepínač //-h//. 
- 
-  du -sh /home/macky 
- 
-  566M    /home/macky 
- 
-=== file === 
-//file// slouží k zjištění typu (datového formátu) souboru. 
- 
-  file /opt/text.txt 
-   
-  text.txt: ASCII text 
- 
-=== rm === 
-Příkaz //rm// se používá pro odstranění souborů, souborových linků a celé adresářové struktury. 
- 
-  rm -ri /opt/games 
- 
-Při specifikaci souborů je možné použít zástupné znaky. 
- 
-  rm -ri /opt/games/*.txt 
-  rm -ri /opt/games/[A,B,C]*? 
- 
-=== rmdir === 
-//rmdir// je příkaz, kterým se mažou adresáře. 
- 
-  rmdir /opt/games 
- 
-Stejně jako //rm// podporuje //rmdir// zástupné znaky. 
- 
-=== touch === 
-Příkaz //touch// slouží k vytvoření souboru. 
- 
-  touch text.txt 
- 
-**Poznámka:** Soubor je ale možné vytvořit i pomocí textového editoru nebo přesměrováním výstupu jiného souboru. Klasickým případem je uložení výstupu manuálových stránek do souboru. 
- 
-  man mkdir > manualove_stranky_mkdir.txt 
- 
-=== mkdir === 
-//mkdir// slouží k vytvoření nových adresářů. 
- 
-  mkdir /opt/games 
- 
-=== cp === 
- 
-//cp// slouží ke kopírování souborů. 
- 
-  cp zdrojove_soubory cilovy_soubor_nebo_adresar 
- 
-Pomocí výše uvedené syntaxe překopírujeme všechny soubory do cílového adresáře. Příkaz //cp// podporuje také zástupné znaky.  
- 
-=== mv === 
-//mv// slouží k přesunu / přejmenování souborů (včetně adresářů ((Příkaz sice nemůže fyzicky přesunout adresář, ale můžeho ho přejmenovat.)) ). Příkaz //mv// podporuje zástupné znaky. 
- 
-  mv -f zdrojovy_soubor cilovy_soubor 
-  mv -f zdrojovy_adresar cilovy_adresar 
-  mv -f seznam_zdrojovych_souboru cilovy_adresar 
- 
-**Poznámka:** Přepínač //-f// přepíše případné existující soubory. 
- 
-=== find === 
-Pomocí //find// je možné nalézt umístění zvoleného souboru či adresáře. Tento příkaz podporuje zástupné znaky. 
- 
-  find adresar_k_prohledani -name "jmeno_hledaneho_souboru_nebo_adresare" 
- 
-Následující příkaz vyhledá všechny textové soubory začínající velkým písmenem v celém systému ((Adresář ///// je tzv. kořenovým adresářem. Všechny adresáře jsou podadresáři tohoto adresáře. Proto, dáme-li prohledat kořenový adresář, prohledáváme v celý počítač.)). 
- 
-   find / -name "[A-Z]*.txt" 
- 
-=== ln === 
-//ln// vytváří tzv. linky na soubory. Podstata linků spočívá, jednodušeně řečeno, v tom, že odkazují na soubory. Rozlišujeme dva typy linků - pevné a symbolické.\\ 
-Symblický link je soubor, který odkazuje na jiný soubor. Pokud provádíme např. editaci symbolického linku, provádíme v skutečnosti editaci souboru, na který tento link odkazuje.\\ Pevný link je naproti tomu  odkazem přímým - není tvořen samostatným souborem ale pouze odkazem v adresáři. Navíc platí omezení, že soubor, na který se pevný link odkazuje, musí být umístěn na stejném diskovém oddílu.\\ 
- 
-Symbolický link vytvoříme pomocí 
- 
-  ln -s zdrojovy_soubor nazev_linku 
- 
-pevný link pak pomocí 
- 
-  ln zdrojovy_soubor nazev_linku 
- 
-**Poznámka:** Výhoda linků je zřejmá - umožnují elegantně obcházet potřebu kopírování souborů, jestliže je potřebujeme na "dvou" místech. To přispívá k úspoře místa na disku a konzistentnosti systému. 
- 
-=== mc === 
-//mc// je zkratka pro //Midnight Commander//. Nejedná se ani tako o klasický příkaz jako spíše o aplikaci - klon známého //Northon Commander// z dob nadvlády //MS-DOS//. Tato aplikace umožňuje vytváření, přesun, přejmenování a mazání souborů a adresářů. //mc// má také vestavěný editor pro modifikaci souborů, a obsahuje jednoduchého //FTP// klienta. 
- 
-  mc 
- 
-**Poznámka:** Jestliže //mc// není nainstalován, lze ho snadno přídat jako superuživatel pomocí 
- 
-  yum -y install mc 
- 
- 
-==== Výpis obsahu souborů ==== 
- 
-=== cat === 
-//cat// slouží k výpisu obsahu souboru. 
- 
-  cat text.txt 
- 
-Výpis obsahu souboru je možné přesměrovat do nového souboru. 
- 
-  cat text.txt > novy_textovy_soubor.txt 
- 
-=== more === 
-//more// slouží podobně jako //cat// k výpisu obsahu souborů. Narozdíl od //cat// však //more// obsah souboru "rozobrazovkuje". To znamená, že obsah souboru nevypíše najednou, ale rozdělí jej. Na obrazovku vypíše vždy část textu a výpis pokračuje až po stisku klávesy. Tento příkaz se používá zejména při prohlížení dlouhých textových souborů. 
- 
-  more text.txt 
- 
-=== less === 
-Ačkoliv je název možná trochu matoucí, umí toho příkaz //less// více než příkaz //more//. Příkaz //less// stejně jako //more// provede "rozobrazovkování" výpisu obsahu souboru, avšak tento výpis je možné volně procházet pomocí kláves //Page Up// a //Page Down//. 
- 
-  less text.txt 
- 
-=== grep === 
-//grep// slouží k vyhledávání textových řetězců v souborech. Velice často se pojí s výše uvedenými příkazy. Následují příkaz nám vypíše všechny řádky souboru //text.txt//, které obsahují sekvenci znaků //inux//. 
- 
-  cat text.txt | grep "inux" 
- 
-Tento příkaz by např. vypsal všechny řádky, kde figuruje slovo //Linux// nebo //linux//. 
- 
-==== Definování přístupových práv ==== 
-Jak již bylo zmíměno v kapitole [[navody:fc5prirucka21#Práce se soubory]], každý soubor a adresář má svého vlastníka. Ten pak určuje jaké operace mohou s těmito soubory / adresáři provádět ostatní uživatelé. Standardně se jedná v případě souborů o právo čtění (read), zápisu (write) a spouštění (execute), v případě adresáře pak o právo prohlížení obsahu (ekvivalent práva čtení), manipulace se soubory (ekvivalent práva zápisu) a právo zobrazovat informace o souborech (ekvivalent práva spouštění)((Vedle majitele souboru / adresáře může o těchto právech rozhodovat také superuživatel. Také jakákoliv nastavení provedená vlastníkem souboru / adresáře nemají vliv na práva superuživatele - ta jsou totiž vždy "absolutní".)). Při přidělování práv pak rozlišujeme následující tři skupiny uživatelů: (1) vlastníka souboru / adresáře, (2) tzv. skupinu uživatele a (3) ostatní uživatele. Práva může jednotlivým skupinám přidělit vlastník ((Práva může dokonce upravit také sama sobě. To však nemá dopad na možnost toto nastavení kdykoliv změnit.)). Přehled práv, která se váží k vybranému souboru / adresáři lze získat pomocí příkazu //ls//.\\ 
-Předpokládejme, že příkaz 
- 
-  ls -la /home/macky/text.txt 
- 
-zobrazil výpis 
- 
-  ´-rwxr-xr-x 1 macky skupina 23056 čec 26 23:10 Derivates.tex 
- 
-První znak pomlčka (//-//) značí, že se jedná o soubor ((Adresář by byl indikován znakem (//d//).)). Následující trojice znaků značí práva vlastníka souboru - jedná se o právo  čtení (**r**ead), zápisu (**w**rite) a spouštění (e**x**ecute). Další trojice definuje práva skupiny a to jmenovitě právo čtení a spouštění. Ostatním uživatelům byla opět přidělena práva čtení a spouštění. Dále nám výpis říká, že vlastníkem souboru je uživatel //macky//, který náleží do skupiny //skupina//. 
- 
-=== chgrp === 
-Příkaz //chgrp// slouží ke změně vlastníků specifikovaných souborů / adresářů. Změnu skupiny může provést pouze vlastník popř. superuživatel. Tento příkaz podporuje zástupné znaky. 
- 
-  chgrp nova_skupina jmeno_souboru_nebo_adresar 
- 
-=== chown === 
-Příkaz //chown// je podobný výše uvedenému příkazu //chgrp// s tím rozdílem, že slouží ke změně vlastníka souboru / adresáře. 
- 
-  chown novy_vlastnik jmeno_souboru_nebo_adresare 
- 
-=== chmod === 
-Pomocí příkazu //chmod// lze měnit měnit práva přiřazená jednotlivým skupinám. Je možné použít dva způsoby zápisu.\\ 
-V prvním případě nejprve specifikujeme skupinu uživatelů, která následuje znak plus (//+//) popř. mínus (//-//) následovaný výčtem práv, která mají být přidána popř. odebrána. Co se skupin uživatelů týče, používají se písmena //u// (user) pro označení vlastníka, //g// (group) pro označení skupiny a //o// (other) pro označení ostatních uživatelů. Práva pak označujeme písmeny //r// (read) pro čtení, //w// (write) pro zápis a //x// (execute) pro spuštění. Následující příkaz přidá vlastníkovi a jeho skupině práva čtení a zápisu pro soubor //soubor//, který se nachází v pracovním adresáři. 
- 
-  chmod ug+rw soubor 
- 
-Druhá varianta zápisu využívá čísel. 
- 
-^            ^  čtení ^ zápis ^ spouštění ^ 
-^ vlastník    400   | 200   | 100       | 
-^ skupina    |  40    | 20    | 10        | 
-^ ostatní    |  4     | 2     | 1         | 
- 
-Výsledná práva jsou dána součtem čísel uvedených v tabulce. Například příkaz 
- 
-  cmod 750 soubor 
- 
-nastaví vlastníkovi všechna práva, skupině vlastníka právo čtení a spouštění. Ostatním uživatelům nebyla přidělena žádná práva. Výsledné číslo 750 je tedy součtem čísel 400, 200, 100, 40 a 10. 
- 
-=== umask === 
-Pomocí příkazu //umask// se nastavují implicitní práva pro nově vytvořené soubory. Syntaxe tohoto příkazu je podobná jako v případě //chmod// s číselnou notací. Zásadní rozdíl je v tom, že čísla neurčují práva, která se mají přidat ale naopak práva, která mají odebrána. Například 
- 
-  umask 027 
- 
-ponechává vlastníkovi všechna práva, skupině vlastníka pak práva čtení a spouštění a ostatním uživatelům jsou odebrána všechna práva.\\ 
-Standardně jsou tato implicitní práva specifikována v souboru ///etc/bashrc//, nicméně každý uživatel si toto nastavení může změnit zápisem do souboru //.bashrc//, který se nachází v jeho domovském adresáři ((Domovským adresářem rozumíme adresář ///home/jmeno_uzivatele//.)). 
- 
- 
- 
- 
-==== Řízení procesů ==== 
-Procesem budeme pro účely této kapitoly rozumnět jakýkoliv spuštěný program. 
- 
-=== ps === 
-Pomocí příkazu //ps// získáte seznam všech spuštěných procesů 
- 
-  ps aux 
-   
-  USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND 
-  root          0.0  0.1   1992   676 ?        Ss   20:24   0:00 init [5] 
-  root          0.0  0.0      0     0 ?        SN   20:24   0:00 [ksoftirqd/0] 
-  root          0.0  0.0      0     0 ?        S    20:24   0:00 [watchdog/0] 
-  root          0.0  0.0      0     0 ?        S<   20:24   0:00 [events/0] 
-  root          0.0  0.0      0     0 ?        S<   20:24   0:00 [khelper] 
-  root          0.0  0.0      0     0 ?        S<   20:24   0:00 [kthread] 
-  root      2045  0.0  0.8  11480  4636 ?        S    20:24   0:00 python ./hpssd.py 
-  root      2057  0.0  0.5   9272  2908 ?        Ss   20:24   0:00 cupsd 
-  postgres  2143  0.0  0.6  20232  3108 ?        S    20:25   0:00 /usr/bin/postmaster -p 5432 -D /var/lib/pgsql/data 
-  postgres  2145  0.0  0.1  10020   560 ?        S    20:25   0:00 postgres: logger process 
-  postgres  2147  0.0  0.1  20232   852 ?        S    20:25   0:00 postgres: writer process 
-  postgres  2148  0.0  0.1  11020   548 ?        S    20:25   0:00 postgres: stats buffer   process 
-  postgres  2149  0.0  0.1  10252   728 ?        S    20:25   0:00 postgres: stats collector process 
-  macky     2956  0.0  2.1  52884 11104 ?        Sl   20:36   0:00 xmms -e 
-  macky     3202  0.4  2.7  88864 14324 ?        S    21:16   0:00 gaim 
-  ... 
- 
-Z výše uvedeného výpisu lze pro každý proces zjistit uživatele, který jej spustil (položka //USER//) a identifikační číslo procesu (položka //PID//). Vzhledem k tomu, že tento výpis můžeme být vcelku dlouhý, je vhodné použít také příkaz //less// popř. //grep//. Například seznam všech procesů spuštěných uživatelem macky bychom získali pomocí příkazu 
- 
-  ps aux | grep macky 
- 
-=== kill === 
-Příkaz //kill// slouží k ukončení procesů. Jeho syntaxe je následující 
- 
-  kill pid_procesu 
- 
-//PID// daného procesu lze získat pomocí příkazu 
- 
-  ps aux 
- 
-Každý uživatel může "zabít" svůj proces; superuživatel pak může zabít jakýkoliv proces. Asi nemá smysl zdůrazňovat, že bezhlavé zabíjení procesů superuživatelem může mít za následek kolaps systému. 
- 
- 
- 
- 
- 
-===== ===== 
- 
-** Poznámka:** Bližší informace o výše uváděných příkazech můžete získat pomocí 
- 
-  man prikaz 
- 
-===== ===== 
-[[fc5prirucka|Hlavní stránka]] 
  • Poslední úprava: 2022/11/14 12:25
  • autor: 127.0.0.1