Stlačte "Enter" na preskočenie k obsahu

Príkazový riadok: odomknite nový svet možností, či ste začiatočník alebo pokročilý

Keď sa povie počítačová aplikácia, mnohí si predstavia otvorené okno s aplikačným menu, políčkami, tlačítkami a inými prvkami ovládateľnými z klávesnice. V skutočnosti je toto ale štýl ovládania starý sotva niekoľko dekád. Než prišli do módy tzv. grafické rozhrania GUI (graphical user interface), počítače sa ovládali úplne ináč. Na vstupe sa zadávali výhradne textové príkazy, pričom odpoveď počítača bol taktiež len text vypisovaný na obrazovku. Veľmi zjednodušene povedané, ako keby ste ovládali vaše zariadenie cez ChatGPT, s tým rozdielom, že počítače tej doby nemali schopnosť porozumieť ľudskej reči a tak hoci sa používali zásadne naše slová ako názvy príkazov, prípadne ich skratky, bola istá syntax, ktorú bolo treba dodržiavať.

Zrejme oveľa zásadnejšia otázka je ale iná.

Načo to vlastne riešiť v roku 2024?

Historické prehliadky sú síce fajn, no môžete sa úplne oprávnene pýtať, prečo by ste sa mali v dnešnej dobe zaoberať systémom ovládania spred 70 rokov.

Dôvod je jednoduchý. Hoci príkazový riadok ako koncept má svoj vek, medzi programátormi je mimoriadne obľúbený dodnes. Má to niekoľko príčin:

  • Pre programátora je jednoduchšie napísať aplikáciu komunikujúcu cez text ako grafické rozhranie. Predstavte si, čo je jednoduchšie, napísať knihu alebo natočiť film? Aj pri vysoko oceňovaných dielach prvé zvyčajne zvládne jeden človek s poznámkovým blokom, zatiaľ čo na druhé treba prostredie, kamery, efekty, hercov, a podobne. V softvéri síce ten rozdiel nie je až natoľko dramatický – aj grafickú aplikáciu môže s dobrými nástrojmi spraviť jediný programátor, avšak je oveľa jednoduchšie dobre naformulovať textový výstup a naučiť počítač pár príkazov ako dizajnovať okná a asynchrónnu interakciu s používateľom.
  • Aplikácie s textovým rozhraním vedia navzájom komunikovať. Pri grafických aplikáciách zvyčajne neočakávate, že napríklad konvertor zvukových formátov po zadaní úlohy otvorí zvukový editor Audacity, nahrá doň vstupné súbory, spraví úpravy a vykoná export, pričom následne aplikáciu zavrie a vypíše, že je úloha splnená. Nebolo by to praktické, pretože grafické rozhranie vie byť pomerne nevyspytateľné, často sa meniť a svoje zohráva aj samotný OS (len si spomeňte, koľko krát Vám už vyhodilo fokus do nikam). Textové aplikácie sú ale koncepčne oveľa jednoduchšie, zvyčajne navrhnuté tak, aby riešili určitú špecifickú úlohu a vedeli byť využívané inými programami. To je iba ďalšia motivácia písať a používať ich.
  • A celkovo je práca rýchlejšia a oveľa výrečnejšia, keďže je jednoduchšie napísať pár príkazov ako preklikávať sa siahodlhými oknami. K tomu možno ešte príkazy zhlukovať do tzv. dávok alebo skriptov, ktoré vedia používateľovi veľmi dobre automatizovať rôzne bežné úkony.

Tieto body v praxi znamenajú, že pomerne veľké množstvo užitočných aplikácií má konzolové rozhranie (označované ako TUI (Terminal user Interface) či CLI (Command Line Interface)), a tiež, že toto rozhranie je typicky veľmi dobre použiteľné pre čítače obrazovky, keďže neobsahuje grafické komponenty, ktoré by mohli byť zle sprístupnené či úplne nedostupné z klávesnice.

To je veľký potenciál, ktorý je pre zrakovo postihnutého používateľa škoda nevyužiť.

Ujasnenie názvov

Než sa pozrieme na to ako funguje terminál, bude možno dobré uviesť jeden detail. Príkazový riadok, command prompt, command line, konzola, terminál, a do istej miery (hoci nie celkom úplne) aj shell sú výrazy, ktoré všetky popisujú jedno a to isté. Historicky síce majú odlišný pôvod, dnes je toto ale skôr vec pre nadšencov histórie techniky a v praxi sa všetky používajú ako synonymá.

