Unix/Linux

Časť 3

O čom budeme hovoriť

  • opakovanie
  • pokročilejšie príkazy
  • kombinácie príkazov
  • zopár tipov a trikov pre terminál
  • história

Opakovanie

  • 1970 (unixová epocha)
  • Thompson, Kernighan, Ritchie, McIlroy, Ossanna
  • C, teória jazykov a programovania
  • malé jadro, malé programy, ľahko kombinovateľné (LEGO)
  • 1970 - 1983: licencovaný každému, kto požiadal
  • 1984: začína sa predávať
  • 1984: RMS zakladá GNU (zrod open source)
  • 1991: Linus Torvalds vytvára Linux

Opakovanie

man manuál k príkazom (nielen)
ls vylistovanie obsahu adresáru
cd zmena aktuálneho adresáru
pwd zobrazí cestu k aktuálnemu adresáru
touch vytvorí súbor/zmení čas prístupu
mkdir vytvorí adresár
rmdir zmaže prázdny adresár
rm zmaže súbory a adresáre
cp kopíruje súbory a adresáre

Opakovanie

cat vypíše celý obsah súboru
head vypíše prvých 10 riadkov súboru
tail vypíše posledných 10 riadkov
more "stránkuje" výpis
less "more" na steroidoch
ln vytváranie liniek a symbolických liniek

Pokročilejšie príkazy

Pokročilejšie príkazy

find hľadanie súborov
grep vypíše riadky vyhovujúce vzoru
awk jazyk pre hľadanie a spracovávanie vzorov

Príkaz find

Hľadanie súborov podľa rôznych kritérií a vykonávanie operácií nad nimi

find [parametre] odkiaľ výraz(y)
  • parametre riešia debugovanie a spôsob prístupu k symbolickým linkám (môžeme ponechať default)
  • odkiaľ - jeden alebo viac adresárov (oddelených medzerou), odkiaľ sa začína hľadanie
  • výraz(y) - jeden alebo viac výrazov, ktoré určujú kritériá a/alebo akcie s nájdenými súbormi

Príkaz find

find [parametre] odkiaľ výraz(y)

Výrazy majú viacero kategórií

  • testy - vracajú true alebo false podľa toho, či im súbor vyhovuje
  • akcie - robia vedľajšie efekty a vracajú true alebo false
  • operátory - vedia spájať viaceré výrazy, default je -a (AND)
  • globálne nastavenia - ovplyvňujú všetky výrazy
  • pozičné nastavenia - ovplyvňujú výrazy uvedené neskôr

Príkaz find

Užitočné testy

-name vzor názov vyhovuje vzoru, funguje *, ? a [] (ale musia byť použité úvodzovky)
-user meno súbory patriace používateľovi
-group meno súbory patriace skupine
-iname vzor ako -name, ale ignoruje veľkosť písmen
-size +/-veľkosť súbor je väčší/menší ako n jednotiek. Jednotky: c, k, M, G
-ctime n súbor bol naposledy zmenený pred n hodinami

Príkaz find

Užitočné akcie

-delete zmaže súbor
-print vypíše názov súboru
-exec príkaz ; vykoná nad súborom príkaz, "{}" zastupuje názov súboru
-ls vypíše štatistiky k súboru

Príkaz find

# nájde a vypíše všetky JS súbory v aktuálnom adresári a hlbšie
find . -name '*.js' -print

# nájde a zmaže všetky JS súbory
find . -name '*.js' -delete

# nájde a vypíše všetky súbory patriace userovi www-data
find . -user www-data -print

# nájde všetky log súbory väčšie ako 1 GB
find projekt/var/log -size +1G -print

# nájde a vypíše obsah všetkých yaml súborov v adresári config
find config -name '*.yaml' -exec cat {} \;

Príkaz grep

Vypíše riadky vyhovujúce vzoru

grep [parametre] vzor súbor(y)
-r prehľadáva adresáre
-e vzor je regulárny výraz, -P pre perl-regex
-i ignoruj veľkosť písmen
-v invertuj vyhľadávanie (vráti nevyhovujúce riadky)
--color vyfarbi nájdený vzor vo výsledkoch
-l vypíš iba názvy súborov, kde sa našla zhoda

Užitočné parametre

Príkaz grep

# nájdi slovo "function" v súbore src/Domain/Entity/Cv.php
grep function src/Domain/Entity/Cv.php

