1. týždeň

First Steps with Shell

Pravidlá, Unix, editor ViM, preklad a spustenie programu

O čom je lab

Zoznámite sa so základnými pravidlami predmetu. Naučíte sa základný pracovný postup pre vzdialený server. Pomocou editora ViM si vytvoríte program, ktorý preložíte.

Ciele

  1. Oboznámiť sa s pravidlami hodnotenia na predmete Základy algoritmizácie a programovania.
  2. Pripraviť si prostredie pre prácu na predmete.
  3. Prakticky zvládnuť vytvorenie spustiteľného programu zo zdrojového kódu zapísaného v jazyku C v prostredí editora ViM.
  4. Zvládnuť základy práce s príkazovým riadkom.

Postup

Krok 1: Pravidlá

Predtým, než začnete, diskutujte s Vašim cvičiacim o pravidlách tohto predmetu.

Krok 2: Prihlásenie na vzdialený server

V tomto kroku získate prístup na vzdialený Unix server. Pomocou ssh klienta sa prihlásite a vykonáte prvé príkazy, aby ste sa zorientovali.

Úloha 2.1

Pripravte si Váš univerzitný login a heslo (pomocou ktorých sa prihlasujete do systému Mais).

Poznámka

V prípade, že si nepamätáte Váš univerzitný login alebo si chcete zmeniť heslo, navštívte stránky univerzitného Ústavu výpočtovej techniky.

Úloha 2.2

Prihláste sa na server zap.fei.tuke.sk s menom cvicenie a heslom zapzap.

  • Ak pracujete na OS Linux, prihláste sa pomocou príkazového riadku príkazom ssh cvicenie@zap.fei.tuke.sk alebo ssh -l cvicenie zap.fei.tuke.sk.
  • Ak pracujete na OS Windows, prihláste sa pomocou nástroja putty.

Poznámka

Pri zadávaní hesla sa nezobrazujú hviezdičky - zadávate ho na slepo.

Úloha 2.3

Aktivujte si používateľské konto na serveri zap.fei.tuke.sk pomocou Vášho univerzitného loginu a hesla.

Server Vás vyzve, aby ste zadali Váš univerzitný login a heslo:

  • Prihlasovacie údaje sú rovnaké ako údaje na prihlásenie do Mais.
  • Pri úspešnom zadaní Vášho loginu a hesla sa Vám aktivuje konto na serveri a budete sa musieť prihlásiť opäť - ale s Vašim novým kontom.
  • Odteraz sa na tento server budete prihlasovať s Vašim univerzitným loginom a heslom.

Komunikácia so serverom bude nasledovná, pričom vstup od používateľa je zvýraznený tučne (heslo neukazuje hviezdičky):

login as: cvicenie

$$\   $$\ $$$$$$$\ $$$$$$\  ==========================================
$$ | $$  |$$  __$$\\_$$  _| Katedra pocitacov a informatiky
$$ |$$  / $$ |  $$ | $$ |   Fakulta elektrotechniky a informatiky
$$$$$  /  $$$$$$$  | $$ |   Technicka univerzita v Kosiciach
$$  $$<   $$  ____/  $$ |   ==========================================
$$ |\$$\  $$ |       $$ |   Department of Computers and Informatics
$$ | \$$\ $$ |     $$$$$$\  Faculty of Electrical Engineering and Informatics
\__|  \__|\__|     \______| Technical University of Kosice
======================================================================
UNAUTHORIZED ACCESS TO THIS NETWORK DEVICE IS PROHIBITED.
You must have explicit permission to access or configure this device.
All activities performed on this device are logged and violations of	
this policy will be prosecuted under all applicable	statutes plus
all applicable civil rules for damages.
======================================================================
Use your MAIS credentials to authenticate on your first login.	
Special characters allowed in password: ~ @ # _ ^ * % / . + : ; =	
Please, don't use diacritics or UNICODE characters in password !	
======================================================================
This server is primarily designed for use while attending Basics of	
algorhitmization and programming subject on KPI.
Course site : https://kurzy.kpi.fei.tuke.sk/zap/

cvicenie@zap.fei.tuke.sk's password:
Enter ldap login: ab123xy
Enter ldap password:
Vsetko v poriadku, prihlaste sa znova pod svojim ldap kontom
Connection to zap.fei.tuke.sk closed.

