Newer
Older
<Note type="tip" label>
Ez a fejezet sok fogalmat tartalmaz, kérlek **_ne_** magold be ezeket.
Csupán annyi a célja a fejezetnek, hogy akik nemigazán
használtak CLI-t, azoknak bemutasson pár alapelemet.
A fő cél, hogy értsd, tudd használni; nem az, hogy tudd a definíciókat.
</Note>
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
### CLI
**C**ommand **L**ine **I**nterface,
egy felhasználói felület, ami alapvetően szövegesen kommunikál a userrel.
Szöveg be → szöveg ki.
Ennél sokkal bővebben nem hiszem,
hogy bárkinek is be kell mutatni, hogy mit jelent.
### Terminál
Ez jeleníti meg a karaktereket és adja meg a programnak a beírt karaktereket.
Régebben külön céleszközök voltak, ma már programok.
Miki: ide rizsa pls
### Shell
Egy olyan CLI program, amibe parancsokat lehet bepötyögni és a shell
a megfelelő programokat elindítva és összekapcsolva<sup>(erről később lesz szó)</sup>
lefuttatja azt.
Miki: ide is
### Pár ismertebb shell
#### `sh`
[Bourne shell](https://en.wikipedia.org/wiki/Bourne_shell)
(a készítőjének neve után) vagy
[POSIX shell](https://en.wikipedia.org/wiki/Unix_shell)
Egy butább shell, ami megtalálható minden UNIX-szerű számítógépen.
Jó régen, az eredeti UNIX-hoz hozták létre a Bourne shell-t, ami később
[bővítve](https://en.wikipedia.org/wiki/KornShell), majd specifikálva lett a
[POSIX](https://en.wikipedia.org/wiki/POSIX) szabványban.
#### `bash`
**B**ourne-**a**gain **sh**ell, dupla szójáték. 😉
A [bash](https://en.wikipedia.org/wiki/Bash_(Unix_shell)) az alapértelmezett shell a Linux disztribúciók
túlnyomó többségén. Később ezzel fogunk dolgozni.
Kellően okos és többnyire elvárható, hogy ott legyen mindenhol, ahova beléptek.
A hatalmas elterjedtsége (és nagy kompatibilitása) miatt esett erre a választás.
#### `zsh`
[zsh](https://en.wikipedia.org/wiki/Z_shell) vagy Z shell.
Gyakorlatilag a bash kibővítése,
a legtöbb Linuxos disztrón csomagkezelővel telepíthető,
emellett macOS-en alap shell. Minden bash parancs működik itt is,
de nem minden zsh parancs működik bash-ben.
#### `fish`
[fish](https://en.wikipedia.org/wiki/Fish_(Unix_shell)),
**f**riendly **i**nteractive **sh**ell.
Különlegessége, hogy kifejezetten felhasználóbarátnak van tervezve,
alapbeállításokkal is nagyon kényelmes használni.
Azonban *nem* POSIX shell, vagyis a következőekben bemutatott parancsok
nem feltétlenül működnek benne.
<Note type="warning" label>
Innentől bash-ről lesz szó. Ha olyat olvasol, hogy
"írjuk be a shellünkbe", akkor ott a "bashünkre" gondolunk.
</Note>
### Hogy is néz ki?
TL;DR: sokféleképpen.
Például sok helyen így néz ki az alap beállításokkal:
```
[mike@thinkyboi ~]$ ls *.pdf
mozilla.pdf
[mike@thinkyboi ~]$ ls *.txt
asd.txt ize.txt metrics.txt pcr2.txt pcrtouse.txt pcr.txt
[mike@thinkyboi ~]$ ls *.txt | grep rt
pcrtouse.txt
[mike@thinkyboi ~]$
```
Ez mit is mutat?
- `[mike@thinkyboi ~]$`: a prompt
- mutatja, hogy a `mike` user van belépve
- a `thinkyboi` nevű számítógépre
- éppen a `~` mappában vagyunk
- sima user jogosultságokkal `$`
- `ls *.pdf`: egy parancs, ami minden .pdf végű fájlt kilistáz
- `ls *.txt`: egy parancs, ami minden .txt végű fájlt kilistáz
- `ls *.txt | grep rt`: egy parancs, ami minden .txt végű fájlt kilistáz, mely nevében megtalálható az "rt"
Ne ijedjünk meg az ismeretlen fogalmaktól, erről mind lesz szó bővebben.
### Pár shelles fogalom
#### Mi a parancs?
#### Redirekció `>`
#### Pipe `|`
#### Shell execution
#### Manual page `man`
#### [Egyéb hasznos shell cuccok](https://devhints.io/bash)
A különböző programokat nevezzük csomagoknak (package), melyek
a bináris fájlon kívül különböző konfigurációs fájlokat és
a program más programoktól való függőségeit is tartalmazza.
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
A programok telepíthetjük [kézzel](http://www.linuxfromscratch.org/lfs/downloads/stable/LFS-BOOK-10.1.pdf) (8.2-es fejezet), de ez
általában nehézkes művelet és nem valami hatékony,
ezért csomagkezelőt (package maganer) szoktunk használni a csomagok
telepítéséhez. A csomagkezelő egy egyszerű program, mellyel telepíthetünk,
frissíthetünk, eltávolíthatunk és kereshetünk csomagokat.
Mi az apt nevű csomagkezelőt fogjuk használni a továbbiakban.
```
[patrik@patrik-laptop ~]$ sudo apt update
[patrik@patrik-laptop ~]$ sudo apt search cowsay
[patrik@patrik-laptop ~]$ sudo apt install cowsay
[patrik@patrik-laptop ~]$ sudo apt upgrade
[patrik@patrik-laptop ~]$ sudo apt remove cowsay
```
Az `apt update` paranccsal frissíthetjük az apt adatbázisát, mely a
csomagok elérhetőségéről tárol adatokat.
Az `apt search a_csomag_neve` paranccsal a csomagkezelő megkeresi a
hasonló nevű csomagokat és kilistázza azokat.
Az `apt install a_csomag_neve` paranccsal a megadott csomagot telepíti a
csomagkezelő, ha azt megtalálja.
Az `apt upgrade` paranccsal a telepített csomagokhoz elérhető frissítéseket
telepíti a csomagkezelő.
Az `apt remove a_csomag_neve` paranccsal a megadott csomag távolítható el.
A különböző Linux disztribúciók különböző csomagkezelőket használnak, ilyenek például
az alábbi táblázatban található csomagkezelők is. Néhány csomagkezelő disztribúcióhoz van kötve,
azonban egyre jobban kezdenek elterjedni a disztribúcióktól független csomagkezelők is.
- `apt` Debian és Ubuntu alapú disztrókon
- `dnf` Fedora
- `pacman` Arch Linux
- `flatpak` és `snap` disztrófüggetlen
| parancs | apt | dnf | pacman | snap | flatpak |
|---|---|---|---|---|---|
| telepítés | install | install | -S | install | install |
| adatbázis frissítése | update | check-update | -Sy | automatikus | a frissítéssel együtt ez is megtörténik (update) |
| frissítés | upgrade | upgrade | -Syu | automatikus (ha kézzel akarod: refresh) | update |
| törlés | remove | remove | -R | nincs ilyen | nincs ilyen |
| törlés beállításokkal | purge | nincs ilyen | -Rn | remove | uninstall |
| keresés | search | search | -Ss | find | search |
### [Könyvtárak](https://www.linux.com/training-tutorials/linux-filesystem-explained/)
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
```
[patrik@patrik-laptop ~]$ tree -L 1 /
/
├── bin -> usr/bin
├── boot
├── dev
├── etc
├── home
├── lib -> usr/lib
├── lib64 -> usr/lib
├── lost+found
├── mnt
├── opt
├── proc
├── root
├── run
├── sbin -> usr/bin
├── srv
├── sys
├── tmp
├── usr
└── var
```
#### root `/`
#### home `/home`
#### konfigurációs fájlok `/etc`
#### `/var`
#### `/usr`
#### `/lib`
A UNIX permission rendszer elemei:
- user-ek
- group-ok
- módok
Mindezek számok alapján vannak tárolva,
de a programok okosan feloldják nevekre ezeket.
Egy user az pont ugyanaz, mint aminek elképzelted,
egy felhasználó, aki tud programokat futtatni.
Egy különleges felhasználó a `root`, ő a főfelhasználó,
az ő nevében lehet csak a rendszerbeállításokat módosítani.
Minden userhez tartozik egy ugyanolyan nevű group is, azonban egy
user több groupban is benne lehet.