|
| 1 | +{%- macro sidebyside(titles=['Unix', 'Windows']) -%} |
| 2 | + <div class="row side-by-side-commands"> |
| 3 | + {%- for title in titles -%} |
| 4 | + <div class="col"> |
| 5 | + <h4>{{ title }}</h4> |
| 6 | +{%- filter markdown() -%} |
| 7 | +```{%- if title.lower().startswith('win') -%}dosvenv{%- else -%}console{%- endif -%} |
| 8 | +{{ caller() | extract_part(loop.index0, '---') | dedent }} |
| 9 | +``` |
| 10 | +{%- endfilter -%} |
| 11 | + </div> |
| 12 | + {%- endfor -%} |
| 13 | + </div> |
| 14 | +{%- endmacro -%} |
| 15 | + |
| 16 | +{%- if var('pyladies') -%} |
| 17 | +{% set purpose = 'PyLadies' %} |
| 18 | +{% set dirname = 'pyladies' %} |
| 19 | +{%- else -%} |
| 20 | +{% set purpose = 'Python' %} |
| 21 | +{% set dirname = 'naucse-python' %} |
| 22 | +{%- endif -%} |
| 23 | + |
| 24 | + |
| 25 | +# Příkazová řádka |
| 26 | + |
| 27 | +Většina uživatelů ovládá počítač v *grafickém rozhraní* – myší nebo prstem |
| 28 | +kliká na ikonky, vybírá příkazy z menu a kouká na animace. |
| 29 | +Programátoři ale často ovládají počítač *textově*, v příkazové řádce: |
| 30 | +napíšou příkaz nebo otázku a přečtou si případnou odpověď. |
| 31 | +Někteří to nemají moc rádi (příkazy je potřeba si pamatovat), někteří si |
| 32 | +to užívají (textové příkazy lze jednoduše opakovat a automatizovat), |
| 33 | +ale fakt je, že bez základní znalosti příkazové řádky se programátor neobejde. |
| 34 | + |
| 35 | +Seznamme se tedy se způsobem, který programátoři používají na zadávání příkazů. |
| 36 | + |
| 37 | +Příkazová řádka (respektive program, kterému se říká i *konzole* či *terminál*; |
| 38 | +anglicky *command line*, *console*, *terminal*) |
| 39 | +se na různých systémech otevírá různě: |
| 40 | + |
| 41 | +* Windows (české): Start → napsat na klávesnici „cmd“ → Příkazový řádek |
| 42 | +* Windows (anglické): Start → napsat na klávesnici „cmd“ → Command Prompt |
| 43 | +* macOS (anglický): Applications → Utilities → Terminal |
| 44 | +* Linux (GNOME): Menu Aktivity (levý horní roh) → hledat Terminál |
| 45 | +* Linux (KDE): Hlavní Menu → hledat Konsole |
| 46 | + |
| 47 | +Nevíš-li si rady, zkus |
| 48 | +{% if var('coach-present') -%} |
| 49 | +se zeptat kouče. |
| 50 | +{%- else -%} |
| 51 | +buď googlit, nebo se zeptat e-mailem. |
| 52 | +{%- endif %} |
| 53 | + |
| 54 | +Po otevření konzole tě uvítá okýnko s řádkem textu, |
| 55 | +kterým počítač vybízí k zadání příkazu. |
| 56 | +Podle systému bude tento řádek končit buď znakem `$` nebo `>`, |
| 57 | +před nímž můžou být ještě další informace: |
| 58 | + |
| 59 | +{% call sidebyside(titles=['Unix (Linux, macOS)', 'Windows']) %} |
| 60 | +$ |
| 61 | +--- |
| 62 | +> |
| 63 | +{% endcall %} |
| 64 | + |
| 65 | +Podle systému se potom liší i samotné příkazy, které budeš zadávat. |
| 66 | + |
| 67 | +> [note] Velikost písma |
| 68 | +> Je-li ve Windows moc malé písmo, klikni na ikonku okna a vyber Možnosti. |
| 69 | +> V záložce Písmo si pak můžeš vybrat větší font. |
| 70 | +> <!-- XXX: are the Czech names correct? --> |
| 71 | +> |
| 72 | +> {{ figure( |
| 73 | + img=static('windows-cmd-properties.png'), |
| 74 | + alt='Screenshot menu příkazové řádky', |
| 75 | +) }} |
| 76 | +> |
| 77 | +> Na ostatních systémech hledej v nastavení, nebo zkus |
| 78 | +> <kbd>Ctrl</kbd>+<kbd>+</kbd> a |
| 79 | +> <kbd>Ctrl</kbd>+<kbd>-</kbd> (příp. se Shift). |
| 80 | +
|
| 81 | + |
| 82 | + |
| 83 | +## První příkaz |
| 84 | + |
| 85 | +Začneme jednoduchým příkazem. |
| 86 | +Napiš `whoami` (z angl. *who am I?* – kdo jsem?) |
| 87 | +a stiskni <kbd>Enter</kbd>. |
| 88 | +Objeví se přihlašovací jméno. Třeba u Heleny to vypadalo takhle: |
| 89 | + |
| 90 | +{% call sidebyside() %} |
| 91 | +$ whoami |
| 92 | +helena |
| 93 | +--- |
| 94 | +> whoami |
| 95 | +pocitac\Helena |
| 96 | +{% endcall %} |
| 97 | + |
| 98 | + |
| 99 | + |
| 100 | +> [note] |
| 101 | +> Znak `$` nebo `>` je v ukázce jen proto, aby bylo jasné, že zadáváme |
| 102 | +> příkaz do příkazové řádky. |
| 103 | +> Vypíše ho počítač, většinou ještě s něčím před ním, |
| 104 | +> takže ho nepiš sama! Zadej jen `whoami` a <kbd>Enter</kbd>. |
| 105 | +> |
| 106 | +> Stejně tak počítač sám vypíše přihlašovací jméno. |
| 107 | +
|
| 108 | + |
| 109 | +## Aktuální adresář |
| 110 | + |
| 111 | +Příkazová řádka pracuje vždy v nějakém *adresáři* (neboli *složce*, |
| 112 | +angl. *directory*, *folder*). |
| 113 | + |
| 114 | +Je to podobné, jako když si na počítači otevřeš prohlížeč souborů. |
| 115 | +Na každém počítači takový program vypadá trochu jinak, ale většinou máš |
| 116 | +nahoře jméno aktuálního adresáře a v hlavním okýnku seznam souborů, |
| 117 | +které v tom adresáři jsou: |
| 118 | + |
| 119 | +{{ figure( |
| 120 | + img=static('dirs.png'), |
| 121 | + alt='Screenshot prohlížeče souborů', |
| 122 | +) }} |
| 123 | + |
| 124 | +Podobně příkazová řádka je vždy „v“ nějakém *aktuálním adresáři*. |
| 125 | +Který to je, to bývá napsáno před znakem `$` nebo `>` (občas ve zkrácené podobě). |
| 126 | +Vždycky se ale dá vypsat příkazem, který se podle systému |
| 127 | +jmenuje `pwd` nebo `cd` (z angl. *print working directory* – vypiš pracovní |
| 128 | +adresář, resp. *current directory* – aktuální adresář). |
| 129 | + |
| 130 | +{% call sidebyside() %} |
| 131 | +$ pwd |
| 132 | +/home/helena/ |
| 133 | +--- |
| 134 | +> cd |
| 135 | +C:\Users\helena |
| 136 | +{% endcall %} |
| 137 | + |
| 138 | +U tebe se bude aktuální adresář nejspíš jmenovat trochu jinak. |
| 139 | + |
| 140 | +Tento adresář – ten, ve kterém příkazová řádka „začíná“ – je tvůj |
| 141 | +*domovský adresář*. |
| 142 | +Typicky obsahuje všechny tvoje soubory a nastavení. |
| 143 | + |
| 144 | + |
| 145 | +## Co v tom adresáři je? |
| 146 | + |
| 147 | +V prohlížeči souborů se ukazují soubory v aktuálním adresáři neustále. |
| 148 | +V příkazové řádce si o ně ale musíš „říct“ příkazem `ls` nebo `dir` |
| 149 | +(z angl. *list* – vyjmenovat, resp. *directory* – adresář). |
| 150 | +Ten vypíše, co aktuální adresář obsahuje: všechny soubory, |
| 151 | +včetně podadresářů, které se v aktuálním adresáři nacházejí. |
| 152 | +Na některých systémech ukáže jen jména, jinde i další informace. |
| 153 | +Například: |
| 154 | + |
| 155 | +{% call sidebyside() %} |
| 156 | +$ ls |
| 157 | +Applications |
| 158 | +Desktop |
| 159 | +Downloads |
| 160 | +Music |
| 161 | +… |
| 162 | +--- |
| 163 | +> dir |
| 164 | + Directory of C:\Users\helena |
| 165 | +05/08/2014 07:28 PM <DIR> Applications |
| 166 | +05/08/2014 07:28 PM <DIR> Desktop |
| 167 | +05/08/2014 07:28 PM <DIR> Downloads |
| 168 | +05/08/2014 07:28 PM <DIR> Music |
| 169 | +… |
| 170 | +{% endcall %} |
| 171 | + |
| 172 | +Na tvém počítači nejspíš budou jiné soubory, ale aspoň `Desktop` a `Music` |
| 173 | +(nebo `Plocha` a `Hudba`) na většině počítačů jsou. |
| 174 | + |
| 175 | + |
| 176 | +## Kopírování textu |
| 177 | + |
| 178 | +Z příkazové řádky se dá kopírovat text. |
| 179 | +Háček je ale v tom, že to nejde přes <kbd>Ctrl</kbd>+<kbd>C</kbd> – tahle |
| 180 | +zkratka tu znamená něco jiného. |
| 181 | + |
| 182 | +Zkus si zkopírovat jméno aktuálního adresáře. |
| 183 | + |
| 184 | +* Na **Linuxu** všech systémech text vyber myší, pak klikni pravým tlačítkem |
| 185 | + myši a z menu vyber kopírování. |
| 186 | + Případně funguje zkratka <kbd>Ctrl</kbd>+<kbd>Insert</kbd>. |
| 187 | + |
| 188 | +* Na **macOS** to je nejjednodušší: text vyber a zkopíruj pomocí |
| 189 | + <kbd>⌘</kbd>+<kbd>C</kbd> |
| 190 | + |
| 191 | +* Na **Windows** napřed klikni na ikonku okýnka, rozbal *Edit* a vyber |
| 192 | + *Vybrat* (*Select*). Pak text vyber myší a zkopíruj klávesou |
| 193 | + <kbd>Enter</kbd>. |
| 194 | + |
| 195 | + (Na některých verzích Windows jde vybírat přímo myší, nemusíš přes menu.) |
| 196 | + |
| 197 | +Zkus zkopírované jméno adresáře vložit do grafického prohlížeče souborů. |
| 198 | +Měl{{a}} bys pak vidět obsah i tam. |
| 199 | + |
| 200 | +V dalších sekcích budeme potřebovat adresáře `Desktop` a `Music` (nebo `Plocha` |
| 201 | +a `Hudba`). |
| 202 | +Jestli je ve svém domovském adresáři nemáš, v grafickém prohlížeči si je |
| 203 | +vytvoř a v příkazové řádce zkontroluj, že je máš. |
| 204 | + |
| 205 | +{% call sidebyside() %} |
| 206 | +$ ls |
| 207 | +… |
| 208 | +Desktop |
| 209 | +Music |
| 210 | +… |
| 211 | +--- |
| 212 | +> dir |
| 213 | + Directory of C:\Users\helena |
| 214 | +… |
| 215 | +05/08/2014 07:28 PM <DIR> Desktop |
| 216 | +05/08/2014 07:28 PM <DIR> Music |
| 217 | +… |
| 218 | +{% endcall %} |
| 219 | + |
| 220 | + |
| 221 | +## Změna aktuálního adresáře |
| 222 | + |
| 223 | +Aktuální adresář se dá změnit pomocí příkazu `cd` |
| 224 | +(z angl. *change directory* – změnit adresář). |
| 225 | +Za `cd` se píše jméno adresáře, kam chceš přejít. |
| 226 | + |
| 227 | +> [note] Déjà vu? |
| 228 | +> Jsi-li na Windows, příkaz `cd` už jsi používal{{a}}. |
| 229 | +> Chová se ale různě podle toho, jestli něco napíšeš za něj nebo ne! |
| 230 | +
|
| 231 | +Přejdi do adresáře `Desktop` (nebo `Plocha`). |
| 232 | +Pak si nový aktuální adresář vypiš, aby sis ověřil{{a}}, |
| 233 | +že jsi na správném místě. |
| 234 | + |
| 235 | +{% call sidebyside() %} |
| 236 | +$ cd Desktop |
| 237 | +$ pwd |
| 238 | +/home/helena/Desktop |
| 239 | +--- |
| 240 | +> cd Desktop |
| 241 | +> cd |
| 242 | +C:\Users\helena\Desktop |
| 243 | +{% endcall %} |
| 244 | + |
| 245 | +> [note] Velikost písmen |
| 246 | +> Jsi-li na Linuxu nebo macOS, dej si pozor na velikost písmen: na těchto |
| 247 | +> systémech jsou `Desktop` a `desktop` dvě různá jména. |
| 248 | +
|
| 249 | +> [note] Windows a disky |
| 250 | +> Pokud přecházíš do adresáře na jiném disku, |
| 251 | +> například `D:` místo `C:`, je potřeba kromě `cd` |
| 252 | +> zadat jméno disku s dvojtečkou jako zvláštní příkaz (např. `D:`). |
| 253 | +
|
| 254 | + |
| 255 | +## Cesta zpět |
| 256 | + |
| 257 | +Zkusíme teď místo do `Desktop` (nebo `Plocha`) přejít do `Music` |
| 258 | +(nebo `Hudba)`. |
| 259 | + |
| 260 | +Když zadáš `cd Music`, pravděpodobně uvidíš *chybu*: v aktuálním |
| 261 | +adresáři (`Desktop`) žádné `Music` není. |
| 262 | + |
| 263 | +Aby ses do něj dostal{{a}}, musíš nejdřív zpátky, do „nadřazeného“ adresáře. |
| 264 | +To dělá příkaz `cd ..` – `cd`, mezera, a dvě tečky. |
| 265 | +Zkus ho zadat a pak se podívat, jak se aktuální adresář změnil: |
| 266 | + |
| 267 | +{% call sidebyside() %} |
| 268 | +$ cd .. |
| 269 | +$ pwd |
| 270 | +/home/helena |
| 271 | +--- |
| 272 | +> cd .. |
| 273 | +> cd |
| 274 | +C:\Users\helena |
| 275 | +{% endcall %} |
| 276 | + |
| 277 | +Z domovského adresáře už můžeš zadat `cd Music` (nebo `cd Hudba`) bez chyby. |
| 278 | + |
| 279 | + |
| 280 | +## Další příkazy |
| 281 | + |
| 282 | +Textových příkazů existuje daleko víc než `whoami` a `cd`. |
| 283 | +Z příkazové řádky můžeš vytvářet adresáře, měnit soubory, nebo si třeba přečíst |
| 284 | +e-mail. |
| 285 | + |
| 286 | +I „grafické“ programy, které máš na počítači nainstalované, jdou |
| 287 | +z příkazové řádky spustit – a to většinou jen zadáním jména. |
| 288 | +Zkus, jestli na tvém počítači bude fungovat `firefox`, `notepad`, `safari` |
| 289 | +nebo `gedit`. |
| 290 | + |
| 291 | +Při učení Pythonu si ale vystačíme s málem: s `cd`/`pwd` a několika příkazy, |
| 292 | +které zanedlouho nainstalujeme – například `python`. |
| 293 | + |
| 294 | + |
| 295 | +## Konec |
| 296 | + |
| 297 | +Nakonec vyzkoušej ještě jeden příkaz. |
| 298 | +Ten, který příkazovou řádku zavírá: `exit`. |
| 299 | + |
| 300 | +Příkaz `exit` funguje stejně na všech systémech. |
| 301 | +Proto už nebudu používat ukázku rozdělenou pro Unix a Windows. |
| 302 | + |
| 303 | +```console |
| 304 | +$ exit |
| 305 | +``` |
| 306 | + |
| 307 | +Ve zbytku těchto materiálů budeme pro kód, který je potřeba zadat do |
| 308 | +příkazové řádky, používat unixovské `$`. |
| 309 | +S touto konvencí se setkáš i ve většině návodů na internetu. |
| 310 | +Používáš-li Windows, je dobré si na `$` zvyknout, i když ve své |
| 311 | +řádce máš místo něj `>`. |
| 312 | + |
0 commit comments