Upozornenie

Wi-Fi sieť TUNET-guest nepodporuje pripojenie prostredníctvom ssh. Pripojte sa prostredníctvom siete eduroam. Viac info nájdete tu.

Krok 3: Prvé príkazy

Úloha 3.1

Ak ste tak ešte neurobili, prihláste sa na server zap.fei.tuke.sk s Vašim univerzitným loginom a heslom alebo si spustite virtuálny stroj.

Úspešné prihlásenie na vzdialený server vyzerá nasledovne:

login as: ab123xy

$$\   $$\ $$$$$$$\ $$$$$$\  ==========================================
$$ | $$  |$$  __$$\\_$$  _| Katedra pocitacov a informatiky
$$ |$$  / $$ |  $$ | $$ |   Fakulta elektrotechniky a informatiky
$$$$$  /  $$$$$$$  | $$ |   Technicka univerzita v Kosiciach
$$  $$<   $$  ____/  $$ |   ==========================================
$$ |\$$\  $$ |       $$ |   Department of Computers and Informatics
$$ | \$$\ $$ |     $$$$$$\  Faculty of Electrical Engineering and Informatics
\__|  \__|\__|     \______| Technical University of Kosice
======================================================================
UNAUTHORIZED ACCESS TO THIS NETWORK DEVICE IS PROHIBITED.
You must have explicit permission to access or configure this device.
All activities performed on this device are logged and violations of	
this policy will be prosecuted under all applicable	statutes plus
all applicable civil rules for damages.
======================================================================
Use your MAIS credentials to authenticate on your first login.	
Special characters allowed in password: ~ @ # _ ^ * % / . + : ; =	
Please, don't use diacritics or UNICODE characters in password !	
======================================================================
This server is primarily designed for use while attending Basics of	
algorhitmization and programming subject on KPI.
Course site : https://kurzy.kpi.fei.tuke.sk/zap/

ab123xy@zap.fei.tuke.sk's password:

ab123xy@zapfei:~$

Úloha 3.2

Porozhliadajte sa vo Vašom domovskom adresári. Zistite, čo sa nachádza v koreňovom adresári a ako sa volá Váš domovský adresár.

Môžete použiť nasledujúce príkazy:

  • ls listuje obsah adresára
  • pwd napíše názov aktuálneho adresára
  • mkdir nazov vytvorí nový adresár
  • cd nazov zmení aktuálny adresár na iný (podadresár)
  • rmdir nazov zmaže adresár (pre prázdny adresár)
  • rm -r nazov zmaže adresár (pre neprázdny adresár)

Ako argumenty príkazov využite názvy špeciálnych adresárov, ako napr.:

  • / hlavný adresár
  • ~ domovský adresár
  • . aktuálny adresár
  • .. adresár o úroveň vyššie

Úloha 3.3

Naučte sa pracovať s históriou.

  • Žiadny príkaz nie je nutné písať dvakrát! Aj keď sa to nezdá na prvý pohľad, práca s príkazovým riadkom je ľahká, rýchla a intuitívna.
  • Stlačte šípku hore a dole a pozrite si zoznam posledných príkazov, ktoré ste napísali. Môžete si vyvolať predošlý príkaz a upraviť ho na nejaký iný.
  • Príkaz history vypíše všetky posledné zadané príkazy.

Úloha 3.4

Ako sa volal ten dvojpísmenkový príkaz na l? A čo to bol za adresár, ktorý bol o úroveň vyššie? Naučte sa pracovať s dopĺňaním názvov príkazov a súborov.

  • Klávesa TAB Vám vie často napovedať a ponúknuť možnosti, ktoré máte.
  • Napíšte začiatočné písmeno názvu príkazu alebo súboru a pomocou TAB doplňte celý názov.
  • Napr.: l+TAB vypíše všetky príkazy, ktoré sa začínajú na l a ponúkne ten prvý, cd /home/+TAB vypíše všetky adresáre v /home a ponúkne ten prvý. Opakované stlačenie TAB ponúkne ďalšiu možnosť.

Úloha 3.5

