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 #
- Seznámení s laboratoří a přihlášení se na počítače
- 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
- vytvoření souboru příkazem
- Adresářová struktura
- vytvoření adresáře
mkdir - vytvoření adresáře
psya podadresářecv01 - příkaz
cd - příkaz
pwd
- vytvoření adresáře
- Práva k adresářům
- vytvořte v adresáři
cv01soubortest.txtpříkazemtouch - příkazem
chmod 550 cv01nastavte práva k adresářicv01 - zkuste soubor
test.txtzkopírovat do stejného adresáře, pak do adresářepsy - zkuste soubor
test.txtpřejmenovat nanovy.txtve stejném adresáři
- vytvořte v adresáři
- Právo x pro adresáře
- změňte pracovní adresář na
cv01 - nastavte práva k adresáři
psynar--r--r-- - zkuste příkaz
cd .. - vysvětlete co se stalo a proč?
- změňte pracovní adresář na
- Práva k souborům
- vytvořte soubor
nemen.txta nastavte práva, aby nešel obsah změnit - vytvořte soubor
nic.txta 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
- vytvořte soubor
- Podmínky
if- příkaz
[prakticky to samé jako příkaztest - návratová hodnota programu -
exit0 - True, ostatní - False - otestujte, zda je název souborem, adresářem, symbolickým odkazem
- příkaz
- 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
- 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?
- Ukázka soubory s mezerou
- vytvořte soubor
text mezera.txta soubormezera.txt - do proměnné
Adejte název souborutext mezera.txt, napřA='text mezera.txt' - příkaz
head -n 2 souborvypíš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?
- vytvořte soubor
- for cyklus
- vytvořte v podadresář
zaloha - napište for cyklus, který zkopíruje všechny soubory
*.txtdo adresářezaloha - napište for cyklus, který zkopíruje všechny soubory
*.txtdo adresáře zaloha s koncovkou.bak - napište for cyklus, který zkopíruje všechny soubory
*.txtdo adresáře zaloha s koncovkou.bakpouze tehdy, když soubor v adresářizalohaneexistuje, nebo je starší než soubor.txt- pokud soubor kopírujete, vypište na výstup kopiruji soubor a jeho název
- vytvořte v podadresář
- 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
*.txta k nim pořadové číslo
- jednoduché přiřazení hodnoty
- 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
- vstupní parametry jsou proměnné označené čísly
- 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
- co udělá
- Mezery oddělují parametry
- skript
show_arguments.sh
- skript
#!/usr/bin/env bash
echo "NUMBER OF ARGUMENTS: $#"
I=0
while [ $# -gt 0 ]; do
let I++
echo "ARGUMENT $I: '$1'"
shift
done
- Parametry
- vysvětlete co tento skript dělá
- zkuste ho spustit s parametry
Hello worlda'Hello world' - chování skriptu vysvětlte