2.1 Lekcija 2
Sertifikat: |
Linux Essentials |
---|---|
Verzija: |
1.6 |
Tema: |
2 Kretanje kroz Linux sistem |
Cilj: |
2.1 Osnove komandne linije |
Lekcija: |
2 od 2 |
Uvod
Svi šelovi upravljaju skupom informacija o statusu tokom sesija šela. Ove informacije o vremenu izvođenja mogu se promijeniti tokom sesije i utjecati na to kako se šel ponaša. Ove podatke također koriste programi za određivanje aspekata konfiguracije sistema. Većina ovih podataka je pohranjena u takozvanim varijablama, koje ćemo pokriti u ovoj lekciji.
Varijable
Varijabla je kontenjer koji skladišti podatke, kao što su tekst ili brojevi. Jednom postavljena, vrijednosti varijable će se pristupiti kasnije. Varijable imaju ime koje omogućava pristup određenoj varijabli, čak i kada se sadržaj varijable promijeni. Oni su vrlo čest alat u većini programskih jezika.
U većini Linux šelova, postoje dva tipa varijabli:
- Lokalne varijable
-
Ove varijable su dostupne samo trenutnom procesu šela. Ako kreirate lokalnu varijablu i zatim pokrenete drugi program iz ovog šela, varijabla više nije dostupna tom programu. Budući da nisu naslijeđene podprocesima, ove varijable se nazivaju lokalnim varijablama.
- Varijable okruženja
-
Ove varijable su dostupne i u specifičnoj sesiji šela, ali i podprocesima koji su nastali iz te sesije šela. Ove varijable se mogu koristiti za prosljeđivanje konfiguracijskih podataka komandama koje se izvode. Budući da ovi programi mogu pristupiti ovim varijablama, nazivaju se varijablama okruženja. Većina varijabli okruženja je napisana velikim slovima (npr.
PATH
,DATE
,USER
). Skup zadanih varijabli okruženja pruža, na primjer, informacije o korisničkom home direktoriju ili tipu terminala. Ponekad se kompletan skup svih varijabli okruženja naziva environment, odnosno okruženje.
Note
|
Varijable nisu trajne. Kada se šel u kojem su postavljene zatvori, gube se sve varijable i njihov sadržaj. Većina šelova pruža konfiguracijske datoteke, koje sadrže varijable, koje se postavljaju kad god se pokrene novi šel. Varijable koje treba trajno postaviti moraju se dodati u jednu od ovih konfiguracijskih datoteka. |
Manipulacija varijablama
Kao sistem administrator, morat ćete kreirati, modifikovati i uklanjati kako lokalne, tako i varijable okruženja.
Rad sa lokalnim varijablama
Možete postaviti lokalnu varijablu pomoću operatora =
(jednako). Jednostavna dodjela će kreirati lokalnu varijablu:
$ greeting=hello
Note
|
Nemojte stavljati razmak ispred ili iza operatora |
Možete prikazati bilo koju varijablu koristeći komandu echo
. Komanda obično prikazuje tekst u odjeljku argumenata:
$ echo greeting greeting
Da biste pristupili vrijednosti varijable, morat ćete koristiti $
(znak dolara) ispred imena varijable.
$ echo $greeting hello
Kao što se može vidjeti, varijabla je kreirana. Sada otvorite drugi šel i pokušajte prikazati sadržaj kreirane varijable.
$ echo $greeting
Ništa se ne prikazuje. Ovo ilustruje da varijable uvijek postoje samo u određenom šelu.
Da biste potvrdili da je varijabla zapravo lokalna varijabla, pokušajte pokrenuti novi proces i provjerite može li ovaj proces pristupiti varijabli. To možemo učiniti tako što ćemo pokrenuti drugI šel i pustiti ovaj šel da pokrene komandu echo
. Kako se novi šel izvodi u novom procesu, ona neće naslijediti lokalne varijable od svog roditeljskog procesa:
$ echo $greeting world hello world $ bash -c 'echo $greeting world' world
Note
|
Obavezno koristite jednostruke navodnike u gornjem primjeru. |
Da biste uklonili varijablu, morat ćete koristiti komandu unset
:
$ echo $greeting hey $ unset greeting $ echo $greeting
Note
|
|
Rad sa globalnim varijablama
Da bi varijabla bila dostupna podprocesima, pretvorite je iz lokalne u varijablu okruženja. To se radi naredbom export
. Kada se pozove sa imenom varijable, ova varijabla se dodaje u okruženje šela:
$ greeting=hello $ export greeting
Note
|
Opet, uvjerite se da ne koristite |
Lakši način za kreiranje varijable okruženja je kombinovanje obje gore navedene metode, dodjeljivanjem vrijeednosti varijable u dijelu naredbe sa argumentima.
$ export greeting=hey
Provjerimo ponovo da li je varijabla dostupna podprocesima:
$ export greeting=hey $ echo $greeting world hey world $ bash -c 'echo $greeting world' hey world
Drugi način korištenja varijabli okruženja je da ih koristite ispred komandi. Ovo možemo testirati sa varijablom okruženja TZ
koja sadrži vremensku zonu. Ovu varijablu koristi komanda date
da odredi vrijeme koje vremenske zone treba prikazati:
$ TZ=EST date Thu 31 Jan 10:07:35 EST 2019 $ TZ=GMT date Thu 31 Jan 15:07:35 GMT 2019
Možete prikazati sve varijable okruženja koristeći komandu env
.
'PATH' varijabla
Varijabla PATH
je jedna od najvažnijih varijabli okruženja u Linux sistemu. Pohranjuje listu direktorija, odvojenih dvotačkom, koji sadrže izvršne programe, koji su podobni kao naredbe iz Linux šela.
$ echo $PATH /home/user/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
Da biste dodali novi direktorij varijabli, morat ćete koristiti znak dvotačke (:
).
$ PATH=$PATH:new_directory
Evo primjera:
$ echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin $ PATH=$PATH:/home/user/bin $ echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/user/bin
Kao što vidite, $PATH
se koristi u novoj vrijednosti dodijeljenoj PATH
-u. Ova varijabla se rješava tokom izvršavanja komande i osigurava očuvanje originalnog sadržaja varijable. Naravno, možete koristiti i druge varijable u zadatku:
$ mybin=/opt/bin $ PATH=$PATH:$mybin $ echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/user/bin:/opt/bin
Sa PATH
varijablom treba postupati oprezno, jer je ključna za rad na komandnoj liniji. Razmotrimo sljedeću varijablu PATH
:
$ echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Da saznate kako šel poziva određenu komandu, možete pokrenuti komandu 'which' sa imenom komande kao argumentom. Možemo, na primjer, pokušati saznati gdje je nano
pohranjen:
$ which nano /usr/bin/nano
Kao što se može vidjeti, izvršna datoteka nano
nalazi se unutar direktorija /usr/bin
. Uklonimo direktorij iz varijable i provjerimo radi li naredba još uvijek:
$ PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/sbin:/bin:/usr/games $ echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/sbin:/bin:/usr/games
Pogledajmo 'nano' komandu još jednom:
$ which nano which: no nano in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/sbin:/bin:/usr/games)
Kao što se može vidjeti, komanda nije pronađena, dakle nije izvršena. Poruka o grešci također objašnjava razlog zašto komanda nije pronađena i na kojim lokacijama je tražena.
Dodajmo nazad direktorije i pokušajmo ponovo pokrenuti komandu.
$ PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin $ which nano /usr/bin/nano
Sada naša komanda ponovo radi.
Tip
|
Redoslijed elemenata u |
Vođene vježbe
-
Kreirajte lokalnu varijablu 'number'.
-
Kreirajte varijablu okruženja 'ORDER', koristeći gornje metode.
-
Prikažite naziv varijable i njen sadržaj.
-
Koji je opseg prethodno kreiranih varijabli?
Istraživačke vježbe
-
Kreirajte lokalnu varijablu
nr_files
i dodijelite broj linija pronađenih u datoteci/etc/passwd
. Savjet: Pogledajte naredbuwc
i zamjenu komande i ne zaboravite na navodnike. -
Kreirajte varijablu okruženja
ME
. Dodijelite joj vrijednost varijableUSER
-
Dodajte vrijednost varijable
HOME
naME
, s dvotačkom`:`. Prikažite sadržaj varijableME
. -
Koristeći gornji primjer datuma, kreirajte varijablu pod nazivom
today
i dodijelite datum za jednu od vremenskih zona. -
Kreirajte drugu varijablu pod nazivom
today1
i dodijelite joj sistemski datum.
Sažetak
U ovom labu ste naučili:
-
Tipove varijabli
-
Kako se kreiraju varijable
-
Kako manipulisati varijablama
Komande korištene u ovoj vježbi:
env
-
Prikaži varijable okruženja.
echo
-
Prikaži tekst.
export
-
Učini lokanu varijablu dostupnu podprocesima.
unset
-
Ukloni varijablu.
Odgovor na vođene vježbe
-
Kreirajte lokalnu varijablu 'number'.
$ number=5
-
Kreirajte varijablu okruženja 'ORDER', koristeći gornje metode.
$ export ORDER=desc
-
Display both the variable names and their contents.
$ echo number number $ echo ORDER ORDER $ echo $number 5 $ echo $ORDER desc
-
Koji je opseg prethodno kreiranih varijabli?
-
Opseg lokalne varijable
number
je samo trenutna ljuska. -
Opseg varijable okruženja
ORDER
je trenutna ljuska i sve podljuske koje ona generiše.
-
Odgovor na istraživačke vježbe
-
Kreirajte lokalnu varijablu
nr_files
i dodijelite broj linija pronađenih u datoteci/etc/passwd
. Savjet: Pogledajte naredbuwc
i zamjenu komande i ne zaboravite na navodnike.$ nr_files=`wc -l /etc/passwd`
-
Kreirajte varijablu okruženja
ME
. Dodijelite joj vrijednost varijableUSER
$ export ME=$USER
-
Dodajte vrijednost varijable
HOME
naME
, s dvotačkom`:`. Prikažite sadržaj varijableME
.$ ME=$ME:$HOME $ echo $ME user:/home/user
-
Koristeći gornji primjer datuma, kreirajte varijablu pod nazivom
today
i dodijelite datum za jednu od vremenskih zona.U nastavku se koriste GMT i EST vremenske zone kao primjer, ali bilo koji odabir vremenske zone je važeći.
$ today=$(TZ=GMT date) $ echo $today Thu 31 Jan 15:07:35 GMT 2019
or
$ today=$(TZ=EST date) $ echo $today Thu 31 Jan 10:07:35 EST 2019
-
Kreirajte drugu varijablu pod nazivom
today1
i dodijelite joj sistemski datum.Pod pretpostavkom da ste u GMT:
$ today1=$(date) $ echo $today1 Thu 31 Jan 10:07:35 EST 2019