Príprava prostredia

Bohužiaľ, Windows je v trocha nešťastnej pozícii, pokiaľ ide o konzolové ovládanie. V štandardnej výbave mu chýba mnoho základných nástrojov typických pre prácu s Unix systémami, na ktorých sa fungovanie príkazového riadku veľmi dobre vysvetľuje. Ponúka síce vlastnú sadu vo svojom systéme PowerShell, ktorá je zasa ale príliš technická a určená primárne programátorom. Preto na účely výuky odporúčame používateľom operačného systému Windows stiahnuť a nainštalovať balíček Gow (priamy odkaz na inštalátor verzie 0.8.0 tu).

Gow (skratka GNu on Windows) prináša sadu nosných Unix príkazov na systém Microsoftu. Projekt nebol už nejakú dobu aktualizovaný (verzia 0.8.0 je z roku 2014), avšak jeho veľkou výhodou oproti iným podobným projektom je veľkosť. Zatiaľ čo balíčky ako Cygwin môžu mať stovky MB až gigabyte a sú pomerne zložité na inštaláciu, Gow má ľahký inštalátor, ktorý stačí preklikať a v nainštalovanom stave zaberie na disku 10 MB. Jedná sa pritom viac menej len o kolekciu programov, ktorá v systéme nezanechá hlbšie stopy a môžete ju kedykoľvek ľahko zase odinštalovať.

Nasledujúce sekcie predpokladajú nainštalovaný Gow na systéme Windows 11 alebo 10.

Základy práce s príkazovým riadkom

Stlačte kombináciu klávesou Win+R, napíšte cmd a stlačte enter. Otvorí sa okno príkazového riadku. Toto okno má iba jeden fokusovateľný prvok, ktorým je políčko pre zadanie príkazu, kurzor ho nikdy neopustí, pričom ako šípky tak tabulátor majú mierne odlišný význam než obvykle. K tomu sa ale ešte dostaneme.

Vizuálne leží políčko vstupu na spodku okna, a je pri ňom vypísaný aktuálny východiskový priečinok (k nemu sa tiež dostaneme), ktorý by mal čítač obrazovky čítať. Hlavným prvkom, ktorý zaberá väčšinu okna je však oblasť textového výstupu, kam počítač píše svoje odpovede. Prečítať ho môžete pomocou plošného prezerania NVDA (NVDA+Šípky) alebo virtualizácie obrazovky Jaws (Jaws+Alt+W). Mali by ste vidieť niečo takéto:

Microsoft Windows [Version 10.0.22621.3296]
(c) Microsoft Corporation. Všetky práva vyhradené.

C:\Users\Pouzivatel>

Ak vám NVDA hlási iba „prázdny“ a žiadny text, prípadne okraje obrazovky bez akýchkoľvek riadkov, skúste prehodiť mód plošného prezerania Cez NVDA+Page Up/Down. Pokiaľ to nezaberie, vyskočte z okna a znova sa doň vráťte. Niekedy toto trochu blbne, ale zvyčajne sa po určitom čase zas umúdri.

Príkazy

Je čas zadať prvý príkaz. Napíšte nasledujúci text a stlačte enter:

echo Ahoj!

Čítač obrazovky by vám mal automaticky prečítať odpoveď počítača, ktorú môžete vidieť aj cez plošné prezeranie:

Ahoj!

K čomu tu došlo? Základom každého príkazu je názov príkazu samotného, ktorý je prvým slovom vstupu – v tomto prípade echo (zopakuj). Príkazom môže byť výraz, ktorému rozumie terminál, ale vo väčšine prípadov ide jednoducho o názov .exe súboru alebo .bat súboru, ktorý sa má spustiť (prípona je nepovinná).

Iba príkaz sám o sebe by v mnohých prípadoch nebol veľmi užitočný, ako aj v tomto. Ak by ste napísali len „echo“ (zopakuj), je na mieste pýtať sa, čo by mal program vlastne zopakovať. Príkazy môžu mať preto aj svoje argumenty oddelené medzerou.

echo Ahoj, toto je test.

V tomto prípade sa za vstupy berú:

  • Ahoj,
  • toto
  • je
  • test.

