Shell Prakticky
Linky

Lukáš Bařinka

Cíl

Cílem je vyzkoušet si prakticky, jak fungují symbolické a pevné linky (symlinky a hardlinky).

Obsah

  • Fyzická Vs Logická cesta
  • Práce s linky

Část 1

Fyzická Vs Logická cesta

Úloha 01

Vypište podrobnosti o adresáři /bin .


							~ls -ld /bin
							~stat /bin
						

Úloha 02

Přejděte do adresáře /bin .


							~cd /bin
						

Úloha 03

Zjistěte podrobnosti o aktuálním adresáři a adresáři /bin .


							/binls -ld . /bin
							/binstat . /bin
						

Úloha 04

Vypište absolutní cestu do aktuálního adresáře.


							/binpwd
							/binprintf '%s\n' "$PWD"
							/binprintf '%s\n' ~+
						

Úloha 05

Vypište číslo i-node nadřazeného (rodičovského) adresáře.


							/binls -id ..
							/binstat -c %i ..
						

Úloha 06

Přejděte do nadřazeného adresáře a zjistěte jeho číslo i-node.


							/bincd ..
							/ls -id .
							/stat -c %i .
						

Úloha 07

Vraťte se do předchozího adresáře a zopakujte předchozí dva příklady, ale tentokrát si uložte čísla i-node do proměnných i1 a i2. Pokud se čísla i-node liší, vypište text: i-nodes are different .


							/cd -
							/bini1=$( stat -c %i .. )
							/bincd ..
							/i2=$( stat -c %i . )
							/(( i1 != i2 )) && echo "i-nodes are different"
							/(( i1 == i2 )) || echo "i-nodes are different"
						

Úloha 08

Vstupte do adresáře /bin a z něj do fyzicky nadřazeného adresáře a vypište jeho číslo i-node.


							/cd /bin
							/bincd -P ..
							/usrls -id .
							/usrstat -c %i .
						

Část 2

Práce s linky

Úloha 09

V domovském adresáři vytvořte adresář logs . V tomto adresáři vytvořte podadresáře YYYY/MM, kde YYYY je od 2016 do 2021 a MM je od 01 do 12.


							/usrcd
							~mkdir -p logs/{2016..2021}/{01..12}
						

Úloha 10

Uvnitř těchto adresářů (MM) vytvořte soubory DD.log, kde DD je od 01 do 31.


							~touch logs/{2016..2021}/{01..12}/{01..31}.log
						

Úloha 11

V domovském adresáři vytvořte symbolický link jménem today na log soubor podle aktuálního dne.


							~ln -s "$( date '+logs/%Y/%m/%d.log' )" today
						

Úloha 12

Do logu today uložte text: Last modification - HH:MM:SS, kde HH:MM:SS je aktuální čas.


							~date '+Last modification - %T' > today
						

Úloha 13

Přesuňte soubor today do adresáře logs a zkuste přečíst obsah souboru today po přesunu.


							~mv today logs
							~more logs/today
						

Úloha 14

Odstraňte nefunkční symbolický link today a vytvořte nový, který bude obsahovat absolutní cestu k aktuálnímu logu.


							~rm logs/today
							~ln -s ~/logs/$( date +%Y/%m/%d ).log logs/today
						

Úloha 15

Vypište obsah souboru today, přesuňte jej do domovského adresáře a opět vypište jeho obsah.


							~more logs/today
							~mv logs/today .
							~more today
						

Úloha 16

Přejmenujte adresář logs na log a vypište obsah souboru today.


							~mv logs log
							~more today
						

Úloha 17

Nahraďte symbolický link today za (hard)link today a vypište obsah tohoto souboru.


							~rm today
							~ln log/$( date +%Y/%m/%d ).log today
							~more today
						

Úloha 18

Přesuňte link today do adresáře log a přejmenujte adresář log na logs. Opět vypište obsah souboru today.


							~mv today log
							~mv log logs
							~more logs/today
						

Úloha 19

Vypište číslo i-node souboru today i aktuálního logu. Uložte tato čísla do proměnných i1 a i2 a pokud jsou hodnoty stejné, vypište text: i-nodes match .


							~ls -i logs/today "logs/$( date +%Y/%m/%d ).log"
							~i1=$( stat -c %i logs/today )
							~i2=$( stat -c %i "logs/$( date +%Y/%m/%d ).log" )
							~(( i1 == i2 )) && echo "i-nodes match"
						

Úloha 20

V domovském adresáři vytvořte symbolický link today, který odkazuje na soubor logs/today. Porovnejte čísla i-node souborů today a jeho cíle stejně jako v minulém příkladu.


							~ln -s logs/today
							~ls -i today
							~ls -iL today
							~i1=$( stat -c %i today )
							~i2=$( stat -Lc %i today )
							~(( i1 == i2 )) && echo "i-nodes match"
						

Úloha 21

Smažte celý adresář logs včetně jeho obsahu i link today.


							~\rm -r logs today