diff options
Diffstat (limited to 'sk-sk/bash.html.markdown')
-rw-r--r-- | sk-sk/bash.html.markdown | 286 |
1 files changed, 0 insertions, 286 deletions
diff --git a/sk-sk/bash.html.markdown b/sk-sk/bash.html.markdown deleted file mode 100644 index e9d1490c..00000000 --- a/sk-sk/bash.html.markdown +++ /dev/null @@ -1,286 +0,0 @@ ---- -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 -``` |