1. BASH — Úvod

BASH — Úvod #

Osnova cvičení #

  • seznámení s laboratoří
  • vytvoření adresářů
  • práce se soubory
  • proměnné v BASH
  • cykly v BASH
  • vstupní argumenty

Úkoly #

  1. Seznámení s laboratoří a přihlášení se na počítače
  2. Spuštění terminálu a zadání prvních příkazů v terminálu
    • vytvoření souboru příkazem touch
    • vytvoření souboru přesměrováním do souboru cat >soubor.txt, ukončení Ctrl+D
    • vytvoření souboru kopírováním
  3. Adresářová struktura
    • vytvoření adresáře mkdir
    • vytvoření adresáře psy a podadresáře cv01
    • příkaz cd
    • příkaz pwd
  4. Práva k adresářům
    • vytvořte v adresáři cv01 soubor test.txt příkazem touch
    • příkazem chmod 550 cv01 nastavte práva k adresáři cv01
    • zkuste soubor test.txt zkopírovat do stejného adresáře, pak do adresáře psy
    • zkuste soubor test.txt přejmenovat na novy.txt ve stejném adresáři
  5. Právo x pro adresáře
    • změňte pracovní adresář na cv01
    • nastavte práva k adresáři psy na r--r--r--
    • zkuste příkaz cd ..
    • vysvětlete co se stalo a proč?
  6. Práva k souborům
    • vytvořte soubor nemen.txt a nastavte práva, aby nešel obsah změnit
    • vytvořte soubor nic.txt a změňte práva tak, aby nešel zobrazit obsah souboru
    • otestujte v editoru joe, vim, mc, nebo i v editoru gedit, visual studio code, nebo codium
  7. Podmínky if
    • příkaz [ prakticky to samé jako příkaz test
    • návratová hodnota programu - exit 0 - True, ostatní - False
    • otestujte, zda je název souborem, adresářem, symbolickým odkazem
  8. Vytvoření skriptu
    • první řádka programu hash bang #!
    • nejuniverzálnější řešení #!/usr/bin/env bash
    • jednodušší, ale nemusí fungovat na všech systémech #!/bin/bash
  9. Nastavení práv x pro soubor
    • u vytvořeného skriptu se správnou první řádkou nastavte práva x
    • jak nyní můžete tento skript spustit?
  10. Ukázka soubory s mezerou
    • vytvořte soubor text mezera.txt a soubor mezera.txt
    • do proměnné A dejte název souboru text mezera.txt, např A='text mezera.txt'
    • příkaz head -n 2 soubor vypíše první dva řádky souboru
    • Jak napíšete příkaz, aby vypsal první dva řádky souboru, jehož jméno je uložené v proměnné A?
  11. for cyklus
    • vytvořte v podadresář zaloha
    • napište for cyklus, který zkopíruje všechny soubory *.txt do adresáře zaloha
    • napište for cyklus, který zkopíruje všechny soubory *.txt do adresáře zaloha s koncovkou .bak
    • napište for cyklus, který zkopíruje všechny soubory *.txt do adresáře zaloha s koncovkou .bak pouze tehdy, když soubor v adresáři zaloha neexistuje, nebo je starší než soubor .txt
      • pokud soubor kopírujete, vypište na výstup kopiruji soubor a jeho název
  12. Proměnné
    • jednoduché přiřazení hodnoty $A=ahoj
    • výstup programu uložený do proměnné $A=`pwd`
    • numerické hodnoty, počítání
      • let A++
      • A=$(( A+1 ))
      • A=`expr $A + 1`
    • napište skript, který vypíše všechny soubory *.txt a k nim pořadové číslo
  13. Vstupní parametry skriptu
    • vstupní parametry jsou proměnné označené čísly $1, .. , $9
    • speciální parametr $0 - název spouštěného programu
    • co se stane, pokud do skriptu dáte řádek cat $0
    • příkaz shift posun vstupních argumentů kromě $0, používá se například, když je argumentů víc než 9
  14. Mezery - pozor na použití mezer
    • co udělá A = ahoj ?
    • co udělá A=`expr $A+1`
    • co udělá A= pwd
    • co udělá A= 10
  15. Mezery oddělují parametry
    • skript show_arguments.sh
#!/usr/bin/env bash

echo "NUMBER OF ARGUMENTS: $#"
I=0
while [ $# -gt 0 ]; do
  let I++
  echo "ARGUMENT $I: '$1'"
  shift
done
  1. Parametry
    • vysvětlete co tento skript dělá
    • zkuste ho spustit s parametry Hello world a 'Hello world'
    • chování skriptu vysvětlte

Materiály #