Poznámka: S medzerami treba narábať opatrne. Aj v tomto prípade je síce na pohľad vstupom veta, avšak pre počítač to nie je veta ale 4 slová (dokonca s nalepenou interpunkciou), ktoré bude spracovávať samostatne. Výhodou echa je, že nejde o .exe program ale vstavaný príkaz cmd, preto sa správa trocha odlišne ako programy a všetko čo za ním napíšete berie ako celok. Bežné programy toto ale nerobia a ak by ste zadali ako vstup napríklad cestu k súboru obsahujúcu medzeru, je nutné ohraničiť ju znakom „, v opačnom prípade ju počítač pochopí ako 2 nesúvisiace vstupy.

Poďme na trocha zaujímavejší príkaz, tentokrát už z portfólia Unixu.

ls

Tento program vypíše všetky adresáre a súbory v aktuálnom priečinku.

Argumenty, flagy, vstupy

Videli sme, že vieme volať príkaz a dať mu určitý vstup, ktorý má spracovať. Aj vstupov ale existuje niekoľko druhov, podľa toho, čo daný vstup predstavuje.

Ten najzákladnejší sme si už ukázali, išlo o jednoduchú hodnotu, s ktorou program pracoval. Pripomeňme si to na príklade ls:

ls Documents

Vypíše obsah priečinku Documents. Pozn. v prieskumníkovi môžete byť zvyknutí vidieť priečinky ako Documents, Downloads, Pictures v ich preložených názvoch, v skutočnosti sú na disku pomenované v Angličtine a tieto názvy treba dávať aj programom.

Niekedy ale chceme programu upresniť, ako si predstavujeme, aby svoju funkciu vykonal. Napríklad chceme vidieť nie len názvy súborov, ale aj ich vlastníka, veľkosť, oprávnenia a tak podobne. Na tento účel sa používajú tzv. flagy:

ls -l Documents

Flagy sa typicky začínajú pomlčkou, a fungujú ako prepínače, ktoré nejakú funkciu zapnú alebo vypnú. V tomto prípade si môžeme povedať, že chceme vidieť veľkosť súboru.

ls -l -s Documents

A ideálne nie v počte alokovaných blokov, ale veľkosti v B/KB/MB/GB, ako sme na to zvyknutí:

ls -l -s -h Documents

Začína tých písmeniek a pomlčiek byť nejako veľa. Niektoré programy, ktoré majú veľký počet podobných prepínačov umožňujú spojiť ich dokopy:

ls -lsh Documents

Ibaže táto forma je síce rýchla, ale pomerne komplikovaná na zapamätanie, ak daný program nepoužívate často, strávite oveľa viac času zisťovaním, ktoré písmenko k čomu patrí než času, ktorý ušetríte. Preto majú flagy aj svoje dlhé formy a tento príkaz môžete napísať aj takto:

ls -l --size --human-readable Documents

To je už oveľa lepšie. Ako je vidieť, dlhé formy flagov sa začínajú dvoma pomlčkami namiesto jednej, zatiaľ čo jedna pomlčka oddeľuje od seba jednotlivé slová.

Niekedy nám ale nestačí jednoduchý zapnuté/vypnuté prepínač, ale potrebujeme aj tomu prepínaču priradiť hodnotu, aby program chápal, ako to myslíme. Napríklad, chceme súbory zoradiť. Ibaže podľa čoho? Použijeme argument, forma je rovnaká ako pri flagu, len pripojíme zaň hodnotu:

ls --sort size Documents

Niektoré programy pre jednoznačnejšie odlíšenie priradenia namiesto medzery podporujú aj iné symboly, môžete použiť napr.

ls --sort=size Documents

Toto sú spôsoby, ako špecifikovať príkaz. Treba ale podotknúť, že paradigmy spomenuté v tejto sekcii nie sú v réžii príkazového riadku, ale programu, ktorý voláte. Príkazový riadok sa stará iba o to, že zoberie váš vstup, rozdelí ho podľa medzier na podvstupy, zavolá na základe prvého z nich program, ktorému predá zvyšok. Všetko ostatné – argumenty, flagy, vstupy – ich forma, korektné pochopenie, je na danom programe. Tu opisovaný prístup je štandardom Unix programov a veľkého množstva konzolových aplikácií, avšak napríklad programy microsoftu označujú flagy či argumenty lomítkom namiesto pomlčiek, slová oddeľujú kapitalizáciou a namiesto = pre priradenie používajú dvojbodku. Smerodajné sú preto vždy konvencie konkrétneho programu, o ktorých sa dočítate v jeho manuáli.

