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 |
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
- 596