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"