Štandardný vstup, výstup a error

Dosiaľ sme pracovali s programami, ktoré sme zavolali ako príkaz, oni niečo vypísali a ukončili sa. V skutočnosti však vedia byť podstatne interaktívnejšie. Zadajte príkaz:

cat

a stlačte enter. Na prvý pohľad sa nestane nič. Žiadny výstup, dokonca aj čítač je ticho. To je však svojím spôsobom indícia že niečo sa predsalen deje. Normálne ak spustíte program, po jeho ukončení vám cmd vypíše cestu k aktuálne aktívnemu priečinku, ktorú vám čítač oznámi. Teraz sa ale program neukončil a stále beží, čakajúc na váš vstup.

Každý konzolový program pozostáva z troch streamov, ktoré si môžete predstaviť ako rúry pripojené ku kotlu. Sú to:

  • Štandardný vstup
  • štandardný výstup
  • Štandardný eror

Týmito rúrami tečú dáta, zvyčajne text, ak s programom kecáte vy, ale na pozadí sú to byty a môže nimi kľudne tiecť napr. obrázok, alebo ľubovoľný súbor. Štandardným vstupom smerom dnu, tadiaľto dávate programu priame príkazy čo má robiť. Štandardným výstupom vám zase program odpovedá. Ak prebieha komunikácia textovou formou, zvyčajne prebieha na základe nových riadkov (symbolu, ktorý sa zadá po stlačení klávesu enter), keď ho program zaznamená, spracuje čo ste napísali a vypíše odpoveď (ak treba).

Skúste napísať pár slov a stlačiť enter. Potom znova. Každý riadok, ktorý zadáte, uvidíte na obrazovke 2krát, raz ako svoj vstup a raz ako odpoveď programu. To je tým, že cat je program, ktorý na štandardný výstup vypisuje normálne obsah súboru ak nejaký dostane ako argument, no ak nie (ako v tomto prípade), berie jednoducho štandardný vstup.

Toto vyzerá ako pomerne neužitočný príklad, používame ho len na ilustráciu. Ak by ste mali nainštalovaný napríklad Python, odpovede na vstupy by boli podstatne zaujímavejšie.

Bežiaci program môžete ukončiť skratkou Ctrl+C.

Pozn. štandardný error slúži na prenos chybových hlásení. Keď používate príkazový riadok, vidíte v textovej ploche ako obsah štandardného výstupu tak erroru. Dôvod prečo sú tieto streamy oddelené je využitie v automatizácii, a nebudeme sa ním na tomto mieste zaoberať.

Piping: Hráme sa s rúrami

V predchádzajúcej sekcii sme videli, ako štandardný vstup (stdin) a štandardný výstup (stdout) využívame, keď sú obidve napojené na príkazový riadok. Pokračujúc s analógiou rúr a kotlov, tieto však môžeme zapojiť aj ináč. Prečo by sme to chceli robiť?

Vrátime sa k príkazu ls. Ako ste možno postrehli v jeho sekcii, obsahuje pomerne veľa argumentov a flagov, ktoré možno nastaviť, pričom pamätať si všetky by nebolo príliš efektívne. Ak chceme stručnú nápovedu týkajúcu sa podporovaných príkazov, môžeme použiť flag –help:

ls --help

Avšak keď ho spustíte, ihneď zaznamenáte menší problém. Jeho výstup sa nezmestí na obrazovku. Čítač pravdepodobne začne čítať od začiatku, avšak keď použijete plošné prezeranie, ten nikde nevidno a na obrazovke máte iba koniec dlhého textu.

Existuje skvelý interaktívny príkaz less.

less subor.txt

Načíta obsah súboru subor. txt, pričom vám na obrazovku vypíše toľko, koľko sa na ňu zmestí. Neukončí sa však, zostáva bežať. V tomto prípade mu nezadávate textové príkazy ale môžete použiť stláčania kláves (ide tiež o vymoženosť, ktorú programom poskytuje terminál – reagovať na vstup z klávesnice). Medzerník posunie o stranu vpred, B (ako back) o stranu vzad, Q ukončí program. K dispozícii sú tiež klávesy pre vyhľadávanie či skok na začiatok/koniec. Je to teda riešenie navigácie vo veľkom množstve textu.

