Cílem je vyzkoušet si prakticky, jak fungují symbolické a pevné linky (symlinky a hardlinky).
Fyzická Vs Logická cesta
Vypište podrobnosti o adresáři /bin
.
~ls -ld /bin
~stat /bin
Přejděte do adresáře /bin
.
~cd /bin
Zjistěte podrobnosti o aktuálním adresáři a adresáři /bin
.
/binls -ld . /bin
/binstat . /bin
Vypište absolutní cestu do aktuálního adresáře.
/binpwd
/binprintf '%s\n' "$PWD"
/binprintf '%s\n' ~+
Vypište číslo i-node nadřazeného (rodičovského) adresáře.
/binls -id ..
/binstat -c %i ..
Přejděte do nadřazeného adresáře a zjistěte jeho číslo i-node.
/bincd ..
/ls -id .
/stat -c %i .
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"
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 .
Práce s linky
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}
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
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
Do logu today
uložte text: Last modification - HH:MM:SS
, kde HH:MM:SS je aktuální čas.
~date '+Last modification - %T' > today
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
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
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
Přejmenujte adresář logs
na log
a vypište obsah souboru today
.
~mv logs log
~more today
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
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
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"
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"
Smažte celý adresář logs
včetně jeho obsahu i link today
.
~\rm -r logs today