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
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
-
podadresar-1/
- cvicenie-2/
- cvicenie-3/
-
cvicenie-1/
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/./../
- /usr/var/log/bin
- /usr/var/log
- /usr
- /var/log
- /var
- /home
- /usr/local/bin
?
/var
Prečo sa terminál volá terminál?
Ďakujem za pozornosť
Unix/Linux, časť 1
By Milan Herda
Unix/Linux, časť 1
- 668