My však nemáme text v súbore, ale nám ho vypisuje ls. Čo s tým?

Stačí nám napojiť stdout programu ls na stdin programu less, a problém je vyriešený. Urobíme tak symbolom |, pričom less použijeme bez argumentu:

ls --help | less

Podobne efektívna je dvojica ls a grep. Grep je program, ktorý číta po riadkoch stdin, ako argument berie regulárny výraz a vypíše iba tie riadky, ktoré mu zodpovedajú. Funguje tak ako vyhľadávač:

ls -l --size --human-readable | grep subor

No a napokon, rúry môžeme presmerovávať nie len do iných rúr, ale aj z/do súborov znamienkami < a >.

echo ahoj > subor.txt

Hodí sa to hlavne vtedy, ak treba uložiť výstup programu pre ďalšie použitie:

ls --help > manual_ls.txt

Pohyb po súborovom systéme

Jednu vec, ktorú sme zatiaľ nespomenuli, je oná cesta, ktorú neustále vidno pri políčku vstupu. Jej význam je veľmi jednoduchý. Ako sme mali možnosť vidieť, programy často interagujú so súbormi, ktoré sú umiestnené na určitých miestach na disku. Ibaže by bolo nepraktické označovať ich večne plnou cestou. To je ako keby ste sa v Bratislave pýtali okoloidúcich, ako sa dostanete do Mliečnej cesty, Slnečnej sústavy, na Zem do Európy na Slovensko do Bratislavy na Kamenné námestie.

Preto máme vždy určitý kontext, tým je tzv. current working directory, alebo aktuálny pracovný priečinok v zmysle priečinok, v ktorom sa vykonáva aktuálna práca. Všetky cesty, ktoré sa nezačínajú niektorým z koreňových priečinkov (C:, D:, E:, …) sa berú od tohto priečinka.

Vidíte ho neustále pri vstupnom políčku (pokiaľ práve nebeží žiadny program). Môžete si ho ale tiež nechať vypísať príkazom:

pwd

A zmeniť príkazom cd (ako current directory):

cd Documents
cd C:\Users

Znak bodka (.) vždy predstavuje aktuálny priečinok na danej úrovni, pričom dve bodky (..) jeho zdrojový priečinok. Môžete tak z ľubovoľného priečinka vyjsť o jednu úroveň:

cd ..

Ale aj o niekoľko:

cd ..\..

A jedným príkazom sa niekde zanoriť:

cd ..\..\Priecinok

Toto je pri cestách štandard a bodky tak môžete používať aj pri parametroch pre programy.

Pro tip: Ak chcete otvoriť príkazový riadok z prieskumníka v aktuálnom priečinku, stačí stlačiť skratku Alt+D, napísať cmd a potvrdiť Enterom.

Premenné prostredia

Posledná vec, ktorú treba pri termináli spomenúť, sú premenné. Už sme si povedali, že veľa príkazov sú vlastne len .exe súbory. Toto bude fungovať:

ls.exe

Lenže prečo? V aktuálnom priečinku predsa žiadny ls.exe nie je, kde ho teda cmd nabral? Existuje systémová premenná PATH. Táto premenná obsahuje všetky cesty obsahujúce .exe súbory, ktoré sa majú skontrolovať, keď voláte nejaký príkaz. V prípade cmd platí, že ak nejaký názov obklopíte percentami a ide o systémovú premennú, dosadí sa na dané miesto jej hodnota. Obsah PATH si preto môžete nechať vypísať:

echo %PATH%

Zobrazí sa smršť ciest oddelených znakom ;. PATH však nie je jediná systémová premenná. V skutočnosti si môžete vytvoriť akúkoľvek systémovú premennú s ľubovoľným názvom a hodnotou, stačí do vyhľadávania menu štard zadať „premenné“ a nájdete príslušné nastavenia.

Pozn. Ak urobíte nejaké zmeny, musíte reštartovať bežiace príkazové riadky aby sa prejavili.

Významy systémových premenných sú 2. Pokiaľ ide špecificky o PATH, je to miesto, kam je dobré sa pozerať, ak sa cmd sťažuje, že nejaký príkaz, o ktorom viete, že ste ho nainštalovali, nevie nájsť. Inštalátory rôznych konzolových nástrojov, ako napríklad Pythonu často priamo ponúkajú možnosť zaradiť ich priečinky do PATH a nie vždy je predvolene začiarknutá.

