Unix/Linux

Časť 1

O čom budeme hovoriť

  • počiatky Unixu
  • základné príkazy pre terminál
  • unixová filozofia
  • ďalšie príkazy pre terminál
  • terminál?

História

  • Ken Thompson
  • Dennis Ritchie
  • Brian Kernighan
  • Douglas McIlroy
  • Joe Ossanna
  • ...

Bell Labs (AT&T)

Multics

Multiplexed Information and Computing Service

  • začiatok vývoja: 1964
  • Bell Labs opúšťa projekt v 1969

Dobré ciele a inovatívne nápady.

  • veľký a komplexný systém
  • vývojári boli frustrovaní

Unics

Uniplexed Information and Computing Service

Unics Unix

  • 1970 (1969)
  • vyvíjaný ako systém pre programátorov
  • pôvodne napísaný v assembleri pre PDP-7
  • neskôr sa portoval na PDP-11 (stále assembler)
  • Thompson skúšal utility písať v B, ale boli pomalé
  • 1972: Ritchie vytvoril jazyk C
  • 1974: prepis jadra Unixu do C

Video: Unix na zrekonštruovanom PDP-7

https://www.youtube.com/watch?v=pvaPaWyiuLA

Unix

  • 1969: AT&T dostalo súdny zákaz vstupu do počítačového biznisu

  • Unix museli poskytnúť a licencovať každému, kto o to požiadal

  • super populárny v 70.tych a 80.tych rokoch
  • vznikalo mnoho univerzitných a komerčných odnoží

Unix

  • malé jadro
  • hierarchický filesystém
  • ukladanie dát a konfigurácie v plain texte
  • k zariadeniam a IPC sa pristupuje ako k súborom
  • malé programy na jedno použitie
  • CLI (shell)
  • štandardné "prúdy" (stdin, stdout, stderr)
  • pipes

Prax

Základné príkazy

Príkazy sú programy

Spustíme terminál

Základné príkazy (časť 1)

  • man
  • ls
  • cd
  • pwd
  • touch
  • mkdir
  • rmdir
  • rm
  • cp

Príkaz man

Zobrazí manuál k nainštalovanému programu, knižnici, systémovému volaniu...

man [sekcia] príkaz

Pokiaľ nezadáte sekciu a "príkaz" má manuálové stránky vo viacerých sekciách, tak sa prehľadáva v poradí* a zobrazí sa prvá nájdená.

* poradie viete zmeniť

Príkaz man

Ovládanie manuálu:

q opustenie manuálu
šípky, PgUp, PgDown pohyb po texte
/text<Enter> Hľadanie textu (smerom dole)
?text<Enter> Hľadanie textu (smerom hore)
/<Enter> opakovanie hľadania (smerom dole)
?<Enter> opakovanie kľadania (smerom hore)
h zobrazenie nápovedy pre ovládanie manuálu

Príkaz man - cvičenie

  • zobrazte manuál pre príkaz man
  • nájdite odstavec DEFAULTS
  • zobrazte si nápovedu pre ovládanie man stránok
  • vypnite nápovedu
  • vypnite man

Malý "manuál"

Väčšina programov akceptuje pri volaní parametre --help a/alebo -h

Ak boli uvedené, tak namiesto normálneho spustenia program vypíše len svoju základnú nápovedu k používaniu.

Príkaz ls

Vypíše obsah adresára

# výpis pre aktuálny adresár
ls

# ukáž aj "skryté" súbory
ls -a

# ukáž detaily
ls -l

# ukáž detaily + "skryté"
ls -l -a
ls -a -l
ls -al
ls -la

# ukáž, čo je v /etc
ls /etc

# farebne odlíš typ súborov
ls --color /etc

Nielen aktuálneho, vieme mu povedať, ktorý adresár nás zaujíma

Pre všetky príkazy platí

Ak cesta nezačína lomítkom, tak sa berie ako relatívna od aktuálneho pracovného adresára.

Špeciálny prípad: ak začína znakom ~, tak to je skratka pre plnú cestu k domovskému adresáru používateľa

  • ~ - môj domovský adresár
  • ~fero - ferov domovský adresár
  • ~root - domovský adresár pre administrátora
  • dajte si vypísať obsah /tmp
  • dajte si vypísat obsah aktuálneho adresára (aj so skrytými súbormi a detailným výpisom)
  • zistite, ako sa dá alfabeticky zotriediť výpis príkazu ls podľa prípony súborov

Príkaz ls - cvičenie

Príkaz cd

Prepne aktuálny pracovný adresár

Ak nedostane cieľový adresár ako argument, tak default hodnota je domovský adresár používateľa

Ak sa ako parameter zadá -, tak sa vráti do predchádzajúceho adresáru.

# prepne CWD na /var/log
cd /var/log

# prepne na /etc
cd /etc

# návrat späť na /var/log
cd -

# domovský adresár
cd