# nájdi všetky výskyty slova "Factory" v adresári src
grep -r Factory src/

# to isté, ale ignoruje veľkosť písmen
grep -r -i Factory src

# zobraz iba názvy súborov,  vktorých sa našiel výskyt
grep -l -r -i Factory src

Príkaz awk

Príkaz Jazyk pre hľadanie a spracovávanie vzorov

Švajčiarsky nožík, ktorý ja používam iba na filtrovanie v súboroch

# vypíše tretie slovo na každom riadku v súbore dev.log
awk {'print $3'} projekt/var/log/dev.log

# Vypíše piaty "blok" určený dvojbodkou
awk -F : {'print $5'} projekt/var/log/dev.log

Kombinovanie príkazov

Presmerovania

> výstup do súboru (prepíše existujúci)
>> výstup do súboru (pripojí do existujúceho)
< vstup zo súboru
2> errorový výstup do súboru
2>> errorový v ýstup do súboru
2>&1 errorový výstup na štandardný výstup
príkaz operátor súbor

Operátory

Presmerovania

príkaz operátor súbor
príkaz > súbor

príkaz >> súbor

príkaz 2> súbor-pre-chyby

príkaz < vstupný-súbor

príkaz < vstupný súbor > výstupný súbor

príkaz > súbor 2> súbor-pre-chyby

príkaz 2>&1 > súbor

Presmerovania

File descriptor

0 stdin - štandardný vstup
1 stdout - štandardný výstup
2 errout - štandardný errorový výstup

Presmerovania

/dev/null

Špeciálny súbor, ktorý slúzi ako čierna diera.

  • Čokoľvek sa tam zapíše, tak nenávratne zmizne.
  • Čokoľvek sa odtiaľ snaží čítať, tak dostane len znak EOF (end-of-file)

Užitočné na presmerovanie (chybových) výstupov, ktoré nás nezaujímajú

Operáror |

Pipe, pajpa, rúra

Presmerováva výstup (stdout) jedného programu na vstup (stdin) druhého.

príkaz1 | príkaz 2
ls -l | more

tail -f /var/log/apache2/error.log | grep Fatal

Tipy a triky pre terminál

Užitočné klávesové skratky

CTRL+C ukončenie behu programu (SIGINT)
CTRL+Z skrytie programu do pozadia a uvoľnenie terminálu, opätovné zobrazenie príkazom "fg"
CTRL+L vyčistenie obrazovky terminálu (to isté, ako príkaz "clear")
CTRL+U zmazanie všetkého od pozície kurzora po začiatok riadku
CTRL+K zmazanie všetkého od pozície kurzora po koniec riadku
ALT+B skok kurzora o jedno "slovo" dozadu
ALT+F skor kurzora o jedno "slovo" dopredu

Tipy na emulátory terminálu pre Linux

  • terminator
    • taby, panely
  • terminology
    • panely
    • moderný terminál
    • zobrazuje obrázky a prehráva video
    • krásne grafické efekty
  • alacritty
    • moderný a rýchly (rendrovaný cez GPU)
    • konfigurácia cez YAML

História

X

V, W, X

  • 1984: grafický/okenný subsystém pre Unix
  • vyvinutý v MIT
    • Bob Sheifler
    • Jim Gettys
  • MIT licencia
  • klient-server architektúra
  • server a klient nemusia bežať na tom istom počítači

X

X-ká poskytujú:

  • GUI prostredie pre vykresľovanie a pohyb okien
  • ich interakciu s myšou a klávesnicou

X-ká neposkytujú:

  • user interface (dekorácie okien, taskbar, menu, widgety...)

Prečo?

  • program má robiť iba jednu vec a robiť ju dobre
  • komplikovanejšie úlohy dosahujeme kombináciou programov
  • jednotlivé programy sú ľahko nahraditeľné

Unix filozofia

Okenný manažér

Poskytuje:

  • user interface (dekorácie okien, taskbar, menu, widgety...)
  • je ich neskutočne veľa
  • zväčša sú vysoko konfigurovateľné
  • takže na prvý pohľad počítače dvoch používateľov môžu vyzerať úplne inak

Ďakujem za pozornosť

Debian/Ubuntu príkazy

  • apt
  • apt-get
  • aptitude

Unix/Linux, časť 3

By Milan Herda

Unix/Linux, časť 3

  • 580