-
Notifications
You must be signed in to change notification settings - Fork 3
úkoly 1: Git, 2: Bash I, 3: Správa uživatelů #49
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
Luc1et
wants to merge
6
commits into
main
Choose a base branch
from
lucie-talasova
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
6 commits
Select commit
Hold shift + click to select a range
d282a4d
úkoly 1: Git
Luc1et aefd38f
úkoly 2: Bash I
Luc1et a011fcb
úkoly 3: Správa uživatelů
Luc1et 28d76be
Update LT-ukoly3b-sprava_uzivatelu-prakticka_cast.md
Luc1et 1e17cd0
úkoly 4: Bash 2
Luc1et 8dbff0f
úkoly 5: Procesy & Signály
Luc1et File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
64 changes: 64 additions & 0 deletions
64
podzim_2025/lucie-talasova/LT-ukol1a-git-teoreticke_otazky.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,64 @@ | ||
| # Úkoly - Git | ||
|
|
||
| ## Teoretické otázky | ||
|
|
||
| ## 1. Proč je vhodné nastavit uživatelské jméno a e-mail hned po instalaci? | ||
| Když se spolupracuje na projektu, je nutné, aby bylo vidět, kdo změny udělal. Když to nenastavím hned, mohlo by se stát, že na to zapomenu, a nebude pak zřejmé, kdo je autorem změn. | ||
|
|
||
| ## 2. Jaký je rozdíl mezi pracovním adresářem, indexem (staging area) a repozitářem? | ||
| - **Pracovní adresář** je místo, kde fyzicky vytvářím a upravuju svoje soubory. | ||
| - **Index (staging area)** je mezikrok, kam se soubory přidávají pomocí `git add`, než se uloží do historie GITu. | ||
| - **Repozitář** obsahuje historii všech commitů, tedy všech uložených verzí projektu. | ||
|
|
||
| ## 3. Co se děje při příkazu `git add` a co při `git commit`? | ||
| - `git add` přidá změny z mého pracovního adresáře do indexu, tj. připraví je ke commitu. | ||
| - `git commit` všechny změny z indexu commitne do historie repozitáře GITU jako jeden commit. | ||
|
|
||
| ## 4. Vysvětli, co je to commit hash a proč je důležitý. | ||
| Je to unikátní identifikátor každého commitu - **hash** (např. `a4f6b2d...`). Lze podle něj commit dohledávat a upravovat. | ||
|
|
||
| ## 5. Jak Git uchovává historii změn? Uveď rozdíl oproti klasickému ukládání souborů. | ||
| Git neukládá celé soubory při každé změně, ale ukládá jn **rozdíly (dify)** mezi verzemi. Díky tomu je efektivní a rychlý. Klasické zálohování by při každé změně vytvářelo celou kopii souboru. | ||
|
|
||
| ## 6. Co znamená, že Git je „distribuovaný systém pro správu verzí“? | ||
| Každý uživatel má kompletní kopii celého repozitáře, včetně historie. To znamená, že může pracovat offline, dělat commity a prohlížet historii i bez připojení k internetu. Centrální server (většinou GitHub) slouží k synchronizaci změn, které jednotliví spolupracovníci udělali. | ||
|
|
||
| ## 7. Proč je doporučeno používat větve místo práce přímo v hlavní větvi (main/master)? | ||
| Větve umožňují pracovat na projektu bez ovlivnění stabilní hlavní verze. Teprve až když je práce hotová a zkontrolovaná, sloučí se do hlavní větve. Díky tomu se minimalizují chyby a chaos. | ||
|
|
||
| ## 8. Jaký je rozdíl mezi `git merge` a `git rebase`? Uveď příklad, kdy bys použil/a který. | ||
| - **Merge** spojí dvě větve dohromady a zachová historii tak, jak byla – vytvoří nový „merge commit“. | ||
| - **Rebase** přepíše historii tak, že změny z jedné větve „přehraje“ na konec jiné větve. | ||
|
|
||
| **Kdy použít:** | ||
| - `merge` – když chci zachovat úplnou historii (např. při sloučení feature větve do mainu). | ||
| - `rebase` – když chci historii zpřehlednit (např. před odesláním na GitHub). | ||
|
|
||
| **Rozdíl v historii:** | ||
| - Merge přidá nový commit, který spojuje obě větve. | ||
| - Rebase vytvoří nové commity s přepsanou historií, takže působí, jako by změny vznikly přímo na mainu. | ||
|
|
||
| ## 9. Jaký je účel pull requestu a proč se používá? | ||
| Pull request slouží k návrhu sloučení změn z jedné (pracovní) větve do jiné (main). Umožňuje ostatním členům týmu zkontrolovat kód, diskutovat o něm a schválit ho před začleněním do hlavní větve. | ||
|
|
||
| ## 10. Co znamená code review a jaký je jeho přínos? | ||
| Code review je proces, kdy někdo jiný než autor projde změny v kódu a zhodnotí je. Pomáhá odhalit chyby, zlepšuje kvalitu kódu a zároveň slouží jako forma učení se mezi vývojáři. | ||
|
|
||
| ## 11. K čemu je soubor `.gitignore`? | ||
| Slouží k určení, které soubory nebo adresáře má Git ignorovat, tj. nezahrnovat do verzovacího systému. Typicky logy, dočasné soubory, konfigurace prostředí apod. | ||
|
|
||
| ## 12. Co se stane, pokud přidáš do `.gitignore` soubor, který už je ve verzovací historii? | ||
| Git ho ignorovat nezačne automaticky, už je totiž sledovaný. Musím ho nejdřív odstranit z repozitáře pomocí `git rm --cached <soubor>` a teprve pak se začne ignorovat. | ||
|
|
||
| ## 13. Proč je vhodné ignorovat logy, dočasné soubory editorů nebo sestavení? | ||
| Tyto soubory se mění často, ale nejsou pro projekt důležité. Zabíraly by místo, dělaly nepořádek v historii a mohly by obsahovat citlivé nebo zbytečné informace. | ||
|
|
||
| ### 14. Jak se zapisují vzory do `.gitignore`? Uveď příklady pro: | ||
| - **Ignorování všech `.log` souborů:** | ||
| ``` | ||
| *.log | ||
| ``` | ||
| - **Ignorování adresáře `build`:** | ||
| ``` | ||
| /build/ | ||
| ``` |
File renamed without changes.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,212 @@ | ||
| # Úkoly - Bash I | ||
|
|
||
| U úkolů označených ⌨* budeš potřebovat počítač. | ||
| Ostatní zkus dát „z hlavy“. | ||
|
|
||
| ## 1. ⌨* | ||
|
|
||
| Co dělá příkaz `ls -v`? | ||
|
|
||
| * **A.** Vypíše verzi programu `ls` ......................................... --version | ||
| * **B.** Vypíše jméno aktuálního adresáře, ne jeho obsah..................... pwd | ||
| * **C.** Seřadí soubory podle hodnot (víceciferných) čísel v názvech ........ SPRÁVNÁ ODPOVĚĎ | ||
| * **D.** Vypíše obsah adresáře kompaktně – jednotlivá jména oddělí čárkou .... -m | ||
|
|
||
| Bonus: Jaké přepínače mají ostatní efekty? | ||
|
|
||
| ## 2. | ||
|
|
||
| Začnu-li (jako uživatel `mh`) v adresáři `/home/mh/data`, které z těchto příkazů mě dostanou do `/home/mh`? | ||
|
|
||
| * **A.** `cd .` | ||
| * **B.** `cd /` | ||
| * **C.** `cd /home/mh` ..... SPRÁVNÁ ODPOVĚĎ | ||
| * **D.** `cd ../..` | ||
| * **E.** `cd ~`............. SPRÁVNÁ ODPOVĚĎ | ||
| * **F.** `cd home` | ||
| * **G.** `cd ~/data/..` .... SPRÁVNÁ ODPOVĚĎ | ||
| * **H.** `cd` .............. SPRÁVNÁ ODPOVĚĎ | ||
| * **I.** `cd ..` ........... SPRÁVNÁ ODPOVĚĎ | ||
| * **J.** otevření nového terminálu | ||
|
|
||
| ## 3. | ||
|
|
||
| Mám-li níže ukázané adresáře, a `pwd` vypisuje `/home/mh/vec`, co ukáže `ls -F ../archiv`? | ||
|
|
||
| {{ figure( | ||
| img=static('hierarchy.svg'), | ||
| alt='Diagram adresářové struktury', | ||
| ) }} | ||
|
|
||
| <!-- | ||
| {% raw %} | ||
| ```graphviz | ||
| digraph hierarchy { | ||
| node [shape=folder]; | ||
| "/" -> home; | ||
| home -> mh; | ||
| mh -> vec; | ||
| vec -> archiv; | ||
| archiv -> "2020-09-01"; | ||
| archiv -> "2020-09-16"; | ||
| archiv -> "2020-10-01"; | ||
| mh -> archiv2; | ||
| archiv2 [label="archiv"] | ||
| archiv2 -> original; | ||
| archiv2 -> pnas_final; | ||
| archiv2 -> pnas_2 | ||
| } | ||
| ``` | ||
| {% endraw %} | ||
| --> | ||
|
|
||
|
|
||
| * **A.** `../archiv`: Adresář nebo soubor neexistuje | ||
| * **B.** `2012-12-01 2013-01-08 2013-01-27` | ||
| * **C.** `2012-12-01/ 2013-01-08/ 2013-01-27/` | ||
| * **D.** `original pnas_final pnas_2` | ||
| * **E.** `original/ pnas_final/ pnas_2/` ............. SPRÁVNÁ ODPOVĚĎ | ||
|
|
||
| ## 4. | ||
|
|
||
| Vypadá-li disk jako v předchozím úkolu a `pwd` vypisuje `/home/mh/archiv`, které z těchto příkazů vypíšou `pnas_2/ pnas_final/ original/`? | ||
|
|
||
| * **A.** `ls pwd` | ||
| * **B.** `ls -r -F` ................. SPRÁVNÁ ODPOVĚĎ | ||
| * **C.** `ls -r -F /home/mh/archiv`.. SPRÁVNÁ ODPOVĚĎ | ||
|
|
||
| ## 5. ⌨* | ||
|
|
||
| Zadej tenhle příkaz: | ||
|
|
||
| ```console | ||
| $ touch novy_soubor.txt | ||
| ``` | ||
|
|
||
| 1. Co tenhle příkaz udělal? (Nápověda: Použij `ls`) | ||
|
|
||
| Vytvořil prázdný novy_soubor.txt ve složce, ve které jsme v ten moment byli. | ||
|
|
||
| 2. Když se do aktuálního adresáře podíváš grafickým manažerem souborů, ukáže se ti `novy_soubor.txt`? | ||
|
|
||
| Ano, ukáže. | ||
|
|
||
| 3. Pusť `ls -l`. Zjistíš z výpisu, co nový soubor obsahuje? | ||
|
|
||
| Ne. | ||
|
Comment on lines
+94
to
+96
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Zjistíš že je prázdný a tedy neobsahuje nic :) |
||
|
|
||
|
|
||
| 4. K/ čemu slouží příkaz `touch`? | ||
|
|
||
| K vytvoření souboru. | ||
|
|
||
| ## 6. | ||
|
|
||
| Po tom, co pustíš následující příkazy, si uvědomíš, že soubory `sucrose.dat` a `maltose.dat` jsou špatně umístěné – měly by být v adresáři `raw`. | ||
|
|
||
| ```console | ||
| $ ls -F | ||
| analyzed/ raw/ | ||
| $ ls -F analyzed | ||
| fructose.dat glucose.dat maltose.dat sucrose.dat | ||
| $ cd analyzed | ||
| ``` | ||
|
|
||
| Doplň příkaz, který je tam přesune. | ||
|
|
||
| ```console | ||
| $ mv sucrose.dat maltose.dat ../raw/ | ||
| ``` | ||
|
|
||
| ## 7. | ||
|
|
||
| Vytvořila sis soubor `statsitika.txt`, ve kterém máš nějaké výpočty. Ale ve jméně je překlep! Které z těchto příkazů to spraví? | ||
|
|
||
| * **A.** `cp statsitika.txt statistika.txt` | ||
| * **B.** `mv statsitika.txt statistika.txt` SPRÁVNÁ ODPOVĚĎ | ||
| * **C.** `cp statsitika.txt .` | ||
| * **D.** `mv statsitika.txt .` | ||
|
|
||
|
|
||
| ## 8. | ||
|
|
||
| Co vypíše `ls` na konci této sekvence příkazů? | ||
|
|
||
| ```console | ||
| $ pwd | ||
| /home/jamie/data | ||
| $ ls | ||
| proteiny.dat | ||
| $ mkdir rekombinace | ||
| $ mv proteiny.dat rekombinace | ||
| $ cp rekombinace/proteiny.dat ../proteiny2.dat | ||
| $ ls | ||
| ``` | ||
|
|
||
|
|
||
| * **A.** `proteiny2.dat rekombinace` | ||
| * **B.** `rekombinace` ..............SPRÁVNÁ ODPOVĚĎ | ||
| * **C.** `proteiny.dat rekombinace` | ||
| * **D.** `proteiny2.dat` | ||
|
|
||
| ## 9. | ||
|
|
||
| Máš následující soubory: | ||
|
|
||
| ```console | ||
| $ ls -F | ||
| analyzed/ fructose.dat raw/ sucrose.dat | ||
| ``` | ||
|
|
||
| Zkus napsat co nejkratší příkaz, kterým přesuneš `fructose.dat` a `sucrose.dat` do adresáře `analyzed/`. | ||
|
|
||
| mv fructose.dat sucrose.dat analyzed/ | ||
|
|
||
| ## 10. | ||
|
|
||
| Které z následujících sad příkazů vytvoří tuhle strukturu adresářů? | ||
|
|
||
| ```plain | ||
| 2016-05-20/ | ||
| └── data | ||
| ├── processed | ||
| └── raw | ||
| ``` | ||
|
|
||
| **A.** .................................... SPRÁVNÁ ODPOVĚĎ | ||
| ```console | ||
| $ mkdir 2016-05-20 | ||
| $ mkdir 2016-05-20/data | ||
| $ mkdir 2016-05-20/data/processed | ||
| $ mkdir 2016-05-20/data/raw | ||
| ``` | ||
|
|
||
| **B.** ..................................... SPRÁVNÁ ODPOVĚĎ | ||
| ```console | ||
| $ mkdir 2016-05-20 | ||
| $ cd 2016-05-20 | ||
| $ mkdir data | ||
| $ cd data | ||
| $ mkdir raw processed | ||
| ``` | ||
|
|
||
| **C.** | ||
| ```console | ||
| $ mkdir 2016-05-20/data/raw | ||
| $ mkdir 2016-05-20/data/processed | ||
| ``` | ||
|
|
||
| **D.** ..................................... SPRÁVNÁ ODPOVĚĎ | ||
| ```console | ||
| $ mkdir -p 2016-05-20/data/raw | ||
| $ mkdir -p 2016-05-20/data/processed | ||
| ``` | ||
|
|
||
| **E.** | ||
| ```console | ||
| $ mkdir 2016-05-20 | ||
| $ cd 2016-05-20 | ||
| $ mkdir data | ||
| $ mkdir raw processed | ||
| ``` | ||
|
|
||
58 changes: 58 additions & 0 deletions
58
podzim_2025/lucie-talasova/LT-ukoly3a-sprava_uzivatelu-teoreticka_cast.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,58 @@ | ||
| # Úkoly – Správa uživatelů, Sudo | ||
|
|
||
| ## 🧠 Teoretická část | ||
|
|
||
| # Domácí úkol – Linux: práce se soubory, uživateli a právy | ||
|
|
||
| ## A. Práce se soubory a výstupem | ||
|
|
||
| 1. **Co udělá `cat` a kdy je vhodné ho použít?** | ||
| `cat` vypíše obsah souboru do terminálu, případně spojí víc souborů za sebe. Výstup lze přesměrovat i do souboru. Ideální pro kratší soubory nebo spojování. | ||
|
|
||
| 2. **Rozdíl mezi `less` a `cat`** | ||
| `cat` jen vypíše celý obsah a hotovo. `less` vypíše obsah souboru tak, že se dá v něm posunovat po obrazovkách pomocí šipek /`PgUp`/`PgDn` a hledat (`/text`). Lepší pro delší soubory. | ||
|
|
||
| 3. **K čemu slouží `head` a jak určit počet řádků?** | ||
| `head` vypíše začátek souboru (automaticky 10 řádků). Počet řádků lze nastavit parametrem `-n`, např. `head -n 25 soubor.txt`. | ||
|
|
||
| 4. **Jak zjistit počet řádků nebo slov v souboru?** | ||
| Pomocí `wc` (word count): | ||
| - řádky: `wc -l soubor.txt` | ||
| - slova: `wc -w soubor.txt` | ||
| - znaky: `wc -m soubor.txt` | ||
| - vše najednou: `wc soubor.txt` | ||
|
|
||
| 5. **Jak zobrazit posledních 10 řádků souboru?** | ||
| `tail soubor.txt` (defaultně 10 řádků). Pro jiný počet: `tail -n 50 soubor.txt`. | ||
|
|
||
| --- | ||
|
|
||
| ## B. Uživatelé, skupiny a práva | ||
|
|
||
| 1. **Rozdíl mezi uživatelem a skupinou v Linuxu** | ||
| Uživatel = účet (UID) s domovským adresářem a shell konfigurací. Skupina = logické seskupení uživatelů (GID) pro sdílení oprávnění. Uživatel může být členem více skupin; každá entita má primární skupinu. | ||
|
|
||
| 2. **Význam `-rw-r--r--`** | ||
| První znak typ: `-` soubor (`d` složka, `l` symlink). | ||
| Pak práva uživatele - číst a zapisovat, práva skupiny - číst, práva všech ostatních - číst. | ||
|
|
||
| 3. **Rozdíl mezi vlastníkem souboru a skupinou souboru** | ||
| Vlastník (user) je jeden konkrétní účet, který soubor vytvořil (nebo mu byl přiřazen); skupina je jedna vybraná skupina, jejíž členové mohou mít další práva k souboru (klidně i stejná, či dokonce vyšší než uživatel). | ||
|
|
||
| 4. **Co obsahují `/etc/passwd` a `/etc/shadow`** | ||
| Etc je složka, ve které se nachází konfigurace. Není ve domovském adresáři; je to top-level vedle /home, /bin, /var, … | ||
| - `/etc/passwd`: základní údaje o účtech (login, UID, GID, domovský adresář, shell). Dnes neobsahuje hesla, ale placeholder `x`. | ||
| - `/etc/shadow`: hashovaná hesla a politiky (expirace apod.); přístup má jen root (kvůli bezpečnosti). | ||
|
|
||
| 5. **K čemu slouží `chmod` a jak se používá** | ||
| Mění přístupová práva. Dva způsoby: | ||
| - Symbolicky: `chmod u+rwx,g+rx,o-r soubor` | ||
| - Osmiciferně (čísly): `chmod 754 soubor` | ||
|
|
||
| 6. **K čemu slouží `useradd`, `groupadd`, `usermod`, `passwd`, `userdel`, `groupdel`** | ||
| - `useradd`: vytvoří nový účet (např. `sudo useradd -m -s /bin/bash jenda`). | ||
| - `groupadd`: vytvoří novou skupinu (např. `sudo groupadd editors`). | ||
| - `usermod`: změní vlastnosti účtu (např. přidání do skupin `sudo usermod -aG editors jenda`, změna shellu `-s`, domova `-d` …). | ||
| - `passwd`: nastaví/změní heslo uživatele (`sudo passwd jenda`). | ||
| - `userdel`: smaže účet (s domovem `-r`: `sudo userdel -r jenda`). | ||
| - `groupdel`: smaže skupinu (pokud už není primární pro nějaký účet). |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
J. je taky správná odpověď, pokud nemáš bash nějak přenastavený, aby dělal něco jiného.