Operační systém UNIX
Soubory a adresářová struktura
Roman DanelVŠB TU Ostrava
Institut ekonomiky a systémů řízení
Literatura
• Petrlík, L.: Jemný úvod do systému UNIX. Kopp• Shah, S. – Soyinka, W.: Administrace systému
Linux. Grada 2007
Obsah
1. Adresářová struktura2. Soubory 3. Příkaz ls4. Adresáře v Unixu5. Příkazy pro manipulaci se soubory
/ - root, kořenObyčejný soubor – posloupnost bytůAdresář – vazba mezi jménem souboru a
souborem.Adresář obsahuje minimálně dva speciální
soubory:– adresář samotný– rodičovský adresář
Určení souboru
• Absolutně od kořene• Relativně k pracovnímu adresáři
Druhy souborů
• Obyčejný• Adresář• Speciální
Minimální adresářová struktura
bin adresář s příkazy systémudev speciální soubory zařízení (device)etc systémové programy a datatmpusr další adresáře systému
/usr/bin/usr/include hlavičky pro progr.jazyk C/usr/lib/usr/local zde je programové vybavení
Další adresáře
• Home domovské adresáře uživatelů• Lib sdílené knihovny• Mnt rezervovaný adresář pro připojení
svazků (mount)• Var soubory, které za běhu systému
mění svou velikost
Výpis obsahu adresáře• Příkaz ls obdoba „dir“ z MS DOS• Ls –l detailní výpis• Ls –a výpis včetně skrytých souborů
Příklad: -rw-r—r— soubor.txt group 37
První znak – typ souboru:d adresář- obyčejný souborl symbolický odkaz (link, obdoba „Zástupce“)s socketyp roury (pipe)b,c blokový/znakový speciální soubor
Metaznaky
Metaznaky - *, ?, ! (negace), - (rozsah od do)
\ - shell nepovažuje následující znak za speciální
Příklad: ls -l /bin/l*
Cvičení
Jaký je rozdíl mezi následujícími příkazy?
# ls /etc # ls /etc/* # ls /etc/\*
Výpis souborů - ls
Dalších 9 znaků – přístupová práva pro tři skupiny uživatelů:– Vlastník souborů– Skupina uživatelů– Ostatní
V každé trojici:– r jen pro čtení– w lze zapisovat– x soubor je spustitelný– - přístupové právo je odepřeno
Soubory
Soubory dle typu:– Spustitelný soubor– Binární– Soubor s příkazy shellu
• Každý binární soubor má hlavičku, podle kterého ho systém rozpozná.
• UNIX nepoužívá přípony• Příkaz file – přečte prvních 512 B a uhodne typ
souboru
Adresáře - práva
r lze vypsat příkazem ls (musí být nastaven také „x“)
w soubory v adresáři mohou být vytvářeny nebo rušeny
x adresář může být prohledáván a lze nastavit jako pracovní
Změna přístupových práv
• Příkaz: chmod parametry soubor• třídy uživatelů: u(user), g(group), o(other), a(all)• třídy přístupových práv: r, w, x
+ přidej - odeber Příklad:
Chmod a+r soubor
Změna vlastníka souboru
• Příkaz: chown– chown uživatel soubor[y]uživatel soubor[y] – Může provést pouze vlastník souboru nebo root
Poznámka:Příkaz: groups – výpis, které skupiny jsou uživateli přiřazeny
Speciální soubory
• Odpovídají fyzickým zařízením – disky, mechaniky, terminály, tiskárny
• Umístěny v adresáři /dev• Dvou typů: blokové, znakové
/dev/console systémová konzole/dev/tty aktuální (právě
používaný) terminál
Nápověda
• Příkaz: man• ukončení: q• whereis příkaz
Příkaz echo
• Příkazem echo se vypíše text nebo proměnná na standardní výstup
Jaká je funkce následujících příkazů?
# echo $HOME # echo "$HOME" # echo '$HOME' # echo "\$HOME"
Pohyb v adresářové struktuře
Ls výpis obsahu (=“dir“)Pwd zjištění, kde jsemCd [cesta] změna pracovního
adresáře
Práce s adresáři
Mkdir vytvoření adresářeRmdir zrušení prázdného adresáře
Práce se soubory
• cat [-n] spojování a výpis souborů
• split soubor rozdělení souboru• cp [zdroj] [cíl] kopírování souboru• mv [zdroj] [cíl] přesun souboru• rm [soubor] výmaz souboru• ln originál_file new_file vytvoření linku• find hledání souboru• scp bezpečné kopírování
souborů mezi adresáři.
Práce se soubory
• head file – vypíše prvních 10 řádků ze souboru• more file• tail file – vypíše posledních 10 řádků souboru– tail -20 file – posledních 20 řádků
Split
• split [-počet řádků] [soubor] název • Rozdělí soubor na několik souborů (název)
podle zadaného počtu řádků (implicitně 1000)
Přesměrování
• příkaz >soubor• příkaz <soubor• příkaz >>soubor
Pipe (roura): příkaz | příkaz | ...Tj. výstup z jednoho příkazu je vstupem pro druhý
Filtry
• tee – kopíruje standardní vstup na výstup a současně i do souboru
• sort – setřídění standardního vstupu (souboru)• uniq – vyhází duplicitní řádky• wc - počet řádků/slov/sloupců– wc [-lwc] [soubor]
• tr – nahrazuje znaky v řetězci
Filtr uniq
• uniq [parametry] [soubor] • Parametry:– číslo přeskočí se zadaný počet sloupců od začátku, – -u budou se vypisovat pouze řádky, které nejsou
duplicitní, – -d budou se vypisovat pouze řádky, které jsou
duplicitní, – -c na začátku každého řádku se vypíše počet
výskytů.
Filtr tr
• tr [-cds] stare-znaky nove-znaky – d - znaky specifikované v prvním řetězci se zruší, – c - první řetězec označuje znaky, které se nemají
nahrazovat, – s - pokud je více stejných nových znaků za sebou,
vypíše se pouze jeden,
Otázky
• Kolik je založeno uživatelů na počítači?(= kolik je řádků v souboru /etc/passwd)
Grep
• grep [přepínače] řetězec soubor • vyhledání řetězců v souborech
Přepínače:-c vypíše počet řádků, ve kterých byl nalezen vzor, -i ignoruje rozdíly mezi malými a velkými písmeny, -l zobrazuje pouze jména souborů, ve kterých byl nalezen vzor, -n zobrazí čísla řádků obsahujících vzor, -s je potlačen standardní výstup, grep vrací pouze návratovou
hodnotu (používá se při psaní příkazových procedur), -v vypíše řádky neobsahující vzor
Grep
Při hledání řetězce lze využít regulérní výrazy:^ začátek řádku, $ konec řádku, . libovolný znak, * libovolný počet opakování předchozího znaku, [] právě jeden znak z množiny znaků uvedených v těchto závorkách,
při specifikaci lze použít následující dva speciální znaky: - používá se pro označení intervalu znaků z množiny ASCII (načtení intervalu znaků z množiny ASCII (např. a-z, 0-9), ^ negace výčtu znaků
\ potlačení speciálního významu následujícího znaku
Příklady regulérních výrazů
^p řádky začínající písmenem p ^$ prázdné řádky ^.$ řádky obsahující právě jeden znak ^[a-z]*$ řádky obsahující pouze malá
písmena\.[0-9] výraz označuje tečku následovanou
číslicí
Porovnání souborů
• cmp -porovnání dva soubory po bytech– cmp [-s] soubor1 soubor2
• diff – porovnává změny– diff [-b] soubor1 soubor2
• comm – které řádky ve dvou souborech jsou stejné– comm [-123] soubor1 soubor2 – 1. sloupec - řádek je v prvním souboru, není ve druhém souboru
2. sloupec - řádek je ve druhém souboru, není v prvním 3. sloupce - řádek je v obou souborech