Programy však tiež využívajú systémové premenné pre vlastnú konfiguráciu. Ak napríklad spúšťate server, ktorému chcete zadať určitý port, na ktorom má bežať, nemuselo by byť praktické robiť tak cez argument, nakoľko ide o nastavenie, ktoré chcete aby bolo aktívne vždy. Jedným riešením je tak vytvoriť systémovú premennú, ktorá ho programu poskytne (pochopiteľne za predpokladu, že ho v nej bude hľadať, podporu systémových premenných a vyžadované názvy treba vždy skonzultovať s dokumentáciou daného programu).

Pokiaľ má daný program nastavení viacej, zadávať všetky cez premenné by nebolo praktické, a používajú sa skôr textové konfiguračné súbory, v ktorých môžete ľahko formou jednoduchých priradení kľúč=hodnota nastaviť čo potrebujete a svoju konfiguráciu si napríklad zálohovať alebo preniesť inde.

Pár praktických tipov

Pri obsluhe príkazového riadku môžete využiť niekoľko praktických vychytávok, ktoré vám vedia značne uľahčiť prácu.

  • Šípky Hore/Dole prechádzajú históriou príkazov. Ak potrebujete spustiť príkaz, ktorý ste v danej relácii už spúšťali, prípadne ho len mierne upraviť, nemusíte ho vypisovať znova, stačí ho nájsť šípkami a opäť použiť.
  • Tabulátor funguje ako autocomplete. Keď píšete názov priečinka / súboru ako súčasť cesty, nemusíte si pamätať ich presné znenie či ho celé zadávať. Stačí napísať časť a stlačiť tabulátor, cmd automaticky doplní zvyšok.
  • Pokiaľ vám pre prilepenie príkazu do terminálu nefunguje Ctrl+V, skúste Ctrl+shift+V (hoci moderné Windows už používajú Ctrl+V predvolene). Terminál má svoje aplikačné menu a nastavenia, v ktorých si môžete skratky prispôsobiť.
  • Ak potrebujete scrolovať a nemôžete použiť less, skúste skratku Ctrl+M. Aktivuje vyznačovací mód príkazového riadku, vrámci ktorého môžete zobrazený text posúvať šípkami. Presnejšie povedané, posúvate virtuálny kurzor, ktorého vplyvom sa posúva aj obrazovka.
  • Terminál ukončíte príkazom exit.

Deface: Anonymizujeme fotografie

Máme za sebov množstvo teórie. Je čas dostať ju do praxe. Vyskúšame si nástroj na automatické rozmazávanie tvári vo fotografiách, videách či webovej kamere deface.

Čo budeme potrebovať

Nainštalovaný Python. Môžete ho získať z oficiálnej stránky. Pri inštalácii sa nezabudnite uistiť, že je začiarknuté pridanie do PATH, povolenie predĺženia limitu na cesty tiež nie je zlý nápad. Po inštalácii sa môžete presvedčiť, že všetko funguje tak, že do príkazového riadku zadáte python a pokecáte si s interpreterom.

Inštalácia a použitie deface

Vytvorte si niekde na disku, napríklad na ploche, priečinok deface. Skopírujte doň fotku alebo video, ktoré chcete upraviť. Následne priečinok otvorte v príkazovom riadku. Inštalácia Python programov vie byť trocha krkolomná, keďže si vyžaduje vytvorenie a aktiváciu virtuálneho Python prostredia. Nemusíte ale rozumieť detailom, stačí aplikovať nasledovné príkazy:

python -m venv venv
venv\scripts\activate
pip install deface

A zobrazte si nápovedu:

deface --help

Stačí použiť!

deface obrazok.jpg

Pozn. virtuálne prostredie Pythonu bude aktívne len po dobu otvorenia danej inštancie príkazového riadku. Môžete ho kedykoľvek v budúcnosti aktivovať príkazom:

venv\scripts\activate

Bez nutnosti opakovať zvyšné kroky. Či prostredie je alebo nie je aktívne môžete vidieť podľa značky (venv) pred cestou pri políčku vstupu.

Okomentujte ako prví

Pridaj komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *

Táto webová stránka používa Akismet na redukciu spamu. Získajte viac informácií o tom, ako sú vaše údaje z komentárov spracovávané.