Príkaz cd - cvičenie

  • prepnite sa do adresáru /usr/bin
  • prepnite sa do svojho domovského adresáru
  • prepnite sa späť do adresáru /usr/bin
  • cd má okrem - ešte jeden špeciálny typ argumentu, aký to je?

Príkaz pwd

Zobrazí plnú cestu k aktuálnemu pracovnému adresáru

pwd

K čomu to je dobré?

K programovaniu/skriptovaniu

Ak budete potrebovať zistiť, kde sa práve nachádzate, tak viete, že to zistíte volaním programu pwd

Príkaz touch

Vytvorí prázdny súbor alebo zmení čas prístupu a modifikácie pre už existujúci súbor.

# vytvor súbor abc
touch abc

# vytvor súbor v adresári /tmp
touch /tmp/test.php

Príkaz mkdir

Vytvorí nový adresár

# vytvor adresár test-dir v domovskom adresári používateľa
mkdir ~/test-dir

# vytvorí celú cestu adresárov, ak treba
mkdir -p ~/test-dir/foo/bar/baz

S parametrom -p vytvorí aj všetky medziadresáre, ak neexistujú

Príkazy touch a mkdir - cvičenie

  • ~/test-projekt/
    • cvicenie-1/
      • podadresar-1/
        • subor1.txt
        • subor2.php
        • log-adresar/
          • app.log
    • cvicenie-2/
    • cvicenie-3/

Vytvorte nasledovnú adresárovú štruktúru aj so súbormi

Bez toho, aby ste opustili aktuálny adresár!

Unixová filozofia

Zoznam noriem a filozofických prístupov pre vytváranie softvéru

Cieľom je mať minimalistický a vysoko modulárny systém

Unixová filozofia

  • tvorte malé programy, ktoré robia jednu vec, ale robia ju dobre
  • nepridávajte nové vlastnosti, radšej urobte nový program pre novú vec
  • výstup jedného programu môže byť vstupom pre iný
  • píšte programy pracujúce s textom
  • preferujte kompozíciu
  • preferujte čitateľnosť
  • programy nech sú rozšíriteľné
  • ak má byť niečo zložité, nech sú to dáta
  • znalosti nech sú uložené v dátach, aby bol program jednoduchý

Unixová filozofia

Prax

Základné príkazy - pokračovanie

Príkaz rmdir

Zmaže prázdny(!) adresár/e

# zmaž ~/test-projekt/cvicenie-3 
rmdir ~/test-projekt/cvicenie-3

# zmaž cvicenie 2 a 3
rmdir ~/test-projekt/cvicenie-2 ~/test-projekt/cvicenie-3

# zmaž aj rodičovské adresáre, ak ostanú prázdne
rmdir -p ~/test-projekte/cvicenie-3

Príkaz rmdir - cvičenie

  • Vytvorte adresár ~/test-projekt/cvicenie-4/
  • Zmažte ho
  • Vytvorte adresár ~/test-projekt/cvicenie-5/foo/bar/
  • Zmažte adresár bar a aj rodičovské adresáre, ak ostanú prázdne

Príkaz rm

Maže súbory aj adresáre.

-i spýtaj sa na potvrdenie každého zmazania
-f nepýtaj sa potvrdenia
-d zmaž prázdny adresár (ako rmdir)
-r zmaž rekurzívne obsah celého adresáru a aj adresár

Dôležité parametre

rm [parametre] zoznam vecí na zmazanie

rm -rf /

Príkaz rm - cvičenie

  • Vytvorte súbor ~/test-projekt/test-subor.txt
  • Zmažte ho
  • Zmažte celý adresár ~/test-projekt aj s celým obsahom

Príkaz cp

Kopíruje súbory a adresáre

cp [parametre] zoznam vecí na skopírovanie kam
-i spýtaj sa na potvrdenie prípadného prepísania
-f nepýtaj sa potvrdenia
-r skopíruj celý adresár aj s obsahom

Dôležité parametre

Cieľový adresár musí existovať!

Príkaz cp - cvičenie

  • vytvorte adresár ~/test-cp
  • v ňom vytvorte súbory README.md a INSTALL.md
  • skopírujte oba súbory do /tmp
  • skopírujte celý adresár do ~/ pod menom test-cp-2
  • skopírujte súbor INSTALL.md do adresára ~/test-cp/instructions

Adresáre . a ..

  • . - "tento" adresár (nie je to isté ako CWD!)
  • .. - nadradený adresár
# idem o adresár vyššie
cd ..

# ostanem, kde som
cd .

# zobraz obsah o dve úrovne vyššie
ls ../..

Adresáre . a ..

Ak som v /usr/local/bin,

kde budem po spustení:

cd ./../././../lib/../../var/log/./../
  1. /usr/var/log/bin
  2. /usr/var/log
  3. /usr
  4. /var/log
  5. /var
  6. /home
  7. /usr/local/bin

?

/var

Prečo sa terminál volá terminál?

VT 52

Ďakujem za pozornosť

Unix/Linux, časť 1

By Milan Herda

Unix/Linux, časť 1

  • 531