Bash pro začátečníky
Tato stránka je součástí kurzu: | |
začátečníci | |
Příslušnost: všeobecná |
Informace o kurzu
editovat- Předpoklady: dobré je mít základní znalost angličtiny a zájem zkoumat věci
- Jak s tímto kurzem pracovat: Tento kurz je postaven tak, že ho sami vytváříte a zároveň se učíte od studentů, kteří jím prošli před Vámi. Jak často a kdy se budete studiu Bashe věnovat je na Vás. Nejlépe se Bash učí, pokud se na Linuxu rozhodnete dělat vše v příkazové řádce – můžete tak pronikat do jeho tajů přímo při řešení reálných problémů z praxe. Pokud by Vás nic nenapadlo, můžete využít níže řešené problémy a zkusit si je. V případně vašich problémů a otázek, je zapište níže a až najdete na Internetu (či na YouTube, konzultaci s chatGPT, apod.) řešení, tak ho sem i zapište. Je také možné že u řešených příkladů, bude potřeba je upřesnit či připojit grafiku.
- V kurzu se střídají lehké a těžké sekce, ale Vaše vnímání může být opačné. Jelikož pracujete s jazykem, který může vytvářet nevratné změny na Vašem PC doporučujeme obsah pravidelně zálohovat a pracovat s rozvahou (t.j. nespustit hned každý příkaz, který někde najdete). V momentě, kdy se Vám podaří vytvořit pár skriptů, je čas postoupit do vyšší úrovně.
- Některé úlohy jsou zaměřeny vyloženě na uživatele operačních systémů na bázi Linux (třeba i Ubuntu), takové mohou uživatelé jiných OS přeskočit.
- Pokud byste chtěli měnit strukturu kurzu, prodiskutujte to napřed na diskusní stránce (metodiku kurzu vyvinul Juandev). Stejně tak neodstraňujte žlutý box vpravo nahoře, ani neměňte a neodstraňujte tagy <noinclude></noinclude>.
- Vyšší úroveň: Bash pro středně pokročilé
- Co potřebujete: Ke studiu Bashe potřebujete počítač, Internet a nejlépe linuxový terminál (ve Windows 10+ lze nainstalovat Windows Subsystém for Linux)
- Kde hledat pomoc: chatGPT 3,5+, YouTube, Internet
- Zaměření kurzu: kurz je koncipován zejména pro operační systémy Debian/Ubuntu, nicméně dá se použít i pro jiné operační systémy na bázy Linux
Grafické a strukturní konvence
editovat- kurziva – pod nadpisy sekcí obsahuje pokyny jak s danou sekcí pracovat. Kurziva v textu je prvním stupněm zvýraznění, kurziva v příkazech vyjadřuje proměnou, kterou musíte sami navolit (např.
apt-cache search název balíčku
znamená, že místo textu název balíčku, napíšete konkrétní název balíčku). - tučně – je zvýrazněn text k vyjádření silného důrazu. Tučný text se používá i k odlišení již zvýrazněného textu kurzivou.
počítačový kód
– je název položky zvýraznění Vizuálního editoru pro zápisy příkazů Bashe a výpisy terminálusyntaxe kódu s vysvětlením
– kódy v oblasti řešení zapisujeme v obecné podobě (např.cp zdroj cíl
) a případně doplníme v poznámkách konkrétním případem, kdyby se zdálo, že to není srozumitelné. Samotný kód (cp zdroj cíl) pak zvýrazňujeme jako kód a nekódovou vysvětlující část kurzivou (zdroj cíl). Bash v tom tak poznáme tak, že je v kódovém podsvícení, ale není kurzivou.- Blok kódu – několikařádkové zápisy kódu zvýrazňujeme nástrojem Blok kódu, který zvýrazní kód změnou barvy pozadí a změní barvu jednotlivých částí kódu. Ve Vizuálním editoru jděte na Vložit-->Blok kódu a v sekci jazyk vyberte bash.
- nejnovější poznámky – jdou vždy odspoda v dané sekci
- Větší sekce této stránky jsou uloženy na substránkách a sem jsou vloženy. Eliminuje se tak trochu editační konflikt a hlavně nároky na vaše technické prostředky při editování této stránky. Další výhodou je, že některé substránky mohou být použity i v jiných edukačních modulech. Pokud na hlavní stránce kliknete editovat, můžete být přeneseni právě na substránku, kde je jeji obsah. Nic se neděje. Editujte a pak to uložte tam kde to je.
- Editační konflikt – editační konflikt vzniká pokud editor chce uložit stránku, kterou zatím někdo změnil. Je pak potřeba dle návodu manuálně posoudit a sloučit změny. (nápověda na Wikipedii)
- Odkazování na položky – položky v tabulkách je možné odkazovat písmenkovo-číselnou notací. Vždy v každé tabulce máte ve sloupci číslo takové označní, kde písmeno vychází z názvu sekce. (např. v sekci Jak něco udělat? Jsou položky číslovány J.1 až 1.∞, ale de facto je to zapsáno jen u první položky.) Pokud stisknete
CTRL+F
tak můžete takový odkaz jednoduše na stránce vyhledat. - Zadání – zapisujte tak jak byste se ptali sami sebe. Nevadí když vznikne duplicita. Duplicitní dotazy se dají spojit odkazem v poznámkách, dle výše uvedeného modelu. Otázky neodstraňujte – spíše je modifikujte, pokud si myslíte, že měly znít jinak a případně pokud zjistíte, že zadání bylo nesmyslné, tak ho ponechte a své zjištění uvedte do poznámek.
Spuštění a případná instalace terminálu
editovatOperační systémy na bázy Linuxu
editovatZde by bashovský terminál měl být již předinstalovaný. Obvykle se spouští stiskem kláves CTRL+ALT+T. V poli vyhledávání též můžete zadat slovo terminal. Jediné co se může stát, že máte jiný než bashovský terminál. V tom případě zadejte do terminálu echo $SHELL
a zmáčněte ENTER. Měl by so objevit výpis toho, jaký terminál máte. Pokud se zobrazí něco jiného než /bin/bash
, máte pravdpodobně jiný shell a Bash budete muset navirtualizovat.
Windows
editovatNa YouTube je řešení, jak nainstalovat Windows Subsystem for Linux, což je de facto virtualizace příkazového řádku Bashe.
Výuková část
editovatJak něco udělat?
editovatTerminál si otevřeme stiskem CTRL + ALT + T (nebo jinak, pokud jsme si změnili klávesovou zkratku).
Pokud nenastartuje systém, lze terminál otevřit i přes GRUB. Do GRUBu se vztoupí při startu BIOSu opakovaným tisknutím klávesy SHIFT (někdy to trvá než se člověk strefí).
Jednotlivé úkoly si můžete ozkoušet níže. Dobrou praxí je, se podívat, co jednotlivé příkazy dělají. Terminál je mocný nástroj a pokud byste jen příklazy opisovali slepě z webu, můžete si zadělat problémy. Pokud níže nenajdete řešení svěho problému, tak ho zapište a zkuste najít na webu řešení. Případně si můžete najít řešení i k úkolům, které níže to řešení nemají.
Č. | Co | Jak | Poznámky |
---|---|---|---|
J.1 | Jak vyprázdnit koš? | cd
rm -rf .local/share/Trash |
Pro odmazání adresáře Trash, je potřeba být ve výchozí složce, dostanu se tam zadáním příkazu cd |
J.2 | Jak zobrazit nápovědu k příkazu? | man příkaz , help příkaz , info příkaz , příkaz --help , příkaz -?
|
Cesty jsou různé, protože nexistuje povinnost vytvářet manuály k příkazům (například příkaz echo má manuál, příkaz cd nikoliv). man je nástroj, který zobrazuje po stránkách existující soubory manuálů příkazů (například man echo zobrazí manuál k příkazu echo ). help zobrazí seznam vestavěných příkazů (help ) a případě k nim i nápovědu (např. help cd ). Samotný help nemá manuál, takže nápověda k help se volá help help . Některé příkazy mají sami funkci nápovědy volatelnou, přes --help , nebo -h . Zde je nutno ale podotknout, že -h může mít i jiné funkce. Problém pak nastává, pokud tyto funkce nejsou popsány v nápovědě k příkazu (např. v nápovědě příkazu cd není uvedeno, že --help dá nápovědu). -- v bash znamená, že nemají být interpretovány další možnosti, protože nechceme aby nápověda zmizela a probíhaly další operace.
|
J.3 | Jak zobrazit skryté adresáře? | ls -a | Možno též dir -a |
J.5 | Jak zjistit kolik mám volného místa? | df -Th
df -h -t (systém souborů) |
|
J.6 | Jak najdu nápovědu pro cd ?
|
help cd
|
Postupujeme dle J.2. Pokud nenajdeme manuál po zadání příkazu man , zkoušíme další možnost, tedy příkaz help .
|
J.7 | Jak nainstalovat KdenLive? | sudo snap find kdenlive
(heslo)
|
|
J.8 | Jak spustit program? | echo $PATH
|
PATH voláme proto, aby jsme nepoškodili systém pro případ, kdy by program měl stejný název jako nějaký příkaz v terminálu. Pokud program v PATH není, je tedy z tohoto důvodu i rychlosti výhodného ho do PATH přidat (viz otázka 25). |
J.9 | Jak najít program? | whereis (název)
dpkg --list |
Pokud whereis nefunguje, můžeme zkusit dpkg --list a následně interní funkcí v terminálu hledat podle předpokládaného názvu. |
J.10 | Jak nainstalovat Wine? | lscpu
sudo apt install wine64 |
|
J.11 | Jak zjistit, kolik ja na disku volného místa? | df -h | Jde i df, ale df -h (human) je čitelnější. |
J.12 | Jak zobrazím strom adresářů? | Nebo si najít defaultní strukturu na webu. | |
J.13 | Jak zobrazím obsah adresáře, který se vejde na jednu stránku? | ||
J.14 | Jak nainstalovat R? | Na webu R je nápověda. | |
J.15 | Jak zjistím jakou mám verzi? | cat /etc/os-release | Vypíše informace k verzi. |
J.16 | Jak nainstalovat Gephi? | sudo snap find gephi
(heslo) sudo snap install gephi |
|
J.17 | Jak odinstalovat Gephi? | sudo snap remove gephi
sudo apt-get autoremove |
Druhý krok odinstaluje nepoužívané dependencies a je dobré ho udělat. |
J.18 | Jak najít package (balíček)? |
|
Je nutno dodat, že se nerozlišuje hledání na webu, nebo hledání v počítači, protože informace o balíčcích pro příkaz apt jsou umístěny v počítači, ale samotné balíčky jsou umístěny na webu. Proto je dobré před samotným hledáním balíčku tyto informace updatovat přes apt get update . Jak najít balíček typu snap (J20), ppa či jiný je vysvětleno jinde.
|
J.19 | Jan nainstalovat OpenRefine? | - | Jelikož nemá snap, zjistím po zadání "sudo snap find refine", musím použít jinou cestu instalace. Zdá se, že se OpenRefine neinstaluje. Pouze se stáhne, rozbalí a spustí přes terminál příkazem ./refine ve složce OR. Otevře se v záložce prohlížeče. |
J.20 | Jak najít snap? | snap find něco
|
něco nahradíme názvem hledaného softwaru |
J.21 | Jak najít nainstalované balíčky (snapy)? | sudo snap list | |
J.21 | Jak se přemísťovat ve stromu adresářů? | ls
cd (název adresáře)/cd .. |
|
J.22 | Jak přidat tiskárnu do Opery? | Stačí pouze přidat v systému. Pokud je ale Opera snapem, je potřeba udělit jejímu balíčku práva. | |
J.23 | Jak vytvořit iso flašku? | ||
J.24 | Jak zjistím jakou mám verzi Javy? | java -version | |
J.25 | Jak přidat program do PATH? |
|
|
J.26 | Jak updatovat Javu? |
|
|
J.27 | Jak odinstalovat gscan2pdf? |
|
|
J.28 | Jak nainstalovat program, který není ve snapu? | ||
J.29 | Jak nainstalovat Edge? | Ověřené řešení viz: https://www.omgubuntu.co.uk/2021/01/how-to-install-edge-on-ubuntu-linux | |
J.30 | Jak nainstalovat ET na Ubuntu 22? | ||
J.31 | Jak restartovat počítač? | ||
J.32 | Jak nainstalovat OBS Studio? | ||
J.33 | Jan nainstalovat gscan2pdf? |
|
|
J.34 | Jak nainstalovat aplikaci eObcanka? | ||
J.35 | Jak vyberu konkrétní screen, ke kterému se chci připojit? | ||
J.36 | Jak po napsání něčeho, rychle vložit již někde napsaný řetězec? | ||
J.37 | Jak vypsat soubory určitého typu na celém PC a zastavit vždy po pokrytí celé stránky? | ||
J.38 | Jak najít název souboru jinak volatelný přes man bash ?
|
whereis bash
|
Ve výpisu je to třeti řetězec. Například při zadání whereis bash , dostaneme výpis
|
J.39 | Jak zjistit informace o souboru? | stat (název souboru)
|
Záleží na tom co chceme zjistit. Například stat poskytné různé statistické informace o souboru, ale už neumí dobře určit formát souboru. Na dotaz "stat -c --format=%F (soubor)" třeba odpoví, že se jedná o běžný soubor. Pokud potřebujeme zjistit a jaký soubor se jedná, je tedy lepší použít příkaz file .
|
J.40 | Jak rozbalit archiv gzip do určitého místa? | cp (původní umístění) (nové umístění)
|
Jelikož funkce gunzip neumožňuje rozbalit archiv do určitého místa, je potřeba tuto operaci provést v krocích a nejprve daný archiv do určitého místa překopírovat příkazem cp .
|
J.41 | Jak upgradovat balíčky? |
|
|
J.42 | Jak zobrazit význam barev u příkazu ls? | ||
J.43 | Jak vypsat pouze adresáře? | ls -d */
|
-d jako directory má ve skutečnosti funkci zamezit zobrazení obsahu adresářů. Cesta za tím, pak zajišťuje výpis adresářů. Je to proto, že synopse příkazu ls je ls [OPTION]... [FILE]... |
J.44 | Jak upgradovat Python? | ||
J.45 | Jak zařídit, aby v terminálu fungovali zkratky CTRL+C a CTRL+V ?
|
V Terminálu: Edit: Keyboard Shortcuts...: poklikat na Copy a stisknout CTRL+C a to samé udělat s CTLR+V
|
|
J.46 | Jak zjistím, jestli mám nainstalovaný Python? | Začnu psát python a někde uprostřed kliknu na TAB. Tím dojde k doplnění případného řetězce.
|
Pokud dojde k doplnění řetězce, například pyt na python3 , vím, že mám minimálně Python verze 3x.
|
J.47 | Jak zjistím, jaké verze Pythonu mám nainstalované? | ls /usr/bin/python*
|
|
J.48 | Jaký je rozdíl mezi knihovnami a binárními soubory? | ||
J.49 | Jak nainstalovat nejnovější verzi Python? | ||
J.50 | Jak nainstalovat IDLE? |
|
|
J.51 | Jak zjistit, jestli něco není příkaz? | text + TAB
|
Začnu psát text a stisknu TAB, když mi to něco doplní, tak ten příkaz už existuje. Například p +TAB nic, py +TAB nic, pyt +TAB hodí python3
|
J.52 | Jak vytvořit alias? | ||
J.53 | Jak updatovat informace o ppa balíčcích? | ||
J.54 | Jak převést pdf do OCR? |
|
|
J.55 | Jak vytvořit shortcut pro příkaz? | ||
J.56 | Jak nainstalovat Avidemux? |
|
|
J.57 | Jak smazat adresář? |
|
|
J.58 | Jak nainstalovat software, který je pouze pro Windows? | ||
J.59 | Jak odinstalovat Avidemux sestavený ze zdrojového kódu? |
|
Pokud byl softare nainstalován zkombilováním binárních souborů, měl by ten, kdo nabízí nápovědu k instalaci uvádět i nápovědu k odinstalaci. V opačném případě je možné zkusit ručně odmazat některé soubory s Avidemuxem související, ale doporučuje se předtím zazálohovat systém. |
J.60 | Jak vytvořit spustitelný příkaz pro program? |
|
CHYBNÉ ŘEŠENÍ, FUNGUJE POUZE DOČASNĚ, NUTNÉ PŘEPSAT.
|
J.61 | Jak spustit MATE Calculator? | mate-calc
|
|
J.62 | Jak přenést do popředí MATE Calculator po stisku klávesnice kalkulačka? | ||
J.63 | Jak zobrazím práva k souboru? | ls -l název souboru
|
|
J.64 | Jak zobrazím informace o balíčku apt? | sudo apt-cache show název balíčku
|
|
J.65 | Jak otevřít Visual Code Studio z terminálu? | code
|
|
J.66 | Jak vytvořit někde soubor? | ||
J.67 | Jak updatovat RStudio? |
|
|
J.68 | Jak zadat zkratky CTRL+C a CTRL+V ve všech Bash shellech (např. i RStudio)? | ||
J.69 | Jak restartovat program? | ||
J.70 | Jak downgradovat program? | ||
J.71 | Jak vytvořit prázdný soubor? | touch název soboru
|
|
J.72 | Jak spočítat počet slov v textu? | ||
J.73 | Kde najdu soubory s rozložením klávesnic? | Obvykle v /usr/share/X11/xkb/symbols .
|
|
J.74 | Jak otevřít bashrc? | název textového editoru ~/.bashrc
|
Takže například micro ~/.bashrc , kde micro je název textového editoru ve kterém se bashrc otevře.
|
J.75 | Jak zjistím, které rozložení právě používám? | textový prohlížeč /etc/default/keyboard
|
Tedy například micro /etc/default/keyboard .
|
J.76 | Jak vyprázdnit paměť při kopírování? | ||
J.77 | Jak nainstalovat uživatelské rozvržení ze souboru v xkb? | ||
J.78 | Jak zkopírovat soubor z jednoho místa do druhého? | cp cesta ke zdrojovému souboru cesta k cílovému souboru
|
V praxi to může vypadat následovně: sudo cp diskD/Studium/Programování/cz-qwertz-prog-nnumbers-layout /usr/share/X11/xkb/symbols/ . Tedy soubor cz-qwertz-prog-nnumbers-layout kopíruji z adresáře Programování do adresáře symbols. Sudo tam dávám proto, že do složky usr může kopírovat pouze admin.
|
J.79 | Jak zobrazím obsah či inofrmace o knihovně libnotify ?
|
locate libnotify
|
Vyjedou mi všechny adresáře a soubory obsahující řetězec libnotify . Mohu se tak i podívat co je v adresářích libnotify* .
|
J.80 | Jak zjistím svůj default editor? | sudo update-alternatives --config editor
|
Default pro všechny uživatele má nejvyšší prioritu, pro konkrétnního uživatele je označen hvězdičkou. Zápis může vypadat následovně: Selection Path Priority Status
------------------------------------------------------------
0 /usr/bin/micro 100 auto mode
* 1 /bin/ed -100 manual mode
2 /usr/bin/code 0 manual mode
3 /usr/bin/micro 100 manual mode
4 /usr/bin/vim.tiny 15 manual mode
update-alternatives . První editor je globální pro všechny uživatele což se pozná i tím, že má nejvyšší prioritu. Priorita se určuje při instalaci, nebo se dá dodatečně změnit. Druhý editor má hvězdičku, tzn. že se použije jako default, všude tam, kde ho použije aktuální přihlášený editor. Nicméně některé aplikace využívající administrátorská práva, mohou použít právě editor pod číslem 0 . Záporná priority (v tomto případě editor ed -100 ) se dává těm editorům, které by se neměli stát defaultními.
|
J.81 | Jak přidat Micro do výběru select-editor ?
|
|
|
J.82 | Jak vyextrahovat data z tabulky obsahující určitý řetězec? |
|
|
J.83 | Jak odstranit z EXIFu fotky souřadnice? | ||
J.84 | Jak zmenšit rozlišení fotek? |
|
|
J.85 | Jak zobrazit rozložení klávesových zkratek v terminálu? | ||
J.86 | Jak hledat v manuálu? |
|
|
J.89 | Jak vyhledat nápovědu pro man(7)? | man 7 man
|
man man mi většinou hodí pouze sekci 1 manuálu k příkazu man . Pokud chci jinou sekci, jako například 7, musím psát man 7 man . Sedmá sekce se v manuálových stránkách označuje jako man(7).
|
J.90 | Jak si vytisknout manuálovou stránku? |
|
|
J.91 | Jak zobrazit dostupné tiskárny? | lpstat -p
|
|
J.92 | Jak vytisknout pouze část manuálové stránky? | ||
J.93 | Jak smazat soubor? | rm název souboru
|
Pokud jsem ve složce, kde je soubor umístěn, jinak se tam musím přemístit prostřednictvím cd .
|
J.94 | Jak provést více příkazů po sobě a zadat to na jednom řádku? | Ano, použitím logického operátoru && . Ten zajistí, že provedení prvního příkazu, bude zajištěno až po zdárném provedení prvního příkazu. Syntax tedy je 1. příkaz && 2. příkaz .
|
Příkladem může být skopírování souboru s jeho následným smazáním, tedy cp cesta k souboru cílový adresář souboru && rm cesta k původnímu souboru. Tedy po zadání cp "oznameni do okna.py" Tkinter/ && rm "oznameni do okna.py" příkaz cp zkopíruje soubor oznameni do okna.py do adresáře Tkinter a následně tento soubor v původním umístění smaže. Uživatel se tedy v tomto případě nacházel v adresáři, kde byl původní skript, proto nezadával cestu k souboru v případě příkazu rm , respetive cesta byl samotný název souboru.
|
J.95 | Jak smazat soubor v jiném než aktuálním adresáři? | Tak že se zadá cesta, např. rm Tkinter/vstup.py , smaže soubor vstup.py v adresáři Tkinter.
|
|
J.96 | Jak založit adresář? | mkdir název adresáře
|
|
J.97 | Jak přejmenovat soubor? | mv název souboru nový název souboru
|
Např. mv test.py "kalkulacka pokus.py" přejmenuje soubor test.py na kalulacka pokus.py.
|
J.98 | Jak nainstalovat Zotero? |
|
|
J.99 | Jak si zobrazit obsah terminálu i po jeho zavření? | ||
J.100 | Jak přidat tiskárnu? |
Terminál, manuál a Bash
editovatVysvětlení manuálové syntaxe
editovatV tomto oddíle procvičujeme pochopení manuálové syntaxe. V příkazové řádce zadejete man váš příkaz
a připište si sem syntaxi. Pak se můžete pokusit s ohledem na man man
(manuál manuálů) dovodit, jak se příkaz používá. Když si nebudete jisti, zkuste jiný zápis syntaxe, např. z man7.org, nebo si někde najděte ukázku. Cílem tohoto cvičení je k tomu přistoupit co „nejstrožeji“, tak abysme se naučili nespoléhat na jiné zdroje informací, než lokální manuály a případně objevily a mohli popsat zákonitosti či nedostatky syntaxí manuálů.
Aby bylo jasno tak do subnadpisu uvádíme pokud máme pocit, že jsme danou syntaxi pochopili (vyřešeno) či nepochopili (dořešit).
Příkaz case (dořešit)
editovatSyntaxe: case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac
Příklad:
x=3
case "$x" in
"1") echo "x se rovná 1" ;;
"2") echo "x se rovná 2" ;;
"3"|"4") echo "x se rovná 3 nebo 4" ;;
*) echo "x je větší než 4" ;;
esac
x se rovná 3 nebo 4
Úvahy:
case
...je začátek příkazu[1]esac
...konec skryptu, vypadá jakocase
obráceně!WORD
.....je slovo, které se srovnává vůči jednotlivým vzorůmPATTERN
. V tomto případě jeWORD $x
, tedy řetězec. Uvozovky zde mají zřejmě jen metainformatický charakter.[PATTERN [| PATTERN]...)
....asi odpovídá řádku 5 a konkrétně"3"|"4")
, tzn. že 3 je jeden vzor (PATTERN
) a 4 druhý. Složené závorky ([]
) a výpustka (...
) se v kódu neobjevují, tzn. že se musí jednat o nějaké metainformace. K příkazucase
není manuálová stránka a nápovědu nelze ani vyvolat přescase --help
. Funguje pouzehelp case
, kde je ale nepatrné množství informací. Vman man
se pro[-abc]
uvádí, že žádný, nebo všechny arguments (argumenty) v závorkách jsou volitelné. Dále se zde praví, že[expression] ...
znamená, že expression (výraz) se dá opakovat. Otázkou tedy je, jestliPATTERN
je argument, nebo výraz. Jediné co je z toho zcela jasné, je to, že složené závorky se v kódu skutečně nepíší a pouze nesou nějakou informaci. Řekněme, že řetězec[| PATTERN]...
lze vyjmout a tak nám zbyde jenPATTERN
. To by odpovídalo příkazům na řádcích 3, 4 a 6.[PATTERN) COMMANDS ;;]
vezměmě hypotézu, že toto je expression a odpovídá třeba řádku 3 kde závorka se nepíše,PATTERN
je1
, závorka)
se zapíše,COMMANDS
odpovídá příkazuecho
, respetiveecho "x se rovná 1"
a výraz se ukončí středníky;;
- Pak se ale můžeme zeptat, proč
in
není ve složených závorkách aPATTERN
ano? Logická odpověď je, žein
není výraz. Co ale je potomin
? Podle manuálu je in rezervované slovo za určitých případů (jako, že není v uvozovkách či stojí na třetí pozci jako u příkazucase).
[2] - |.... podle
help case
je svislík oddělovačem jednotlivých vzorů. Trochu ale nechápu, proč je až uvnitř závorky, přišlo by mi logičtější, kdyby byl zápis následující[PATTERN |[PATTERN]...) COMMANDS ;;]
. Znamená to tedy, že svislík neoděluje výrazy, ale vzory? Ovšem pokud by se nejednalo o[PATTERN]
, ale o[PATTERN]...
, pak by možná dávalo smysl, proč není svyslík před závorkou ale za ní ([|PATTERN]...
)? A hrají nějakou roli mezery, které jsou kolem značek[|
? Protože v uvedeném příkladu kolem vzorů ani svislíku mezery nejsou a když je zkusím dát do skryptu, tak to nemá vliv na výsledek. ...
(tři tečky, nebo-li výpustka (původní fonty shellů asi výpistku neměli)) je ve dvou případech v man man uvedeno jako řešení, které uvádí předchozí argument, nebo výraz.- Jinak shell přečte celý skrypt interpretuje ho asi postupně, protože když zadám
x=0
, tak výsledkem je stejněecho
z řádku 6. - ....mezera se zdá, že v uvedeném příkladu by se mohla úplně zrušit, protože každý výraz je nějakým způsobem ohraničen, ale je – kdyby nebyl. Například proč musí bý čísla uvedena v uvozovkách, ale je to asi proto, že zde nedochází k interpretaci čísel, ale řetězců, tedy jsou to textové řetězce?
Srování různých zápisů syntaxe
editovat- „
case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac“
- terminál - „
case EXPRESSION in CASE1) COMMAND-LIST;; CASE2) COMMAND-LIST;; ... CASEN) COMMAND-LIST;; esac
“[3] - „
case word in [ [(] pattern [| pattern]...) command-list ;;]... esac
“[4]
Příkaz cp (vyřešeno)
editovatSyntaxe man:
cp [OPTION]... [-T] SOURCE DEST
cp [OPTION]... SOURCE... DIRECTORY
cp [OPTION]... -t DIRECTORY SOURCE...
Příklad:
Úvahy:
cp
je zkratka příkazu, tedy copy- Podle
man man
kapitálky nic neoznačují, respetiveman man
odkazuje na to, že názvy sekcí manuálu se píší kapitálkami. Jde tedy asi o osobní invenci pisatélů manuálu příkazu copy, nebo může jít o jejich způsob zvýraznění. - V
man man
jsou pouze dva příklady s hranatou závorkou. Jednou jsou ale tučně, podruhé podtrženě. Těžko pak soudit co je co! - Dle manuálu manuálů označuje výpustka to, že daná věc před závorkou se dá opakovat. V případě
[OPTION]...
by se tedy asi dalo několikrát zopakovat, to co je před třemi tečkami. Otázka ovšem je, jak to zapsat, když neznáme pravidla pro 3. V případěSOURCE...
aDIRECTORY SOURCE...
(je otázka pro jakou část syntaxe se ve třetím případě opakovatelnost vztahuje, jestli proSOURCE
,DIRICTORY SOURCE
, nebo dokonce pro-t DIRECTORY SOURCE
) opakovatelnost zdroje či zdrojového adresáře. Dalším problémem manuálucp
je, že neobsahuje sekci Options, hned by bylo jasné, co[OPTION]
může znamenat. Man man
píše, že něco jako[-T]
znamená, že jsou argumenty volitelné. Žel bohu se opětman man
aman cp
liší v tom, že vman man
jsou argumenty na rozdíl odman cp
tučně. Z prostého vzhledu lez ale dovodit, že v případěman cp
se jedná skutečně o argumenty. Otázka, která tady vyvstává, je ale co to znamená[OPTION]... [-T]
, protože dle formátu vman man
by OPTIONS měly být také argumenty. Kdyby tomu bylo stejně i v případěman cp
, pak je tento název syntaxe zbytečně složitý. Může to tedy znamenat, že Option není argument. Tady už začíná vyvstávat moc otazníků a hypotéz, zkusme zápis z man7.org- Z vysvětlení, které poskytl chatGPT ale plyne, že výrazy
[OPTION]...
a[-T]
označují trochu něco jiného. Zatímco[OPTION]...
označuje možnosti, které se dají opakovat,[-T]
ty, které se opakovat nedají. Takto vysvětleno to dává smysl, proč jsou de facto zapsány dvě totožné věci. Další možnosti, které se nedají opakovat jsou podle chatGPT-r
,-u
a-n
. Ostatní jsou tedy opakovatelné (vizman cp
). Vman man
je sekce s těmito flagy skutečně označena jakoOptions
, tože vman cp
tomu tak není může být chyba či nedbalost. Důvod pro použití-T
v příkazu je pak zcela jasný – zdůrazňuje to, že tuto možnost nelze opakovat (nicméně jistě by se to dalo zapsat i jinak, například[option]... [option]
, případně[-a]... [-T]
(jenom připomínám, že kurziva zde značí řetězec, který má být nahrazen argumentem a tučný text řetězec, který se musí zapsat tak jak je). Nicméně, když na ten druhý příkaz koukám, tak si nejsem jistý jestli je přesný. Oba jsou v závorce, to znamená, že mohou a nemusí být použity. Když použity budou, pak si nejsem jistý, jestli fakt, že jsou tučným písmem, je tam nevnucuje explicitně.)
- Z vysvětlení, které poskytl chatGPT ale plyne, že výrazy
- Podle dovysvětlení první syntaxe AI by se pak dalo říct, že u druhé syntaxe
cp [OPTION]... SOURCE... DIRECTORY
, to znamená, že mohu za příkazcp
vložit nějakou možnost, respetive možností může být víc (nepřipouští to tedy možnosti, které nejde opakovat?), následuje jeden nebo více zdrojů (napříkladbaf1.txt
,baf2.txt
) a následně název adresáře, kam se to má kopírovat. - A konečně třetí příklad syntaxe
cp [OPTION]... -t DIRECTORY SOURCE...
by pak znamenal, že za příkazcp
mohu vložit možnost nebo možnosti, musím uvést možnost-t
a následně mi to není jasné. Jen vím, že adresář je jeden a zdrojů může být vícero.- Tak po diskusi s AI z toho plyne, že argument
-t
umožní zadat napřed cílový adresář a vše ostatní jsou kopírované soubory či adresáře. ChatGPT dále upozorňuje, že tato možnost, nemusí být u všech verzí příkazucp
a pokud tomu tak není, tak se holt musí použít standardní postup ve formátu příkaz, argumenty, kopírovaný soubor či aresář a cílové místo.
- Tak po diskusi s AI z toho plyne, že argument
Syntaxe man7.org:
cp [OPTION]... [-T] SOURCE DEST
Úvahy:
- Bohužel zde, je syntaxe velmi podobná manuálu! Nicméně
cp
tučně by mělo znamenat, že se musí zapsat, tak jak je. To je ostatně logické. - V
man man
se píše, že se má kurziva nahradit patřičným argumentem. Tady je kurzivou skoro vše, což není na škodu, protože vše za příkazem jsou de facto argumenty. - Připusťme tedy, že
man man
říká, že to co je v závorce je volitelné. Znamenalo by to tedy, že jediným nevolitelným argumentem je v tomto případěSOURCE DEST
, což asi znamená zdrojové umístění. Takový příkaz by pak mohl vypadat třebacp /home/juan/avidemux2
, ale je otázka co by takový příkaz udělal? Když si něco takového vyzkouším, tak micp
hlásí chybu:missing destination file operand after '/home/juan/test'
. Znamená to tedy, že chybí cílové umístění. Zdá se tedy, že příkazcp /home/juan/test
je chápán jako okopíruj/home/juan/test
někam a ptá se kam. Nefunguje to ani, když je aktuálním adresářemtest
a když zadám vytvořenýtest2.
Z tohoto rozboru tedy plyne, že tento zápis syntaxe, není asi správný.- ChatGPT poskytl následující příkaz c
p file.txt directory/ # Copies 'file.txt' into 'directory/file.txt'
. To znamená, že jsem synopsy pochopil špatně aSOURCE DEST
jsou dva výrazy, ne jeden. Napřed jde zdrojový sobour (adresář), pak jde ten kam se to má uložit.
- ChatGPT poskytl následující příkaz c
- A skutečně při kopírování sobourů (ne pří kopírování adresářů) to funguje. Například
cp /home/juan/test/baf.txt /home/juan/test2/
překopíruje souborbaf.txt
do adresářetest2
.
Shrnutí:
Syntax tedy znamená, že po zápisu názvu příkazu copy, tedy cp
se mohou vložit atributy z čehož některé jsou opakovatelné a jiné ne a následné se vkládají soubory a adresáře, či cesty k nim a cílové umístění. Některé verze příkazu cp
, pak umožňují prohodit zdroj a umístění díky vložení atributu -t
(cp [OPTION]... -t DIRECTORY SOURCE...
). Dále se dá říct, že manuál příkazu cp
se neřídí syntaxí uvedenou v manuálu manuálů.
Snap find (dořešit)
editovatSyntaxe man: snap [OPTIONS] find [find-OPTIONS]
Úvahy:
snap
je název příkazu[OPTIONS]
-man man
nezná něco co je kapitálkama, vman man
jsou options název sekce, ve které jsou možnosti či argumentyfind
- je vman snap
označen jako Option command,man man
žádný Option command nezná, ale mohl by to být příkaz, který jde užívat s jiným příkazem. A skutečně existuje příkazfind
, který má i svůj manuál a synopsy (find [-H] [-L] [-P] [-D debugopts] [-Olevel] [starting-point...] [expression]
).[find-OPTIONS]
- opět jako v případě bodu 2man man
nezná něco s kapitálkama, stejně jako Options jsou pro něj atributy. Jinakman snap
nemá sekci Options, pouze Option Commands. Man find má sekci Options a jsou tam atributy.Man snap
nijak nerozvádí co by to měly být ty Options.
Shrnutí:
- Z výše uvedeného tedy můžeme s jistotou říci, že lze spojit dva příkazy (v tomto případy
snap
afind
). - Nemůžeme s jistotou říct, co jsou
OPTIONS
a jak se chovaj, můžem pouze předkládat hypotézy:- H: Pro
snap
jsouOPTIONS
možnosti v sekci Option Commands - H: Pro
find
jsouOPTIONS
možnosti v sekci Options v manuálufind
(proto je to označeno jakofind-OPTIONS
) - H: Závorka se v příkladu nezapíše.
- H:
OPTIONS
se nahradí jedním, nebo vícero jinými příkazy - H: Stejně tak
find-OPTIONS
se nahradí jedním nebo víceropříkazy
- H: Pro
- Trochu matoucí je ale zápis typu
[OPTIONS] find
, když víme, žefind
by teoreticky mohl být součástí výrazuOPTIONS
. Ale na druhou stranu k přihlédnutí k tomu, že se tento zápis synopse nachází v sekci Option Commonds:find můžeme říct, že to smysl dává a prostě to značí, že předfind
může být jeden a více příkazů a žefind
sám může mít jeden a více atributů. - Co z toho ale není jasné, jestli tam vždy musí být nějaké
OPTIONS
, nebo někdy ne
notify-send (vyřešeno)
editovatSyntaxe man: notify-send [OPTIONS] {summary} [body]
Výklad dle man man:
notify-send
- první jde samotný příkaz, to je jasné a dokonce je tučně, takže se musí zapsat, tak jak je.OPTIONS
-man man
o žádných kapitálkách nemluví, takže OPTIONS bude asi čistý výmysl tvůrcůnotify-send
a zřejmě zvýraznění, protože mají v manuálu sekci Options[OPTIONS]
- argumenty v[]
by měly být volitelné. Co jsou to argumenty? --> Jsou to ty věci co jsou v sekci Options (např.-u
,-t
,-i
).{summary}
-man man
žádnou notaci o složených závorkách ({}
) nezná, takže je to zase o hypotézách, co se tím tvůrcinotify-send
snaží sdělit. Summary značí shrnutí, jaké shrnutí tím myslí, těžko říct a jakou funkci to shrnutí má také.[body]
- dleman man
nevíme co je body. Víme, ale, že hranaté závorky značí volitelnost- Shrnutí: zatím víme, že musíme napsat příkaz (
notify-send
), pak můžeme zvolit atributy (-?
,-u
,-t
), pak nevíme co dělat a pak můžeme zvolit nějaké tělo. Ovšem nevíme co to tělo je.
Dovýklad dle man notify-send
:
- Tak tady odtud není co dovyložit.
Na man7.org k tomu manuál není, takže smůlec!
ChatGPT 4:
[OPTIONS]
- 4ka souhlasí, že todle je volitelná část, kam se mohou zapisovat atributy ze sekce Options{summary}
- toto je údajně nadpis v notifikaci, a skutečně se to po otestování tak chová[body]
- je samotný text notifikace.- Shrnutí: po ozkoušení mohu potvrdit, že to tak funguje. Příkaz notify-send je povinný a neměný,
[OPTIONS]
jsou volitelné atributy ze sekce Options z manuálu knotify-send
. Prostě nahradím[OPTIONS]
nějakým atributem (např.-t 10000
).{summary}
je povinný nadpis oznámení. Prostě nahradím{summary}
nějakým řetězcem.[body]
je volitelný text oznámení. Prostě nahradím[body]
nějakým řetězcem. Příklad: notify-send -t 10000 "Test" "Todle je pouze test!"
rm (dořešit)
editovatSyntaxe man: rm [OPTION]... [FILE]...
Výklad dle man man:
- rm - nejprve jde příkaz, je označen boltem, tzn. že musí být zapsán tak jak je
- [OPTION]... [FILE]... - jsou nějaké proměné, které se vkládají podle nějakých pravidel, nevím, ale jak se to obecně jmenuje
- [OPTION]... - man man žádný zvýraznění kapitálkama nezná, pak se těžko určí co to znamená, když je to v závorce. Tak dejme hypotézu, že OPTION je jeden argument a tím že je v závorce, by pak znamenalo, že je volitelnej. Výpustka (...) tedy bude znamenat, že se to může opakovat. Celé by to mohlo znamenat, že tam může být několik argumentů, které se mohou opakovat. Proč to tedy nazapsat podle pravidel man man následovně: [-abc]...?
- [FILE]... - toto je podobný příklad jako výše, kdy se musíme domnívat. Vzhledem k tomu, že rm maže soubory, FILE bude asi název souboru. Opět není jasné, proč je to kapitálkama. To že je to v závorce znamená, že je to volitelné a že se to může opakovat?
- suma sumárum - znamenalo by to, že atributy a soubor jsou volitelné, nebo může být jeden, nebo se můžou opakovat?
unrar (dořešit)
editovatSyntaxe man: unrar command [-switch ...] archive [file ...] [@listfiles ...] [path ...] [path_to_extract/]
Výklad dle man man
a man unrar
:
unrar
- příkaz, je povinýcommand
- i dleman unrar
to vypadá, že pokud chceme využít nějaký příkaz, musíme zapsat slovocommand
[-switch ...]
- asi že, to nemusí obsahovat žádný argument, argumenty jsou volitelné a mohou se opakovat (výpustka)archive [file ...]
- z logiky věci aman man
by to mohlo znamenat, že musím zapsat slovoarchive
a následně název jednoho, nebo více souborů typu rar. Nicméně z popisu vman unrar
není zcela jasné, jestli se musí archive zapsat. Co je ale jasné, že file není pouze název raru, ale cesta k raru či rarům.[@listfiles ...]
- zase to že je to v závorce značí volitelnost a výpustka opakovatelnost. Podleman unrar
to vypadá, že listfile je plain text soubor obsahující cesty k rarům. Každá cesta musí být na separátní řádce. Do příkazu se vloží zavináč a následně jméno souboru s listem. Asi z logiky věci spíš cesta k souboru se seznamem rarů.[path ...]
- z logiky věci bych řekl, že se sem vkládá nějaká cesta k souboru, který se má rozbalit. Je to volitelné a opakovatelné. Jinak řečeno, je to jedna z možností pro archive (ostatní jsou tedy[file ...] [@listfiles ...] [path ...] [path_to_extract/]
). Otázka je jaký je rozdíl mezi[file ...]
a[path ...]
. Man unrar path nevysvětluje.[path_to_extract/]
- zde to opět vypadá na cestu k raru, respektive rarům, protože lomítko může označovat cestu do konkrétního adresáře, kde jsou rary. Nedá se to opakovat, ale je to volitelné. Dleman unrar
asi jo.
Výklad dle man7.org: manuál chybí.
ChatGPT 3.5: unrar [options] archive.rar [files...]
unrar
- příkaz, je poviný[options]
- volitelné možnosti, které příkaz nabízíarchive.rar
- jméno raru k rozbalení[files...]
- další soubory či adresáře k rozbalení, z tohodle vysvětlení by to teda asi začátečník nepochopil
Shrnutí:
- úplně nejlepší by asi bylo, kdyby manuálové stránky obsahovaly příklady, než nějaké suché manuály.
- je otázka jaké je rozdíl mezi sekcí
commands
aoptions
vman unrar
.Man man
s žádnou sekcí commands nepočítá.
Struktura manuálu a Bashe
editovatTato sekce je speciálně vypíchnutá a věnuje se speciálně manuálovým stránkám Bashe.
Manuál k příkazům voláme příkazem man něco
, dokonce i příkaz man
má svůj manuál volatelný přes man man
. Ne všechny příkazy ale manuál mají, někdy musíte zkustit příkaz --help
. Případně se dají manuálové stránky najít na webu, kde jsou i barevně podbarvené.
Č. | Otázka | Odpověď | Poznámky |
---|---|---|---|
1 | Co to znamená man ?
|
Manual | |
2 | Jak rozumět sekci synopse? | ||
3 | Jaké jsou způsoby pro jasné zvýraznění synopse? | Například nainstalovat aplikaci most. | |
4 | K čemu je příkaz intro? | Obsahuje návod pro práci v příkazové řádce. | |
5 | Proč řádka nevykresluje tučné písmo? | Asi není zapnuté. | Zapne se: Edit-Profile Preferences-General-Allow bold text. |
6 | Proč řádka nevykresluje kurzivu? | Může za to sázecí jazyk roff, který se stále používá a kurzivu neumí, takže kurziva se vykresluje jako podtržené písmo.[5] | |
7 | Jak zjistím jaký pager používá příkaz man ?
|
Poznámky z manuálu
editovatPřečtěte si manuál k Bash a níže zanehte své postřehy, otázka a myšlenky.
- chápu to dobře, že shell je operační systém?
- pokud soubory fungují jako příkazy, jak se dá spustit třeba /bin?
- token je sekvence jednoho a více znaků. Tokenem může být slovo, nebo operátor.
- metacharacter (metaznak) je znak, který odděluje slova pokud není označen uvozovkami (mezera, tabulátor, nová řádka, ‘|’, ‘&’, ‘;’, ‘(’, ‘)’, ‘<’, nebo ‘>’.
- vysvětlení slova operátor je skoro jak vysvětlení v kruhu!
- bash obsahuje stejne build in příkazy jako Bourne Shell (sh)
Gramatika Bashe
editovatCílem této sekce je společně vytvořit gramatiku Bashe (či linuxácké mluvy), to vysvětlit jednotlivé terminy jako (arguments, expressions) a popsat funkci metainformací a dále logiku skládání jednotlivých znaků při skryptování.
Slovníček pojmů
editovat- argument - argument
- expression
- operator - operátor, zajišťuje nějakou operaci
- snap - zkratka pro Snap package, balíček
- Snap - nástroj pro manipulaci se snapy, tj. balíčky
- package -
- argument
- apt update prý refrešne repozitáře - to co apt update dělá je ale, že updatuje informace o balíčcích dostupných na webu. Se samotnými balíčky, nebo online repozitáři, které jsou na webu dostupné, ale nijak nemanipuluje.
Práce s terminálem
editovatTAB
– tabulátor v terminálu doplní rozepsaný řetězec a urychlý tím práci
Otázky
editovatPři práci s terminálem mohou vyvstat i různé otázky, které se nevejdou do sekce Jak něco udělat. Nebojte se a klidně zapište své otázky níže. test
Č. | Otázka? | Odpověď | Poznámky |
---|---|---|---|
O.1 | Co je to snap? | Snap je balíček softwaru a závislostí, snap je nástroj pro manipulaci se snapy. | |
O.2 | Co je adresář "/dev/sda5" a případně sda1? | Označují části disků. /dev/sda je disk a sda 1 a 5 jsou jeho části. | |
O.3 | Co je v adresáři udev? | Ovladač jádra OS, tedy userspace /dev | |
O.4 | Co je to "mounting"? | ||
O.5 | Co je to /dev? | Označuje umístění souborů. | |
O.6 | Jaký je minimální prostor pro spuštění OS? | Asi 8 G. | |
O.7 | Kde se nachází repositories a jak se najdou? | ||
O.8 | Co je to distro a jak ho zjistím? | Distro, je distribution, tedy operační systém využívající Linux kernel. Takže například Ubuntu je distro. V příkazovém řádku stačí zadat cat /etc/*-release .
|
|
O.9 | Co je to snap? | Snap je balíček softwaru a závislostí, snap je nástroj pro manipulaci se snapy. | |
O.10 | Kdo vytváří snapy? | Vymysleli je Ubuntu vývojáři ve verzi 16.04. Asi kdokoliv, ale ne ke všemu jsou snapy. | |
O.11 | Co je to socket? | ||
O.12 | Co je to system daemon? | Program, který stále běží, aby systému zajistil služby, které potřebuje. | |
O.13 | Co je to $PATH? | Proměnná prostředí, která systému říká ve kterém adresáři hledat, když uživatel zadává příkazy v terminálu. Obsahuje soubor, kde jsou v textové podobě uloženy texty k adresářům (path - cesta k adresáři). | |
O.14 | Co je to main? | ||
O.15 | Co v ls označuje světle modrá barva? | Symbolický odkaz, měkký odkaz, přesměrování - soubor obsahující odkaz na jiný soubor či adresář (může obsahovat i síťový odkaz). | |
O.16 | Co je to /etc/alternatives/? | ||
O.17 | Jak vypsat seznam všech příkazů? | ||
O.18 | Lze si aliasem přepsat existující příkaz? | Ano, ale pokud se to neuloží do .bashrc, tak se to po restartu nezapamatuje. | |
O.19 | Co to znamená, když v terminálu nejde psát? | ||
O.20 | Co v bashi znamená -- ?
|
Pokyn jádru neinterpretovat další možnosti (vyjma pozičních parametrů (parametr, který začíná číslem (vejma nuly))). Některé příkazy to ovšem nemusí akceptovat, jako například vestavěný příkaz echo .
|
|
O.21 | Jak rozumět zápisu užití příkazů v manuálu? | ||
O.22 | Jaká je dobrá praxe při práci v terminálu? | ||
O.23 | Jaké existují metaznaky? | mezera, tabulátor, nová řádka,|, &, ;, (, ), <, > | |
O.24 | Co jsou potom v bashi tyto závorky: [] ?
|
||
O.25 | Co značí tečka (. )?
|
Označuje aktuální pracovní adresář. | |
O.26 | Co je to token? | Token je sekvence, jednoho nebo více znaků. | |
O.27 | Může se instlací upgradovat software? | Ne, když instaluji jinou verzi sw, tak budu mít dvě verze a budu muset určit, která se má používat. Ale nejedná se o upgrade. | |
O.28 | Používá Ubuntu MATE k něčemu Python? | ||
O.29 | Jak zjistím jaký mám model PC? | sudo dmidecode | grep -A3 '^System Information'
|
|
O.30 | Jak zjistím, kolik místa na disku zabírají soubory? | ||
O.31 | Co je to binary? | Binární soubor (anglicky binary) je soubor obsahující binární člověku nesrozumitelný kód. | |
O.32 | Co je to source file? | Soubor obsahující instrukce k programu. | |
O.33 | Jaké příkazy se používají pro vyhledávání souborů? | find, whereis, which, (p)locate | |
O.34 | Jaká jsou pravidla pro dávání řetězců do uvozovek? | ||
O.35 | Jak určím, která verze programu se bude používat. | ||
O.36 | Proč mám nainstalováno více verzí pythonu? | Tedy proč obecně mít více verzí a ne jednu, která se bude upgradovat. | |
O.37 | Co je to software-properties-common? | ||
O.38 | Co je to ppa? | Znamená to Personal Package Archive, jsou to balíčky pro uživatele Ubuntu. | |
O.39 | Jaký je rozdíl mezi ppa a repozitářem? | Repozitář je kolekce balíčků na vlastním serveru, kdežto PPA je kolekce na hostovaném serveru firmy Canonical (firma, která vyvíjí Ubuntu). Následníkem PPA jsou snapy (také poskytované firmou Canonical), které jsou lépe dohledatelné a snad i bezpečnější. | |
O.40 | Proč se musí oficiální balíčky installovat a o čem ta instalace je? | ||
O.41 | Kde se nachází balíčky? | ||
O.42 | Jakou příponu mají balíčky? | ||
O.43 | Co je to kompilace? | Převod programu ze zdrojového kódu do spustitelného binárního souboru. Umožňuje optimální využití prostředků daného počítače. | |
O.44 | Jak se updatují balíčky? | ||
O.45 | Co dělá příkaz sudo apt update ?
|
Tento příkaz updatuje informace o balíčcích dostupných na webu. Může se tak objevit nový stáhnutelný balíček, či informace, že lze některé balíčky, repetive jejich obsah upgradovat. | |
O.46 | Jaká jsou pravidla pro tvorbu názvů příkazů? | ||
O.47 | Kde bere snap informace o balíčcích? | Informace o snapech se do PC nestahují, jako informace o apt balíčcích, respektive se dají stáhnout k jednomu konkrétnímu balíčku, který se vyhledává. Ty se dají vyhledat pomocí příkazů snap find balíček , či snap search balíček .
|
|
O.48 | Co to znamená nainstalovaný repozitář? | ||
O.49 | Jaké typy balíčků pro Ubuntu existují? | ||
O.50 | Jaké jsou strategie zálohování? | Ideálním způsobem zálohování, je zálohovat kód v Githubu, kdy se vyrovnávají změny v kódu, což odpovídá obecné metodice nazvané differential backup, kdy se musí nejprve provést kompletní backup a pak se ukládají pouze informace o změnách. Na Linuxu takový backup umí např. program Backups. Hodně věcí jde také dělat příkazem rsync, a pak jde vytvořit skript pro pravidelné backupy a dát ho do cronu. Například u Backups je dobré některé adresáře vyjmout, protože se backupují jinde a u některých je potřeba dávat pozor, aby neobsahovali klíče a hesla, které si může někdo na uložišti otevřít (je tedy potřeba mít zabezpečené uložiště, nebo zakódovaná hesla). Dobré je zálohovat na 3 různých místech (např. PC, datadisk a cloud). Někdo také řeší způsob uložení na discích, tzn. rozmístit všude po disku/ích, kdyby se některé části disku rozbili, aby bylo možné data obvnovit? U Linuxu je dobré dělat backup nastavení systému (něktéré systémy vytváří system snapshots systému). Případně se to dělá nástrojem Timeshift. | Nicméně Backups a Timeshift jsou programy a bylo by dobré, se podívat co přesně dělají a pak vytvořit například svůj vylepšený v terminálu. |
O.51 | Lze zálohovat pouze změny (roztřídění souborů, v dokumentech? | Ano, differential backup by to měl zařídit. | |
O.52 | V jakém pořadí Shell interpretuje příkazy a skrypty? | ||
O.53 | Kde skladovat uživatelské skripty? | Patří do /usr/local/bin , kde je nepřepíší distro upgraty a další změny.
|
|
O.54 | Co to je copy-region-as-kill? | ||
O.55 | Co to je kill ring? | ||
O.56 | Je nějaký intuitivnější editor než nano? | Ano, třeba micro. | |
O.57 | Jak se říká úvodníku skriptu Bashe (tedy #!/bin/bash )?
|
Shebang a někdy též (či dříve) sharp exclamation či hashbang. | |
O.58 | Co znamená #!/bin/bash ?
|
# je v bashi úvodníky pro komentář. #! je pak tzv. shebang, který označuje spustitelný soubor. /bin/bash je pak cesta k interpretu, kterým se má tento soubor spustit. Doslova řečeno, cesta k interpretu se pošle do shebang a tím se to celé rozchodí. V tomto případě je soubor spuštěn v shellu Bashe. Jedná se o analogii windowsovského exe souboru.
|
|
O.59 | Jak začíná v Bashi kometář? | Hashtagem (# ).
|
|
O.60 | Co je to argument a jak vypadá? | Argument je část informace, která se posílá do příkazu k interpretaci. Někdy se jí říká též parametr a v Bashi jsou argumenty příkazů uvedeny v sekci Options. Jedná se tedy o řetězce, označené jako -u , -t , --timestamp atd. Jednoduchým příkladem je ls -a , tedy argument -a se posílá do příkazu ls . ls -a vypíše seznam skrytých souborů.
|
|
O.61 | Jsou nějaké příkazy, které hlídají čas, nebo dělají repetitivní akce v čase? | Například nástroj cron , který opakovaně spouští jiné věci.
|
|
O.62 | Co je to knihovna ve smyslu Bashe? | Kolekce souborů různého druhu zajišťující určitou repetitivní činnost. | |
O.63 | Co je to rutina (angl. routine)? | Jiné označení pro počítačový program. | |
O.64 | Jaký je rozdíl mezi adresáři lib, lib32, lib64 a libx32? | V lib jsou knihovny s programy v programovacím jazyce C, které využívají programy uložené v adresáři bin, kernel, nebo zařízení. lib32 a lib64 obsahují knihovny, které podporují vícečetnou architekturu. libx32, se pravděpodobně přidalo s instalací nějakých doplňků. | |
O.65 | Co je GTK+ dialog? | Nějaké dialogové okno z dílny GTK. | |
O.66 | Jaké jsou konvence pro používání uvozovek? | ||
O.67 | Co znamená značka > a nemožnost zadat další příkaz?
|
Například znamená pokračování příkazu na druhé řádce. Bash shell, totiž detekuje příkaz a pokud si myslí, že je nedokončený (například chybějící komentovací značka) tak nabídne takto další řádku příkazu. Vyzkočit se z toho dá např. příkazem CTRL+C .
|
|
O.68 | Co dělá klávesa CTRL+SHIFT+D? | ||
O.69 | Co je to CLI? | ||
O.70 | Jaká klávesová zkratka ukončí proces v terminálu MATE, pokud použiji zkratku CTRL + C pro něco jiného? | CTRL + SHIFT + C
|
|
O.71 | Co jsou to keybindings ?
|
||
O.72 | Jak otestovat přerušení procesu? |
|
|
O.73 | Jak se jmenuje část za příkazem? | argumenty | |
74 | Co dělá příkaz pip ?
|
Instaluje balíčky Pythonu. | |
75 | Co je python-dev v sudo apt-get install python3-pip python-dev ?
|
python-dev je druhý balíček, který se má instalovat. Celý kód tedy instaluje dva balíčky za použití příkazu apt. Prvním je python3-pip a druhým python-dev .
|
|
76 | Co je to xclip ?
|
Nástroj umožňující kopírovat něco z a do GUI pomocí X11. | |
77 | Mohu používat naráz xclip i xsel ?
|
||
77 | Co značí > v terminálu?
|
Že terminál očekává nějaký další vstup. Ukončit se dá třeba stiskem zkratky CTRL+D .
|
|
O.78 | Co je .bash.d? | Adresář, který obsahuje konfigurační bash scripty. | |
79 | K čemu se využívají jednotlivé typy souborů na Linuxu? |
|
|
80 | Jak nainstalovat Windows jako druhý operační systém? | ||
81 | Co znamená subl - ?
|
||
82 | Jak nainstalovat clamAV? |
Chyby a problémy
editovatChybová hlášení
editovatPři práci s terminálem narazíme na celou řadu chybových hlášení, je dobré jim rozumět. Nemusí se samozřejmě jednat o chyby, které generuje Bash a které se k Bash vztahují.
Č. | Hlášení | Vysvětlení | |
---|---|---|---|
CH.1 | Exception in thread "main" java.lang.UnsatisfiedLinkError | Chybové hlášení Javy. Program volá jinou verzi Javy, než je k dispozici v PATH. Pokud tedy máme správnou verzi Javy, ale nemáme ji v PATH (viz O.13) nebude to fungovat. | |
CH.2 | bash: cd: java: Not a directory | ||
CH.3 | No remote refs found similar to ‘flathub’ | ||
CH.4 | E: Unable to locate package | ||
CH.5 | Bad Interpreter: No Such File or Directory
|
Konkrétněji /bin/bash^M: bad interpreter: No such file or directory znamená, že script má windowsácké respetive dosácké zakončení řádku (\r\n ), kdežto Linux potřebuje \n . Toto tvrzení lze ověřit zadáním příkazu file název skriptu . Pokud to vyhodí hlášku CRLF line terminators , je to skutečně tento problém.
|
|
CH.6 | ls: cannot access '/diskD/Knihy/': No such file or directory
|
Tato chyba vznikla po zadání příkazu ls /diskD/Knihy/ . Jde tototiž o to, že lomítko (/ ) na začátku je interpretováno jako kořenový adresář, ale ve skutečnosti diskD, není u mne kořenovým adresářem. Aby to fungovalo, musel bych buď použít správnou absolutní cestu, nebo to zapsat jinak a použít relativní cestu. Absolutní cesta by byla: /home/juan/diskD/Knihy/ . Relativní cesta by pak byla ls diskD/Knihy/ . Fungovala by jen v případě, že bych byl ve svém domovském adresáři, tedy /home/juan/ . Kdybych byl jinde, mohu domovský adresář volat pomocí tildy (~ ). Zápis by pak vypadal ls ~/diskD/Knihy/ (a stále se jedná o relativní cestu). Jinak koncový slash nemusí být, interpretu umí interpretovat ~/diskD/Knihy i ~/diskD/Knihy/ . Podle chatGPT 3.5 je ale lepší tam to lomítko psát.
|
Problémy
editovatCílem tohoto kurzu je, abyste problémy buď přepracovali do podoby řešení (Jak něco udělat?) či otázek (Otázky). Nicméně někdy to člověku nejde a proto je tu tato sekce, kde si můžete otevřít problém, zapisovat si postup řešení a jiní Vám mohou do toho zkusit poradit.
1: Nejde otevřít adresář
editovat- tak nakonec se zjistilo, že se nejedná o adresář (modře po příkazu ls), ale o redirekt (světle modře) - prostě na tom černém pozadí ty barvy nejsou tak zřetelný
2: Nejde spustit VicuñaUploader
editovat- stáhnu si verzi, robalím, poklikám na soubor "vicuna" a nic (otevře se terminál a zase zavře)
- při spuštění programu z terminálu, tedy J.8, mit hlásí chybu CH.1
- tato chyba může být způsobena tím, že je nainstalova headles java, opravím to přeinstalací normální javy, například příkazem
sudo apt install openjdk-17-jdk
- případně se dají doinstalovat další součásti javy, viz návody
- tato chyba může být způsobena tím, že je nainstalova headles java, opravím to přeinstalací normální javy, například příkazem
3: V terminálu je tilda (~) a nejde v něm pracovat
editovat- jediné na co terminál reaguje je enter, ale vždy vypíše novou řádku s uživatelským jménem ukončeným tildou
- může jít o to, že je poškozen systém adresářů, protože došlo k vybytí při zapnutí systému
- některé příkazy ale fungují
- ŘEŠENÍ: nakonec se ale ukázalo, že LT funguje a že písmo mělo stejnou barvu jako pozadí a nebylo vidět.
4: Vicuna nejde spustit příkazem v terminálu
editovat- vložil jsem odkaz na adresář VU do
$PATH
v.bashrc
, pak vytvořil alias, a otevřel nový terminál. Při zadánívicuna
i aliasu vu to hlásí "command not found
" - takže se postupným hledáním chyby zjistilo, že se nejedná o bash skript, ale sh skript, protože je na začátku skriptu
#!/usr/bin/env sh
Dobrá praxe
editovatZde je pokus si sepsat, co by člověk měl dělat správně při správně svého Linux zařízení přes Bash.
Jaká je dobrá praxe při správně Ubuntu systému.
- před každou instalací spustit update:
sudo apt update
– stáhne informace o balíčcích dostupných na webu, jejich obsah je možné následně nainstalovat, nebo upgradovatsudo apt upgrade
– upgraduje balíčky
- po odinstalování sw:
sudo apt-get autoremove
Zálohování
editovatSem by to asi chtělo napsat obecné principy zálohování, práce s daty, nastavením systému (nebo na ně odkázat) a pak ukázat některé příklady jak je obsloužit prostřednictvím Bashe.
Součástí praxe je také zálohovat svoje data a nastavení systému. To může být lokálně, třeba na vlastní data disk, ale i na webu (např. v různých cloudových službách). Počítačový kód se pak může zálohovat třeba na Githubu. Obecně je zálohování nákladné, proto se doporučuje, na každý druh dat používat různé dostupné služby co jsou zdarma (třeba již uvedený Github pro kód). Zároveň využívat efektivní metodu zálohování - například změnové zálohování (anglicky differential backup), které zazálohuje jednou obsah disku a pak již zálohuje jen změny na disku provedené. Při zálohování hesel a klíčů je pak potřeba dávat pozor na bezpečnost, tj. buď zálohovat do míst, ke kterým nemají přístup další osoby, nebo citlivé údaje zašifrovat.
Mezi cloudové služby patří:
- Github – počítačový kód, dokumentace; umožňuje verzování
- Zenodo – výzkumné datasety, články a software; přiděluje DOI, umožňuje přetahovat věci z Githubu
Skripty
editovatAž zde vytvoříte pár skriptů, můžete se pustit do kurzu Bash pro středně pokročilé. Aby bylo jasno tak do subnadpisu uvádíme pokud máme pocit, že jsme skript správně napsali a otestovali (vyřešeno) či či ještě pracujeme (dořešit).
Po stisku klávesy kalkulačka se objeví MATE Calculator, nebo se přenese do popředí, ten již zobrazený (dořešit)
editovatPříkaz vu spustí skript vicuna.sh (vyřešeno)
editovat- například v /diskD/Bash/skripty/ vytvoříme skript vu:
#!/bin/bash
#Initiate sh shell to run vicuna.sh
sh ~/diskD/Vicuna/Test1/vicuna/bin/vicuna
- skript vu umístíme do /usr/local/bin například přemístěním z jiné lokace, kde jsem ho editovali (
sudo cp ./diskD/Bash/skripty/vu /usr/local/bin
) - přesunem se do onoho adresáře přes
cd /usr/local/bin
a zjistíme jeho práva přesls -l vu
, případně udělíme práva spouštět všem skupinám přessudo chmod +x vu
- následně by příkaz terminálu
vu
měl spustit vicuna.sh
Každý týden vyskočí notifikační okno upozorňující, že je potřeba provést backup (dořešit)
editovat- Zde využívám nástroj cron a příkaz zenity. Postup je následující:
- Napřed si otevřu tabulku cronu a budu ji editovat pouze pro sebe jako přihlášeného uživatele:
crontab -e
(je otázka, jestli mi to bude vyhovovat a jestli nebude potřeba to předělat pro všechny uživatle) - Poté vložím následující kód:
- Napřed si otevřu tabulku cronu a budu ji editovat pouze pro sebe jako přihlášeného uživatele:
0 20 * * 7 zenity --info --text="Otevři Backups a zálohuj!" --no-wrap --width=600 --height=500
Znaky před zenity
určují, kdy se příkaz zenity
spustí. Funkce jednotlivých znaků cronu jsou následující:
- Minuty (možný rozsah 0 až 59), pokud chci tedy, aby se příkaz spustil přesně v 8 večer, musí zde být nula
- Hodiny (0 až 23), 20 je tedy 8 hodin večer
- Den v měsící (1 až 31) - jelikož nevím, který den v měsíci je neděle, dávám tedy hvězdičku, která určí, že se jedná o jakýkoliv den v měsíci
- Měsíc (1 až 12) - jelikož chci příkaz spouštět každý týden, musím sem dát hvězdičku
- Den v týdnu (1 až 7, neděle může mít hodnotu 7 i 0), pokud chci tedy příkaz spoustět každou neděli dám 7
A nyní příkaz zenity
:
- --info značí, že se jedná o informativní box
- --text je samotný text v boxu
- --no-wrap znamená, že se text nezalomí
- --width a --heigth urči velikost boxu
Testování:
- skrypt se nespustil a mám podezření, že důvodem je to, že byl nastaven v cronu pro aktuálního uživatele
- tak podle chatGPT 4 se cron spouští tím uživatelem, který je přihlášený
- pak mě napadlo, že možná skript nebyl spuštěn, protože byl zrovna počítač v režimu spánku
- a G 4 to potvrzuje a navrhuje mi místo toho zkusit anacron (který mám nainstalován) a který je určen pro zařízení, která nejsou zapnuta 24/7
- a v man anacron čtu, že se skript spustí v době na kterou byl naplánován, nebo hned jak vyjde ze zmražení
- nicméně anacron neumí spustit script k určitému datu, kdybych chtěl spouštět každé pondělí tak to nedokáže, protože počítá vždy určitý čas od spuštění. Pokud se tedy spuštění kvůli vypnutému počítači posune o dva dny, třetí spuštění pak bude zase posunuté o dva dny. Takže tato cesta také není vhodná.
Debugování dle chatGPT 4:
- Hypotéza
zenity
není v proměnné$PATH
, protože cron může využívat jinou proměnouPATH
- zjistíme, jaká je cesta k příkazu
zenity
:which zenity
- zjistíme jaké cesty jsou v
$PATH
cronu:crontab -e
a pak* * * * * echo $PATH > /tmp/cronpath.txt
, zobrazímemicro /tmp/cronpath.txt
a zjistíme, jestli je tam ta cesta - výsledek, je že
zenity
je v PATH cronu, můžeme odstranit* * * * * echo $PATH > /tmp/cronpath.txt
zcrontab
a případně odstranit tento souborrm /tmp/crontpath.txt
- zjistíme, jaká je cesta k příkazu
- ...
Poznámky
editovatPříkazy
editovatZde si strukturujeme informace o jednotlivých příkazech. Následujte příkladů.
Č. | Příkaz | Co znamená | Česky | Co dělá | Příklad | Popis příkladu | Poznámky |
---|---|---|---|---|---|---|---|
1 | man | manual | nápověda | Pokud existuje manuál k příkazům, zobrazí, ho. | man rm | vypíše nápovědu k příkazu rm | Pokud manuál neexistuje, lze zkusit příkaz help
|
2 | ls | ||||||
3 | dir | ||||||
4 | rm | remove | odebrat | ||||
5 | cd | change (the working) directory | změnit pracovní adresář | umožňuje přesouvat se mezi adresáři | cd .. | vrátí se ve stromu adresářů o jednu zpět | |
6 | du | odhadne obsazení disků | |||||
7 | df | disk free | volný disk | ukazuje obsazenost disku | |||
8 | sudo | superuser do | superuser dělá | spustí příkaz jako superuser | |||
9 | find | find | najít | hledá soubor napříč adresáři |
|
|
A možná umí vyhledat jen soubory, které byly použité v nedávné době. |
10 | clear | clear | vyčistit | vyčistí obrazovku | clear | vyčistí obrazovku | |
11 | exit | exit | opustit | ukončí proces | exit | zavře terminál | |
12 | whereis | where is | kde je | najde program, ovšem programu musí být v PATH | whereis gimp | najde adresáře, kde je GIMP | Hledá hlavně programové soubory, ale ne ostatní soubory! |
13 | lscpu | list CPU | vypiš CPU | vypíše informace o PC | lscpu | vypíše parametry hardwaru | |
14 | apt | advanced package tool | pokročilý nástroj balíčků | nástroj pro zjednodušenou práci s balíčky | sudo apt update | ||
15 | install | ||||||
16 | cat | ||||||
17 | dpkg | debian package (manager) | nástroj pro balíčky debian | nástroj pro manipulaci s balíčky debian | |||
18 | connect | connect | spojení | Zahájí spojení do zásuvky (socket) | |||
19 | systemctl | Operuje s nástrojem systemd | |||||
20 | chmod | change file mod bits | |||||
22 | source | Příkaz spouštějící určitý soubor v konkrétním jádře | |||||
23 | ll | ||||||
24 | help
|
help | nápověda | Pokud má daný příkaz nápovědu, tak ji vypíše na obrazovku. | help cd
|
nabídne kompletní nápovědu pro příkaz cd
|
|
25 | chmod | change mode | Ve skutečnosti change file mode bits. | ||||
26 | which
|
Hledá umístění příkazů. | which python3
|
Najde umístění příkazu python3 (tedy výstup by byl /usr/bin/python3 ).
|
|||
27 | (p)locate | Hledá soubory, snadněji než find. | |||||
28 | rsync | remote synchron*? | vzdálená synchronizace? | Program slouží ke kopírování a umí posílat pouze rozdíly. | |||
29 | notify-send | notify send | upozorni pošli | Příkaz pošle na obrazovku upozornění formou textu v baneru. | notify-send "Dobré ráno!"
|
V pravém horním rohu se objevý šedé okénko s nápisem Dobré ráno! | Na Ubuntu ovšem po 5 sekundách okno zmizí. Ubuntu nerespektuje funkci critical , která by ponechala okno stále otevřené.
|
Nástroje
editovatPokud něco není příkaz, ale je to (i) nástroj. Definice nástroje není asi zcela přesná, kdyžtak upravte.
Č. | Název | Co to znamená | Česky | Co to umí | Poznámky |
---|---|---|---|---|---|
1 | snap | Nástroj pro manipulaci se snapy (tj. balíčky) | |||
2 | cups | Open source sw zajišťující komunikaci od editoru (Word) do tiskárny. | |||
3 | systemd | Je to systémový démon (viz O 12), který se spouští hned při startu. | |||
4 | fwupd | Je systémový démon | |||
5 | apt | Nástroj pro manipulaci s debs (tj. balíčky) | |||
6 | man | Systémový stránkovač (dalšími stránkovači jsou například more, less, či most (most zvýrazňuje syntax barevně)). | |||
7 | cron
|
chronos | čas | Plánuje úlohy ke zpracování. |
Přehledy
editovatInstalace/odinstalace
editovatV této sekci vytváříme podrobný postup způsobů instalace či odinstalace balíčků či softwaru. Jednotlivé kroky jsou samozřejmě volitelné, ale zde si ukazujeme kroky v režimu „doporučené a bezpečné“.
Jelikož není statistika distribucí Linuxu pro ČR, vycházíme ze světových statistik za rok 2022, že asi 50 % uživatelů používá Debian (Debian, Ubuntu) takže je balíčkovací systém debianu apt
pro balíčky *.deb je na prvním místě. Na druhém místě jsou systémy odvozené od RedHatu (RedHat, CentOS, Fedora) s 20 % používající magery dnf a balíčky *.rpm. Globální balíčkovací systémy (snap, flatpack) následují poté.
Krok | Co | Kód | Vysvětlení |
---|---|---|---|
1 | update informací o balíčcích | sudo apt update
|
Před každým záměrem instalovat nový software přes příkaz apt, je dobré si stáhnout aktuální informace o debian baličcích. Ty se dají procházet i online, kde jsou seřazeny do různých kategorii. |
2 | nainstalovat micro | sudo apt install micro
|
Nainstaluje textový editor Micro. Micro je textový editor, který umožní lépe prohlédnout celkový seznam nabízených balíčků. Lze to udělat i v předinstalovaným Less. Na druhou stranu Nano má například problém celý seznam načíst. |
3 | vypsat seznam dostupných balíčků | apt list | micro
|
Vypíše seznam dostupných balíčků a pipne je do editoru Micro. Pokud nechcete používat micro, můžete si je zobrazit například v Less. Kód by pak byl sudo apt list | less .
|
4 | vyhledat v micro | CTRL+F ^
|
V Micro se dá hledat po stisku kláves CTRL+F řetězec. Pokud chcete hledat na začátku každého řádku, musíte před Váš řetězec vložit znak stříky (^ ).
|
5 | zobrazit informace o balíčku | apt-cache show balíček
|
Pokud si nejste jisti, který balíček nainstalovat, můžete po opuštění Micro (CTRL+Q) vypsat informace o balíčku příkazem apt-cache show, tedy například sudo apt-cache show micro .
|
6 | instalace programu | viz bod 2 | |
A | vypsat seznam nainstalovaných | apt --installed list
|
|
B | odinstalace programu | sudo apt remove název programu
|
Takže například sudo apt remove nano odebere textový editor Nano.
|
C | odinstalace knihoven | sudo apt autoremove
|
Odinstaluje nepotřebné závislosti (angl. dependiencies), které používal odnistalovaný sw. |
D | vyčištění cache | sudo apt clean
|
Vyčistí cache od nepotřebných souborů. To může urychlit chod počítače. Neovlivní to nainstalované aplikace. |
Byť aplikace instalované pomocí příkazu apt, běží v jádru a mohou ho poškodit, jsou na druhou stranu kontrolovány správci repozitáře, takže by k tomu nemělo dojít. Horší by bylo instalovat aptem z jiných zdrojů. Pak jsou aplikace, které nejde kontajnerizovat, tak zcela logicky jedou přes apt (jako například flatpak).
Krok | Co | Kód | Vysvětlení |
---|---|---|---|
1 | update informací o balíčcích | sudo dnf check-update
|
|
2 | vypsat seznam dostupných balíčků | dnf list available | micro
|
V tomto případě pro přehlednost posíláme seznam dostupných balíčků do editoru micro. |
3 | vyhledat v micro | CTRL+F ^
|
V Micro se dá hledat po stisku kláves CTRL+F řetězec. Pokud chcete hledat na začátku každého řádku, musíte před Váš řetězec vložit znak stříky (^ ).
|
4 | zobrazí informace o specifickém balíčku | dnf info balíček
|
|
5 | nainstaluje konkrétní program | sudo dnf install balíček
|
|
A | odinstaluje program | sudo dnf uninstall název programu
|
|
B | odinstalace závislostí | sudo dnf autoremove
|
Odinstaluje knihovny, které už nejsou potřeba. Zpravidla ty, které používala právě odinstalovaná aplikace. |
C | vyčistí cache | sudo dnf clean all
|
Vyčistí cache od nepotřebných souborů. To může urychlit chod počítače. Neovlivní to nainstalované aplikace. |
Krok | Co | Kód | Vysvětlení |
---|---|---|---|
1 | Najít odpovídající balíček | snap find název balíčku
|
Jelikož se na rozdíl od balíčků typu apt nevytváří v PC seznam dostupných balíčků, je možné pouze vyhledávat konkrétní, nebo se podívat na web snapů: https://snapcraft.io/store. Příkaz by tedy mohl vypadat: snap find kdenlive .
|
2 | Informace o balíčku | snap info název balíčku
|
Zobrazí podrobnější informace o balíčku včetně vydavatele a krátkého popisu. |
3 | Instalace | sudo snap install název balíčku
|
Nainstaluje balíček, který obsahuje samotný program plus software, který tento program potřebuje (angl. dependecies). |
A | Odinstalace | sudo snap remove název balíčku
|
Odinstaluje konkrétní program a jeho závislosti. |
Jsou kritizovány za to, že repozitáře moc nekontrolují kód. Nicméně snapy mohou být zapouzdřeny a nevyužívat tak vnější prostředky (kategorie strict). Pokud instalujeme soubor, který nemá pevné zapouzdření, jsme na to upozornění (např. kategorie classic). Snapy mají různé úrovně zapouzdření:
- strict - jede pouze ve své obálce a nemůže používat nepřidělené zdroje
- classic - funguje jako aplikace instalovaná přes klasický apt, tedy využívá prostředky mimo zapouzdření. Může představovat určitou úroveň hrozby
- devmode - dočasné zapouzdření určené pro vývoj, ovšem s širokou možností využívat zdroje
- jailmode - zapouzdření pro snapd a jeho vývoj s omezenými možnostmi využívat prostředky
Krok | Co | Kód | Vysvětlení |
---|---|---|---|
1 | nainstalovat flatpak | sudo apt install flatpak
|
Instalujeme příkazem apt .
|
2 | ověření jestli jsou připojeny repozitáře | flatpak remotes
|
Pokud už je Flathub nastaven, nemusím nic dál řešit, v opačném případě ho nastavíme následujícím krokem. |
3 | připojení Flathub repozitáře | flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
|
|
Odinstalace repozitáře | flatpak remote-delete název repozitáře
|
Takže například v případě odebrální repozitáře Flathub, by příkaz vypadal následovně: flatpak remote-delete flathub .
| |
4 | Updatovat informace o balíčcích | flatpak update
|
|
5 | Vypsat seznam dostupných balíčků v repozitáři | flatpak remote-ls
|
|
6 | Zobrazit podrobnější informace o balíčku | flatpack info ID balíčku
|
Zde se neuvádí jméno, jako u příkazu apt, ale rovnou ID balíčku (označeno je to ale jako ID Application), ta je ve druhém sloupci zleva ve výpisu. Dotaz by zněl flatpack info org.telegram.desktop.webview .
|
7 | instalace balíčku | flatpak install název repozitáře ID balíčku
|
Takže například flatpak install flathub net.kvirc.KVIrc instaluje balíček KVIrc z repozitáře Flathub.
|
A | vyjet seznam nainstalovaných aplikací | flatpak list --app
|
Důvod proč to děláme je, abysme zjistili ID balíčku, který chceme odinstalovat. Atribut --app vypíše pouze aplikace. Pokud bysme potřebovali řešit i jiné balíčky, pak stačí napsat flatpak list .
|
B | odinstalujeme aplikaci | flatpak uninstall ID balíčku
|
Takže například flatpak uninstall net.kvirc.KVIrc .
|
C | odinstaluje nepoužívané závislosti v prostředí flatpak | flatpak uninstall --unused
|
Slouží k pročištění systému na podobné bázi jako sudo apt autoremove . Jeližkož flatpak a apt pracují každý v jiným prostředí, zároveň také nesdílí závislosti a nemůže se stát, že by jsme odinstalací knihoven ve flatpaku znefunkčnili nějakou aplikaci nainstalovanou přes apt .
|
odinstalace flatpaku | sudo apt remove název programu
|
||
odstranění závislostí | sudo apt autoremove
|
Installují pouze dektopové aplikace (tedy nenabízí aplikace do příkazového řádku) bez použití administrátorských práv (sudo). Flatpakové aplikace používají systémy postavené na kontajnerizaci (např. běží ve svém jmenném prostoru) tak, aby se oddělili od hlavního systému.
Krok | Co | Kód | Vysvětlení |
---|---|---|---|
0 | zjistit, jestli není zkontrolovaný balíček v apt repozitáři | apt list | micro
|
Jde totiž o to, že pokud je balíček dostupný ve zkontrolovaném repozitáři, tak po zadání sudo apt install název balíčku, stejně apt nainstaluje balíček z zkontrolovaného repozitáře, nikoliv z PPA. Apt totiž volí ten balíček, který je novější a z repozitáře, který je uveden první v seznamech repozitářů. Pokud jsme tedy nepozmněnili seznami repozitářů, či neuděli jiné piny, nainstaluje se to z toho oficiálního. |
1 | získat ppa | Někde na webu, nebo si ho vyhledat v repozitáři launchpad.net | |
2 | přidat repozitář | sudo apt-add-repository ppa:název repozitáře/ppa
|
Takže například sudo apt-add-repository ppa:jeffreyratcliffe/ppa .
|
3 | updatovat informace o balíčcích | sudo apt update
|
|
4 | nainstalovat balíček PPA | sudo apt install název balíčku
|
Pokud bych chtěl apt donutit, aby instaloval balíček z konkrétního repozitáře (viz krok 0), musím použí následující příkaz: sudo apt-get install -t název repozitáře název balíčku .
|
A | odinstalovat program | sudo apt remove název programu
|
|
B | odinstalovat nepoužívané závislosti | sudo apt autoremove
|
PPA je archiv repozotářů od Canonical (stejná firma spravuje oficiální apt repozitář) pro nezkontrolované balíčky vývojářů (každý balíček má většinou vlastní repozitář). Zde je tedy při každé instalaci balíčku potřeba mít daný balíček nebo daného vývojáře ověřeného, aby nedošlo k zanesení škodlivého systému. Ideální je před instalací a spoštěním systém zazálohovat. Fakt, že má každý vývojáře či balíček vlastní repozitář umožňuje oddělit balíčky a dobře vyhledávat odkud jsou. Odděluje se tím odpovědnost za špatný kód.
Krok | Co | Kód | Vysvětlení |
---|---|---|---|
0 | podívat se jestli je instalátor a instalační návod | Jednoduší je instalovat poskytnutým instalátorem. Pokud neni dostupný ani návod instalace, může to být docela složité. Konfigurační skrypty se nazývají většinou *configure*. A spouští se příkazem ./configure . Nápověda bývá v souborech nazvaných readme, install či build.
| |
1 | stáhnout zdrojový kód | ||
2 | sestavení softwaru (angl. build) | Build, česky sestavení je převod kódu z člověku čitelné podoby do binárního kódu pro počítač. To se dělá přiloženým instalátorem, nebo příkazem make . Projekt ale musí obsazovat makefile soubor s instrukcemi, jak program složit.
| |
3 | instalace | Instalace je umístění binárních souborů tak, aby byly spustitelné. To se dělá přiloženým instalátorem, nebo příkazem make .
|
Samoinstalace softwaru je složitá, nainstalovaný software se pak sám neupdatuje a bývá problém ho odinstalovat.
Zvážít zpracování appimage, dkpg
Odkazy
editovatCitace
editovat- ↑ Bash Reference Manual. www.gnu.org [online]. [cit. 2023-04-18]. Dostupné online.
- ↑ Bash Reference Manual. www.gnu.org [online]. [cit. 2023-04-18]. Dostupné online.
- ↑ Using case statements. tldp.org [online]. [cit. 2023-04-18]. Dostupné online.
- ↑ case Man Page - Linux - SS64.com. ss64.com [online]. [cit. 2023-04-18]. Dostupné online.
- ↑ bash - Console doesn't render according to man manual. Unix & Linux Stack Exchange [online]. [cit. 2023-03-28]. Dostupné online. (anglicky)