Cílem je procvičení jednoduchých příkazů a základní pohyb v příkazové řádce.
Dokumentace k příkazům
Vytvořte proměnnou DELIMITER a nastavte do ní hodnotu dvojtečka (:)
~DELIMITER=:
Vypište proměnnou DELIMITER pomocí příkazu declare
~declare -p DELIMITER
Vypište hodnotu proměnné DELIMITER pomocí příkazu printf (hodnota bude ukončená novým řádkem)
~printf '%s\n' "$DELIMITER"
Vypište hodnotu proměnné USER
~declare -p USER
Použití proměnné
Příkazem getent passwd username vypište informace o svém uživatelském účtu
username nahraďte ručně za své uživatelské jméno.
~getent passwd osboxes
Použijte předchozí příkaz, ale místo ručně napsaného uživatelského jména použijte proměnnou USER
Pro vyvolání předchozího příkazu použijte ↑, pro skok o slovo doleva CTRL+←, pro smazání do konce řádku CTRL+K
~getent passwd "$USER"
Pomocí příkazu tr nahraďte všechny výskyty znaku : za nový řádek (\n) ve výstupu předchozího příkazu
První argument tr bude : a druhý argument \n.
Pozor na to, že znak \ má v shellu speciální význam a je proto potřeba použít ' '
~getent passwd "$USER" | tr : '\n'
V předchozím příkazu nahraďte : za hodnotu proměnné DELIMITER
~getent passwd "$USER" | tr "$DELIMITER" '\n'
Výstup předchozího příkazu uložte do souboru username-info, kde username nahraďte za hodnotu proměnné USER
~getent passwd "$USER" | tr "$DELIMITER" '\n' > "$USER-info"
Počítání řádků
Pomocí příkazu ls zjistěte, že se souboru skutečně vytvořil a jakou má velikost
~ls -l "$USER-info"
Pomocí příkazu wc a předcházejícího příkazu spočítejte počet položek výstupu příkazu getent
(tedy počet řádek po nahrazení : za nový řádek)
~getent passwd "$USER" | tr "$DELIMITER" '\n' | wc -l
Pomocí příkazu less přečtěte obsah vytvořeného souboru (poté příkaz ukončete)
Pro dokončení jména souboru použijte tabulátor.
~less bar<TAB>
~less barinkl-info
<q>
# <TAB> znamená stisk klávesy TAB
# <q> znamená stisk klávesy q
Spočítejte počet řádků vytvořeného souboru a porovnejte (ručně) s výsledkem z počítání položek
Použijte ↑ pro procházení historie.
~getent passwd "$USER" | tr "$DELIMITER" '\n' | wc -l; \
wc -l "$USER-info"
Vytvořte soubor man.nl do kterého uložíte počet řádků manuálu příkazu man
~man man | wc -l > man.nl
Spočítejte počet řádků z výstupu předchozího příkladu
Měl by být 0, neboť všechen text je uložen do soboru nebo směřuje na chybový výstup.
~man man | wc -l > man.nl | wc -l
Spočítejte počet položek v adresáři
~ls | wc -l
# Pozor na ls -l, je tam navíc řádek s total
ls -l | wc -l
Pomocí příkazu rm soubor smažte vytvořené soubory, místo soubor zadejte jméno souboru, jmen může být více
~rm "$USER-info" man.nl
Pomocí příkazu ls ověřte, že soubory byly smazány
~ls "$USER-info" man.nl
Opět spočítejte počet položek v adresáři
~ls | wc -l
Práce s proměnnou
Vytvořte proměnnou A s hodnotou abc a proměnnou B s hodnotou def
~A=abc
~B=def
Vytvořte proměnnou C vzniklou zřetězením hodnot proměnných A a B
~C="$A$B"
Vypište proměnné A, B a C
~declare -p A B C
Přidejte na konec proměnné C řetězec ghi
~C="$C"ghi
# případně pro pokročilejší
~C+=ghi
Zkontrolujte, že proměnná C má skutečně hodnotu abcdefghi
~declare -p C
Spočítejte délku proměnné C (počet znaků) pomocí příkazů printf a wc
~printf '%s' "$C" | wc -c
# vyzkoušejte, že při použití echo, které přidává
# znak nový řádek je výsledek špatně
~echo "$C" | wc -c
Vytvořte proměnnou text, do které uložíte několik řádků textu
Použijte přitom ' ' nebo " ".
~text='nekolik
radku
textu'
Vytvořte proměnnou kitty s následujícím obsahem:
/\__/\
(='><'=)
(")(")_/`
~kitty=' /\__/\
(='"'><'"'=)
(")(")_/`'
Vypište obsah proměnné kitty, aby vypadal jako v zadání
~printf '%s\n' "$kitty"
Ovládání příkazů a prompt
Prostudujte si manuálovou stránku příkazu man
~man man
Najděte v textu řetězec ENVIRONMENT, jaká proměnná slouží k nastavení použitého stránkovače?
/ENVIRONMENT
# K nastavení stránkovače slouží proměnná PAGER
Pokud před název příkazu napíšete přiřazení do proměnné, provede se pro zadaný příkaz, např: COLUMNS=200 ls /. Nastavte stránkovač tak aby místo zobrazení manuálové stránky zobrazil pouze počet slov a řádků v manuálové stránce a vyvolejte manuál příkazu man
~PAGER='wc -wl' man man
Spusťte příkaz sleep 1000 a po chvíli jej ukončete
~sleep 1000
<CTRL+C>
Uložte hodnotu proměnné PS1 do proměnné oldPS1
~oldPS1="$PS1"
Nastavte proměnnou PS1 tak, aby prompt zobrazoval aktuální čas, uživatelské jméno a aktuální adresář a končil znakem >
~PS1='\t \u \w> '
Nastavte proměnnou PS1 na původní hodnotu pomocí oldPS1
~PS1="$oldPS1"