summaryrefslogtreecommitdiffhomepage
path: root/sk-sk/bash-sk.html.markdown
diff options
context:
space:
mode:
authorDmitrii Kuznetsov <torgeek@gmail.com>2021-02-22 18:42:33 +0300
committerDmitrii Kuznetsov <torgeek@gmail.com>2021-02-22 18:42:33 +0300
commite09fefaa3e78c645c720c86391e3f96d257be8a9 (patch)
tree0ff8b235e3e707125e2b11d5268ad085832355cb /sk-sk/bash-sk.html.markdown
parentf4c740839d78f797e9cbcfa1eb0483ac0ea45501 (diff)
parentbc8bd2646f068cfb402850f7c0f9b1dbfe81e5a0 (diff)
Merge branch 'master' of https://github.com/torgeek/learnxinyminutes-docs
Diffstat (limited to 'sk-sk/bash-sk.html.markdown')
-rw-r--r--sk-sk/bash-sk.html.markdown286
1 files changed, 286 insertions, 0 deletions
diff --git a/sk-sk/bash-sk.html.markdown b/sk-sk/bash-sk.html.markdown
new file mode 100644
index 00000000..e9d1490c
--- /dev/null
+++ b/sk-sk/bash-sk.html.markdown
@@ -0,0 +1,286 @@
+---
+category: tool
+tool: bash
+contributors:
+ - ["Max Yankov", "https://github.com/golergka"]
+ - ["Darren Lin", "https://github.com/CogBear"]
+ - ["Alexandre Medeiros", "http://alemedeiros.sdf.org"]
+ - ["Denis Arh", "https://github.com/darh"]
+ - ["akirahirose", "https://twitter.com/akirahirose"]
+ - ["Anton Strömkvist", "http://lutic.org/"]
+ - ["Rahil Momin", "https://github.com/iamrahil"]
+ - ["Gregrory Kielian", "https://github.com/gskielian"]
+ - ["Etan Reisner", "https://github.com/deryni"]
+translators:
+ - ["Juraj Kostolanský", "http://www.kostolansky.sk"]
+lang: sk-sk
+filename: LearnBash-sk.sh
+---
+
+Bash je pomenovanie pre unix shell (príkazový interpreter), ktorý bol
+tiež distribuovaný ako shell pre GNU operačné systémy a ako predvolený
+shell pre Linux a Mac OS X.
+Takmer všetky príklady uvedené nižšie môžu byť súčasťou shell skriptu alebo
+vykonané priamo v shelli.
+
+[Viac informácií tu.](http://www.gnu.org/software/bash/manual/bashref.html)
+
+```bash
+#!/bin/bash
+# Prvý riadok skriptu je tzv. shebang, ktorý systému povie ako skript vykonať:
+# http://en.wikipedia.org/wiki/Shebang_(Unix)
+# Komentáre začínajú znakom #. Shebang je tiež komentár.
+
+# Jednoduchý príklad:
+echo Ahoj svet!
+
+# Každý príkaz začína na novom riadku alebo za bodkočiarkou:
+echo 'Toto je prvý riadok'; echo 'Toto je druhý riadok'
+
+# Deklarácia premenných vyzerá takto:
+Premenna="Nejaky retazec"
+
+# Ale nie takto:
+Premenna = "Nejaky retazec"
+# Bash si bude myslieť, že Premenna je príkaz, ktorý musí vykonať.
+# Výsledkom bude chyba, pretože taký príkaz nenájde.
+
+# Alebo takto:
+Premenna= 'Nejaky retazec'
+# Bash zistí, že 'Nejaky retazec' je príkaz, ktorý musí vykonať.
+# Výsledkom je opäť chyba, lebo taký príkaz neexistuje.
+
+# Používanie premenných:
+echo $Premenna
+echo "$Premenna"
+echo '$Premenna'
+# Keď je premenná použitá samostatne - priradenie, exportovanie a pod. - jej
+# meno sa píše bez znaku $. Keď sa používa hodnota premennej, pred názov sa
+# dáva znak $. Pozor však pri použití ' (apostrof), ktorý nenahradí premennú
+# hodnotou!
+
+# Nahradenie reťazca v premennej
+echo ${Premenna/Nieco/A}
+# Toto nahradí prvý výskyt reťazca "Nieco" za "A"
+
+# Podreťazec z premennej
+Dlzka=7
+echo ${Premenna:0:Dlzka}
+# Toto vráti iba prvých 7 znakov z hodnoty premennej
+
+# Predvolená hodnota premennej
+echo ${Foo:-"PredvolenaHodnotaAkFooChybaAleboJePrazdna"}
+# Toto funguje pre null (Foo=) a prázdny reťazec (Foo="");
+# nula (Foo=0) vráti 0. Všimni si, že toto iba vráti predvolenú hodnotu,
+# ale nezmení hodnotu premennej.
+
+# Štandardné premenné:
+# Existujú aj užitočné "vstavané" premenné, ako
+echo "Hodnota vrátená posledným programom: $?"
+echo "PID skriptu: $$"
+echo "Počet argumentov: $#"
+echo "Argumeny skriptu: $@"
+echo "Argumeny skriptu oddelené do rôznych premenných: $1 $2..."
+
+# Čítanie hodnoty zo vstupu:
+echo "Ako sa voláš?"
+read Meno # Premenná nemusí byť deklarovaná skôr
+echo Ahoj, $Meno!
+
+# Klasická if štruktúra:
+# použi 'man test' Pre viac informácií o podmienkach
+if [ $Meno -ne $USER ]
+then
+ echo "Meno nie je tvoje používateľské meno"
+else
+ echo "Meno je tvoje používateľské meno"
+fi
+
+# Existuje aj podmienené vykonanie
+echo "Vykonané vždy" || echo "Vykonané iba ak prvý príkaz zlyhá"
+echo "Vykonané vždy" && echo "Vykonané iba ak prvý príkaz uspeje"
+
+# Pre použitie && a || s if-podmienkou je potrebné použiť zátvorky:
+if [ $Meno == "Steve" ] && [ $Vek -eq 15 ]
+then
+ echo "Toto sa spustí ak $Meno je Steve a $Vek je 15."
+fi
+
+if [ $Meno == "Daniya" ] || [ $Meno == "Zach" ]
+then
+ echo "Toto sa spustí ak $Meno je Daniya alebo Zach."
+fi
+
+# Pre výrazy sa používa nasledovný formát:
+echo $(( 10 + 5 ))
+
+# Na rozdiel od programovacích jazykov shell pracuje v kontexte aktuálneho
+# adresára. Môžeš si prehliadať súbory a adresáre v aktuálnom adresári pomocou
+# príkazu ls:
+ls
+
+# Tieto príkazy majú aj argumenty pre úpravu ich správania:
+ls -l # Vypíše zoznam súborov a priečinkov, každý na samostatnom riadku
+
+# Výsledok predchádzajúceho príkazu môže byť využitý priamo ako vstup pre
+# ďalší príkaz.
+# Príkaz grep filtruje vstupvyužitím poskytnutého vzoru. Takto môžeme vypísať
+# iba .txt súbory:
+ls -l | grep "\.txt"
+
+# Vstup a výstup príkazu (stdin, stdout, stderr) môžu byť presmerované.
+# Toto číta stdin až po ^EOF$ a prepíše hello.py riadkami medzi "EOF":
+cat > hello.py << EOF
+#!/usr/bin/env python
+from __future__ import print_function
+import sys
+print("#stdout", file=sys.stdout)
+print("#stderr", file=sys.stderr)
+for line in sys.stdin:
+ print(line, file=sys.stdout)
+EOF
+
+# Spustí hello.py s rôznymi presmerovaniami pre stdin, stdout a stderr:
+python hello.py < "vstup.in"
+python hello.py > "vystup.out"
+python hello.py 2> "chyby.err"
+python hello.py > "vystup-a-chyby.log" 2>&1
+python hello.py > /dev/null 2>&1
+# Chybový výstup prepíše uvedený súbor, ak už existuje.
+# Ak chceš výstup pridať za existujúci obsah, použi ">>":
+python hello.py >> "vystup.out" 2>> "chyby.err"
+
+# Prepíše vystup.out, pripojí k chyby.err a spočíta riadky:
+info bash 'Basic Shell Features' 'Redirections' > vystup.out 2>> chyby.err
+wc -l vystup.out chyby.err
+
+# Spustí príkaz a vypíše deskriptor súboru (napr. /dev/fd/123)
+# pozri: man fd
+echo <(echo "#ahojsvet")
+
+# Prepíše vystup.out s "#ahojsvet":
+cat > vystup.out <(echo "#ahojsvet")
+echo "#ahojsvet" > vystup.out
+echo "#ahojsvet" | cat > vystup.out
+echo "#ahojsvet" | tee vystup.out >/dev/null
+
+# Potichu odstráni dočasné súbory (pridaj '-i' pre interaktivitu)
+rm -v vystup.out chyby.err vystup-a-chyby.log
+
+# Príkazy môžu byť nahradené v iných príkazoch použitím $( ):
+# Nasledujúci príkaz vypíše počet súborov a adresárov v aktuálnom adresári
+echo "Je tu $(ls | wc -l) súborov a priečinkov."
+
+# To isté sa dá spraviť pomocou spätného apostrofu ``, tie však nemôžu byť
+# vhniezdené - preferovaný spôsob je preto $( ).
+echo "Je tu `ls | wc -l` súborov a priečinkov."
+
+# Bash používa case, ktorý funguje podobne ako switch v Jave a C++:
+case "$Premenna" in
+ #Zoznam vzorov pre podmienky
+ 0) echo "Je to nula.";;
+ 1) echo "Je to jednotka.";;
+ *) echo "Nie je to null.";;
+esac
+
+# for-cyklus iteruje cez všetky argumenty:
+# Obsah premennej $Premenna sa vypíše trikrát.
+for Premenna in {1..3}
+do
+ echo "$Premenna"
+done
+
+# Alebo "tradičným" spôsobom:
+for ((a=1; a <= 3; a++))
+do
+ echo $a
+done
+
+# Môžu sa použiť aj na súbory..
+# Toto spustí príkaz 'cat' na subor1 a subor2
+for Premenna in subor1 subor2
+do
+ cat "$Premenna"
+done
+
+# ..alebo na výstup príkazu.
+# Toto použije príkaz cat na výstup z ls.
+for Vystup in $(ls)
+do
+ cat "$Vystup"
+done
+
+# while-cykklus:
+while [ true ]
+do
+ echo "telo cyklu..."
+ break
+done
+
+# Môžeš tiež definovať funkice
+# Definícia:
+function foo ()
+{
+ echo "Argumenty fungujú rovnako ako pri skriptoch: $@"
+ echo "A: $1 $2..."
+ echo "Toto je funkcia"
+ return 0
+}
+
+# alebo jednoducho
+bar ()
+{
+ echo "Iný spôsob definície funkcií"
+ return 0
+}
+
+# Volanie funkcie
+foo "Moje meno je" $Meno
+
+# Existuje veľa užitočných príkazov, ktoré sa oplatí naučiť:
+# vypíše posledných 10 riadkov zo subor.txt
+tail -n 10 subor.txt
+# vypíše prvých 10 riadkov zo subor.txt
+head -n 10 subor.txt
+# zotriedi riadky zo subor.txt
+sort subor.txt
+# vypíše alebo vynechá opakované riadky, použitím -d ich vypíše
+uniq -d subor.txt
+# vypíše iba prvý stĺpecpred znakom ','
+cut -d ',' -f 1 subor.txt
+# nahradí každý výskyt 'oukej' za 'super' v subor.txt (možnosť použiť regex)
+sed -i 's/oukej/super/g' subor.txt
+# vypíše všetky riadky zo subor.txt ktoré vyhovujú regexu
+# ukážka vypíše riadky ktoré začínajú s "foo" a končia s "bar"
+grep "^foo.*bar$" subor.txt
+# pre výpis počtu riadkov vyhovujúcich regexu slúži "-c"
+grep -c "^foo.*bar$" subor.txt
+# pre vyhľadávanie reťazca bez regexu slúži fgrep (alebo grep -F)
+fgrep "^foo.*bar$" subor.txt
+
+
+# Prečítaj si dokumentáciu k Bash shellu použitím príkazu 'help':
+help
+help help
+help for
+help return
+help source
+help .
+
+# Prečítaj si Bash manpage dokumentáciu príkazom 'man'
+apropos bash
+man 1 bash
+man bash
+
+# Prečítaj si info dokumentáciu pomocou 'info' (? pre help)
+apropos info | grep '^info.*('
+man info
+info info
+info 5 info
+
+# Prečítaj si bash info dokumentáciu:
+info bash
+info bash 'Bash Features'
+info bash 6
+info --apropos bash
+```