Nedávno jsem narazil na některé linuxové příkazy, když jsem se přihlásil na stránky zákazníka, abych načetl soubor protokolu o činnosti, a také studuje některé typy souborů v Linuxu a jednoduchý příkaz, aby věděl, jaké jsou typy souborů v operačním systému Linux.

Linux používá čtyři základní typy souborů:

  • obyčejné soubory
  • adresáře
  • symbolické odkazy
  • blokové a znakové soubory zařízení

Typ souboru určíte zadáním příkazu ls -l a přečtením prvního znaku každého řádku výstupu.
Typický výstup příkazu ls je následující:

$ ls -l
celkem 8
-rw-r-r- 1 root root 22 6.10.15:33 anormalfile
brw-rw– 2 root disk 41, 0 5. 5. 1998 blockdev
crw-rw- 2 root root 5, 0 5. 5. 1998 characterdev
drwxr-xr-x 2 root root 4096 6. 10. 15:33 subdir
lrwxrwxrwx 1 root root 11 6. října 15:35 symbolic -> anormalfile

Originální soubory začínají pomlčkou (-), adresáře začínají písmenem d, symbolické odkazy začínají znakem l, bloková zařízení jsou uvozena znakem b a znaková zařízení začínají písmenem c.

Obyčejné soubory
Obyčejný soubor může být tvořen jakýmikoli daty, včetně spustitelných programů. Většina souborů v souborovém systému Linux je tohoto typu.

Adresáře
Adresář je soubor, který obsahuje jiné soubory a adresáře a poskytuje na ně ukazatele.
Plní podobnou funkci jako složka v kartotéce, protože umožňuje organizovaně seskupovat související soubory. Zatímco však složky mohou obvykle obsahovat pouze soubory, adresáře mohou obsahovat další adresáře, často označované jako podadresáře.

Symbolické odkazy
Symbolický – neboli měkký – odkaz ukazuje na název a umístění zcela samostatného souboru. Při otevírání, kopírování, přesouvání nebo jiném odkazování na tento odkaz se tedy operace ve skutečnosti provádí s odkazovaným souborem. Tento rozdíl je pro uživatele obvykle neviditelný. Pokud je odkazovaný soubor odstraněn nebo přejmenován, odkaz se přeruší a při pokusu o jeho otevření dojde k chybě.

Můžete také vytvářet pevné odkazy. Pevný odkaz odkazuje na skutečná data v souboru přesně stejným způsobem jako běžný soubor. Kromě názvu tedy není mezi původním souborem a pevným odkazem, který odkazuje na stejná data, žádný rozdíl a oba lze považovat za běžné soubory. Pevný odkaz lze odlišit od jakéhokoli jiného běžného souboru pouze podle počtu odkazů, které každý z nich má. Počet odkazů se zobrazuje ve druhém poli výpisu ls -l. Pokud je toto číslo větší než jedna, pak víte, že k datům existují další pevné odkazy.

Soubory zařízení
Všechna fyzická zařízení, která Linux používá, jsou reprezentována soubory zařízení.
Soubory zařízení lze klasifikovat jako speciální znakové nebo speciální blokové. Znakové speciální soubory představují zařízení, která komunikují se systémem Linux po jednotlivých znacích nebo sériově. Příkladem tohoto typu zařízení jsou tiskárny a terminály. Blokově speciální soubory představují zařízení, jako jsou pevné nebo disketové jednotky a CD-ROM, která se systémem Linux komunikují pomocí bloků dat.

Všechny soubory zařízení jsou obsaženy v adresáři /dev – například soubor spojený s první disketovou jednotkou systému je /dev/fd0.

Soubory zařízení jsou mimořádně výkonné, protože umožňují uživatelům přistupovat k hardwarovým zařízením, jako jsou diskové jednotky, modemy a tiskárny, jako by to byly datové soubory. Proto lze data mezi takovými zařízeními snadno přesouvat, kopírovat a přenášet, často bez nutnosti používat speciální příkazy nebo syntaxi.

Jména souborů a názvy cest

Každému souboru je přiřazeno jméno souboru, které může mít až 256 znaků. Tento název se může skládat ze směsi velkých a malých písmen, číslic a některých interpunkčních znamének, jako je tečka, pomlčka nebo podtržítko.

Některé znaky nelze v názvech souborů použít. Nelze například použít znaky, které představují oddělovač polí – například čárku – nebo jiné speciální znaky, které mají pro shell zvláštní význam. Speciální znaky, které nelze použít, jsou

! @ # $ % ^ & * ( ) { } ‚ “ \ / | ; < > ‚

Jména cest
Mezi adresáři na příkazovém řádku se můžete pohybovat pomocí jmen cest. Chcete-li používat názvy cest, musíte rozumět adresářové struktuře souborového systému Linux. Adresářem nejvyšší úrovně v souborovém systému Linux je kořenový adresář, který je reprezentován lomítkem vpřed (/). Pod kořenovým adresářem se nacházejí adresáře nejvyšší úrovně, za nimiž následuje jedna nebo více úrovní podadresářů.