Naučte sa, ako získať pomoc v príkazovom riadku.

  • Každý príkaz obsahuje vstavanú nápovedu.
  • Ak do príkazového riadku zadáte man prikaz, zobrazí sa manuálová stránka k príkazu prikaz, ktorá obsahuje opis činnosti príkazu a jeho argumenty.
  • Prezeranie manuálovej stránky ukončíte klávesou q.
  • Pri príkaze viete často využiť argument --help alebo -? pre zobrazenie stručnej nápovedy.

Úloha 3.6

Posledná pomoc je opakom prvej pomoci. Čo robiť, ak som zúfalý/á a vôbec neviem, čo mám robiť?

Využiť môžete nasledovné záchranné postupy:

  • Ctrl+C ukončí práve vykonávaný príkaz.
  • Ctrl+D ukončí vstup alebo odhlási zo systému.
  • Ctrl+Z dá príkaz na pozadie.
  • fg 1 vie dať príkaz opäť do popredia.
  • Google má odpoveď na každú otázku (aj Váš kolega alebo cvičiaci).

Krok 4: Adresáre a súbory

Veľká časť práce v príkazovom riadku spočíva v manipulácii so súbormi a adresármi. Môžete použiť nasledujúce príkazy:

  • mkdir nazov vytvorí nový adresár
  • rmdir nazov zmaže adresár (pre prázdny adresár)
  • rm -r nazov zmaže adresár (pre neprázdny adresár)

Každý príkaz akceptuje ako argument meno adresára. Nezabúdajte, že existujú špeciálne mená pre Váš domovský adresár, aktuálny adresár a adresár o úroveň vyššie.

Úloha 4.1

Vytvorte adresár ~/labs, do ktorého budete ukladať prácu na cvičeniach.

Je dobré, ak je Vaša práca dobre zorganizovaná, aby ste sa v tom nestratili:

  • Overte existenciu nového adresára pomocou ls a prejdite do nového adresára pomocou cd.
  • Overte aktuálny adresár pomocou pwd.

Úloha 4.2

Pre poriadok si vo Vašom adresári labs vytvorte adresár, do ktorého si budete dávať výsledky práce na tomto cvičení.

  • V adresári labs vytvorte adresár lab01 a prejdite doňho.
  • Nezabúdajte na využívanie histórie a doplňovania.
  • Overte si, či ste naozaj v tomto adresári pomocou pwd.

Krok 5: Textový editor ViM a prvý program

Zdrojové kódy si môžeme predstaviť ako príbeh v špeciálnom jazyku. Textový editor slúži na vytváranie a zmenu textových súborov.

Úloha 5.1

Spustite textový editor ViM a vytvorte prázdny súbor hello.c.

vim hello.c

Úloha 5.2

Pozrite si vstavanú pomoc a ukončite editor.

Editor ViM pracuje v módoch. Mód, do ktorého ste sa dostali po otvorení editora, je príkazový mód, v ktorom zadávate príkazy stlačením kláves. Nebuďte teda prekvapení, že sa nespráva podľa Vášho očakávania.

  • Príkazom :tutorial môžete spustiť interaktívny tutoriál. Pozrite si tutoriál a vyskúšjte si pohyb po texte pomocou kláves hjklwb.
  • Príkazom :help zobrazíte pomoc k zadanému príkazu.
  • Napr. :help h napíše pomoc k príkazu h.
  • Textový editor ukončíte príkazom Shift+Z+Z alebo :q.

Úloha 5.3

Napíšte Váš prvý kód programu, ktorý vypíše na obrazovku pozdrav Hello world!

  • Opäť naštartujte editor a vytvorte súbor hello.c.
  • Do vkladacieho módu sa dostanete príkazom i (vkladá na aktuálne miesto) alebo A (vkladá na koniec riadka).
  • Naspäť do príkazového módu sa vždy dostanete pomocou ESC.
  • Do súboru napíšte kód:
#include <stdio.h>

int main() {
    printf("Hello world!\n");
    return 0;
}

Poznámka