Souborová struktura souborového systému Linux
Mezi adresáři se můžete pohybovat pomocí relativních nebo absolutních názvů cest.

Relativní název cesty začíná aktuálním adresářem. Chcete-li například přejít do adresáře výdaje z domovského adresáře, zadáte

cd výdaje

Relativní názvy cest mohou začínat názvem souboru nebo adresáře nebo symbolickými odkazy na aktuální adresář (.) nebo jeho nadřazeného adresáře (..), nikdy však lomítkem vpřed.

Jednoduchý příklad souborového systému Linux
Absolutní název cesty zobrazuje úplný název cesty z kořenového adresáře (/). Například následující příkaz umožňuje přejít z aktuálního adresáře přímo do podadresáře applic v adresáři usr, který se nachází pod kořenovým adresářem:

cd /usr/applic

Inody, bloky a speciální soubory

Inody
Každému souboru je přiřazeno jedinečné číslo inodu. Inode je struktura, která definuje umístění a atributy souboru. Číslo inodu souboru můžete zjistit pomocí volby -i v příkazu ls. Informace, které inode souboru obsahuje, můžete zobrazit pomocí syntaxe příkazu stat filename. Tento výstup příkazu (stat results) zobrazuje informace týkající se inodu souboru „results“.

$ stat results
Soubor: „results“
Velikost: 8
Typ souboru: Typ souboru: „results“
Pravidelný soubor
Režim: (0644/-rw-r–r–)
Uid: ( 0/ root)
Gid: ( 0/ root)
Zařízení: 3,7 Inode: 123256 Odkazy: 1
Přístup: (00072.18:31:07)
Modifikace: Út 25.7. 16:45:00 2000 (00072.18:31:07)
Změna: (00077.22:40:47)
Změna: Čt 20. července 12:35:20 2000 (00077.22:40:47)
Změněno:

V tomto příkladu mezi zobrazené atributy patří typ souboru, velikost souboru, ID uživatele (UID) vlastníka, počet pevných odkazů, které jsou s ním spojeny, a časy vytvoření, přístupu a modifikace souboru.

V inodu není uložen název souboru. Názvy souborů jsou uloženy v adresářích s přiřazenými čísly inodů. V příkladu příkazu stat je název souboru získán ze zadaného parametru filename.

Bloky
V souborovém systému Linux jsou soubory uloženy v blocích, což jsou stejně velké segmenty diskového prostoru. Obecně se velikost bloku pohybuje od 512 bajtů do 32 KB v závislosti na instalaci systému Linux. Maximální velikost souboru závisí na velikosti bloku použitého v souborovém systému. Například maximální velikost souboru pro souborový systém ext2 je 2 GB, pokud používá bloky o velikosti 512 bajtů.

Diskové systémy načítají data po částech o velikosti bloku, takže čím větší je velikost bloku, tím efektivnější je přístup. Problém s vytvářením velkých bloků spočívá v tom, že může docházet k plýtvání místem na disku. Například pokud je velikost bloku 4 KB a většina souborů obsahuje pouze několik bajtů dat, je většina z 4096 bajtů diskového prostoru pro každý soubor promrhána. Pokud však vytvoříte malé velikosti bloků, bude přístup na disk relativně méně efektivní.

Některé příkazy, například df, vypisují diskové informace v blocích o velikosti 1 KB, i když instalace ukládá soubory v blocích o jiné velikosti. Jednoduchým způsobem, jak zkontrolovat velikost bloků systému, je použití příkazu du, který zobrazí využití disku. V tomto příkladu je zobrazeno využití disku pro všechny soubory začínající písmenem „m“.

$ du -h m*
36k mail
4.0k mail.rc
12k mailcap
12k mailcap.vga
4.0k man.config
4.0k mc.global
148k midi
40k mime-magic
104k mime-magic.dat
8.0k mime.types
4.0k minicom.users
0 motd
4.0k mtab

V tomto příkladu výstup příkazu du zobrazuje velikosti souborů na disku v přírůstcích velikosti bloku, což je v tomto případě 4,0 KB. Jednou z výjimek z tohoto pravidla je případ, kdy je zobrazena nula, což znamená, že soubor je zcela prázdný.

Speciální soubory
V systému Linux se kromě jiných typů souborů používají i speciální soubory, což jsou systémem definované soubory, které při přístupu k nim plní jedinečné funkce.

Speciální soubory a jejich funkce

Pokud se například potřebujete zbavit nechtěného výstupu z příkazu, můžete výstup přesměrovat do souboru /dev/null. V tomto příkladu jsou všechny chyby generované příkazem find přesměrovány ze stderr do /dev/null.

$ find / -n myfile 2> /dev/null

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.