Odporúčame tento text naozaj prepísať, nie kopírovať. Prácu s editorom je potrebné si precvičiť a je dôležité, aby ste vedeli polohu špeciálnych znakov na klávesnici (ako je napr. #).

Poznámka

Ak sa pri písaní stratíte a neviete, v ktorom móde editora ste, stlačte ESC a znovu sa prepnite do vkladacieho módu pomocou i.

Poznámka

Súbor uložíte príkazom :w. Súbor uložíte a skončíte príkazom :wq. Súbor ukončíte bez uloženia pomocou :q!.

Upozornenie

Nepoužívajte numerickú klávesnicu!

Upozornenie

Používajte anglickú klávesnicu - uľahčíte si písanie špeciálnych znakov.

Krok 6: Preklad a spustenie prvého programu

Vyskúšajte si proces zostavenia a spustenia prvého programu v jazyku C.

Úloha 6.1

Preložte Váš program.

  • Najskôr si pomocou ls a pwd overte Váš aktuálny adresár a jeho obsah. Mal by sa tam nachádzať súbor hello.c.
  • Príkazom cat si viete vypísať obsah textového súboru.
  • Program preložíte príkazom gcc:
gcc hello.c
  • Prekladač vezme zdrojový kód a preloží ho do spustiteľnej podoby.
  • Zistite, ako sa volá výsledný spustiteľný súbor.

Úloha 6.2

V prípade, že ste sa pomýlili pri prepise kódu, prekladač vypíše chybové hlásenie. Chybové hlásenie pozostáva z čísla riadku, kde sa chyba nachádza, a z opisu chyby. Pokúste sa mu porozumieť, otvorte si zdrojový kód, nájdite chybu a opravte ju.

Úloha 6.3

Preložte Váš program a priraďte mu meno.

  • Prekladaču musíte povedať, ako sa má volať Váš spustiteľný súbor pomocou prepínača -o.
  • Ak je Váš zdrojový kód v poriadku, preložte ho a priraďte mu vhodné meno (napr. hello).
  • V Unixe sa spustiteľné súbory nerozlišujú podľa prípony, takže názov bude bez typickej prípony .exe:
gcc hello.c -o hello
  • Ak bol preklad úspešný, v adresári pribudol spustiteľný súbor hello.
  • Výsledný program spustíte pomocou príkazu:
./hello

Doplňujúce úlohy

Úloha A.1

Upravte kód a zjednodušte si prácu prekladom priamo z editora ViM.

Editujte Váš zdrojový kód tak, že napríklad zmeníte text, ktorý sa má vypísať na obrazovku. Uložte súbor:

:w

Pre prácu s príkazovým riadkom nemusíte opúšťať editor ViM. V editore môžete pracovať s príkazovým riadkom pomocou :!. Preložte program priamo z editora v príkazovom móde:

:!gcc hello.c -o hello

V prípade úspešného prekladu program môžete program spustiť priamo z ViM. V editore môžete pracovať s príkazovým riadkom pomocou :!. V príkazovom móde napíšte:

:!ls

Zobrazia sa súbory v aktuálnom adresári. Pre spustenie Vášho programu napíšte:

:!./hello

Poznámka

Nezabúdajte, že po stlačení dvojbodky viete využívať históriu a dopĺňanie názvov príkazov a súborov. Žiaden príkaz nemusíte písať dvakrát.

Úloha A.2

Naštudujte si Problem Set 0 pre nastavenie virtuálneho prostredia na Vašom počítači. Ide o grafické prostredie OS Linux, ktoré obsahuje nastavenia potrebné pre absolvovanie tohto predmetu.

Úloha A.3

Nainštalujte si plugin, ktorý rozšíri možnosti editora ViM na prácu s GIT. Plugin nájdete na adrese https://github.com/tpope/vim-fugitive. Zíde sa Vám to neskôr pri niektorých zadaniach.

Úloha A.4

Vytvorte si vlastný konfiguračný súbor pre ViM. Konfiguračný súbor môžete založiť na príklade Tomášovho konfiguráku pre ViM alebo Danielovho konfiguráku pre ViM.

Doplňujúce zdroje

  1. Náš VIM tutoriál
  2. ViM hra https://vim-adventures.com/
  3. Online ViM interaktívny tutoriál http://www.openvim.com/
  4. Interaktívny tutoriál: Príkaz :tutor
  5. ViM Quick Reference Card (.pdf)
  6. Tomášov konfigurák pre ViM
  7. Danielov konfigurák pre ViM

Video