2.1 Lekcija 1
Sertifikat: |
Linux Essentials |
---|---|
Verzija: |
1.6 |
Tema: |
2 Kretanje kroz Linux sistem |
Cilj: |
2.1 Osnovne komandne linije |
Lekcija: |
1 od 2 |
Uvod
Moderne Linux distribucije imaju širok raspon grafičkih korisničkih okruženja, ali administrator treba da poznaje rad sa komandnom linijom, ili šelom kako se još zove. Šel (eng. shell) je program koji omogućava tektualnu komunikaciju između operativnog sistema i korisnika. Obično je to program u tekstualnom režimu koji čita unos korisnika i tumači ga kao komande sistemu.
Postoji nekoliko različitih šelova na Linux-u, a neki od njih su:
-
Bourne-again šel (Bash)
-
C šel (csh or tcsh, the enhanced csh)
-
Korn šel (ksh)
-
Z šel (zsh)
Na Linux-u, često korišten šel je Beš shell (eng. Bash shell). Ovo je također šel, koji će ovdje biti korišten kroz primjere i vježbe.
Prilikom korištenja interaktivnog šela, korisnik unosi komandu u tzv. prompt. Za svaku Linux distribuciju, zadani prompt će izgledati malo drugačije, ali sa sličnom stukturom:
korisničkoime@nazivhosta trenutni_direktorij tip_šela
Na Ubuntu ili Debian GNU/Linux-u, prompt za običnog korisnika izgleda ovako:
carol@mycomputer:~$
Prompt super korisnika izgleda ovako:
root@mycomputer:~#
Na CentOS-u ili Red Hat Linux-u, prompt običnog korisnika će izgledati ovako:
[dave@mycomputer ~]$
Prompt super korisnika izgleda ovako:
[root@mycomputer ~]#
Da objasnimo svaki dio strukture pojedinačno:
korisničko ime
-
Naziv korisnika koji pokreće šel
naziv hosta
-
Naziv hosta (mašine) na kojem se pokreće šel. Također postoji komanda 'hostname', kojom možete prikazati ili podesiti naziv hosta.
trenutni_direktorij
-
Direktorij u kojem se šel trenutno nalazi. Karakter '~' znači kako se šel nalazi unutar korisničkog home direktorija
shell_type
-
$
ovaj karakter pokazuje kako šel pokreće obični korisnik.#
ovaj karakter pokazuje kako šel pokreće super korisnik 'root'.
Kako ne trebamo nikakve specijalne privilegije, mi ćemo koristiti neprivelgovan prompt u sljedećim primjerima. Radi sažetosti, koristit ćemo samo '$' (dolar karakter) kao prompt.
Struktura komandne linije
Većina komandi na komandnoj liniji prati istu strukturu:
naziv komande [opcija(e)/parametar(i)...] [argument(i)...]
Uzmimo sljedeću komandu kao primjer:
$ ls -l /home
Da objasnimo svrhu svake komponente:
- Komanda
-
ls - naziv programa kojeg korisnik izvršava u gornjem primjeru.
- Opcija(e)/Parametar(i)
-
switch`" opcija modificira ponašanje komande na neki način, kao što je `-l
u gornjem primjeru. Opcijama se može pristupiti u kratkom i dugom obliku. Na primjer,-l
je identičan opciji--format=long
.Više opcija se takođe može kombinovati, a za kratku formu slova se obično mogu kucati zajedno. Na primjer, sve sljedeće komande rade isto:
$ ls -al $ ls -a -l $ ls --all --format=long
- Argument(i)
-
Dodatni podaci koje treba program, kao naziv datoteke ili putanja, kao '/home' u gornjem primjeru.
Jedini obavezni dio ove strukture je sama komanda. Općenito, svi ostali elementi su opcioni, ali program može zahtijevati specificiranje određenih opcija, parametara ili argumenata.
Note
|
Većina komandi prikazuje kratak pregled dostupnih naredbi kada se pokreću s parametrom |
Tipovi ponašanja komandi
Šel podržava dva tipa komandi:
- Unutarnje
-
Ove komande su dio samog šela i nisu zasebni programi. Postoji oko 30 takvih komandi. Njihova glavna svrha je izvršavanje zadataka unutar šela (npr.
cd
,set
,export
). - Vanjske
-
Ove komande se nalaze u pojedinačnim datotekama. Ove datoteke su obično binarni programi ili skripte. Kada se pokrene komanda koja nije ugrađena u šel, šel koristi varijablu
PATH
za traženje izvršne datoteke s istim imenom kao naredba. Pored programa koji su instalirani sa paket menadžerom distribucije, korisnici mogu kreirati i sopstvene eksterne komande.
Komanda 'type' će prikazati vrstu komande:
$ type echo echo is a shell builtin $ type man man is /usr/bin/man
Navodnici
Kao Linux korisnik, morat ćete kreirati ili manipulirati datotekama i varijablima na razne načine. Ovo je lako kada radite s kratkim nazivima datoteka i pojedinačnim vrijednostima, ali postaje složenije kada su uključeni, na primjer, razmaci, specijalni znakovi i varijable. Šelovi pružaju funkciju zvanu navođenje ili citiranje, koja inkapsulira takve podatke koristeći različite vrste navodnika (" ", ' '). U Bashu postoje tri vrste navodnika:
-
Dvostruki navodnici
-
Jednostruki navodnici
-
Escape znakovi
Na primjer, sljedeće komande ne djeluju na isti način zbog citiranja:
$ TWOWORDS="two words" $ touch $TWOWORDS $ ls -l -rw-r--r-- 1 carol carol 0 Mar 10 14:56 two -rw-r--r-- 1 carol carol 0 Mar 10 14:56 words $ touch "$TWOWORDS" $ ls -l -rw-r--r-- 1 carol carol 0 Mar 10 14:56 two -rw-r--r-- 1 carol carol 0 Mar 10 14:58 'two words' -rw-r--r-- 1 carol carol 0 Mar 10 14:56 words $ touch '$TWOWORDS' $ ls -l -rw-r--r-- 1 carol carol 0 Mar 10 15:00 '$TWOWORDS' -rw-r--r-- 1 carol carol 0 Mar 10 14:56 two -rw-r--r-- 1 carol carol 0 Mar 10 14:58 'two words' -rw-r--r-- 1 carol carol 0 Mar 10 14:56 words
Note
|
Red sa |
Dvostruki navodnici
Dvostruki navodnici govore šelu da uzme tekst između navodnika ("...") kao obične znakove. Svi specijalni znakovi gube svoje značenje, osim $
(znaka dolar), \
(obrnute kose crte) i `
(povratnih navodnika). To znači da se varijable, zamjena komandi i aritmetičke funkcije i dalje mogu koristiti.
Na primjer, dvostruki navodnici ne utječu na zamjenu varijable $USER
:
$ echo I am $USER I am tom $ echo "I am $USER" I am tom
Razmak, s druge strane, gubi svoje značenje kao separator argumenata:
$ touch new file $ ls -l -rw-rw-r-- 1 tom students 0 Oct 8 15:18 file -rw-rw-r-- 1 tom students 0 Oct 8 15:18 new $ touch "new file" $ ls -l -rw-rw-r-- 1 tom students 0 Oct 8 15:19 new file
Kao što možete vidjeti, u prvom primjeru, komanda touch
kreira dvije pojedinačne datoteke, gdje komanda tumači dva niza kao pojedinačne argumente. U drugom primjeru, komanda tumači oba niza kao jedan argument, stoga kreira samo jednu datoteku. Međutim, najbolja je praksa izbjegavati razmak u nazivima datoteka. Umjesto toga, može se koristiti donja crta (_
) ili tačka (.
).
Jednostruki navodnici
Jednostruki navodnici nemaju izuzetke od dvostrukih navodnika. Oni ukidaju svako posebno značenje svakog znaka. Uzmimo jedan od prvih primjera odozgo:
$ echo I am $USER I am tom
Tijekom primjene jednostrukih navodnika, vidjet ćete drugačiji rezultat:
$ echo 'I am $USER' I am $USER
Komanda sada prikazuje tačan niz bez zamjene varijable.
Escape znakovi
Možemo koristiti escape znakove da uklonimo posebna značenja znakova iz Basha. Vraćamo se na varijablu okruženja $USER
:
$ echo $USER carol
Vidimo da je po defoltu sadržaj varijable prikazan u terminalu. Međutim, ako bismo ispred znaka dolara postavili obrnutu kosu crtu (\
), tada će posebno značenje znaka dolara biti negirano. Ovo zauzvrat neće dozvoliti Bashu da proširi vrijednost varijable na korisničko ime osobe koja izvodi komandu, već će umjesto toga doslovno interpretirati ime varijable:
$ echo \$USER $USER
Ako se sjećate, možemo dobiti slične rezultate kao ovaj koristeći jednostruki navodnik, koji ispisuje doslovni sadržaj svega što se nalazi između pojedinačnih navodnika. Međutim, escape znak radi drugačije tako što nalaže Bashu da zanemari bilo koje posebno značenje koje karakter, koji prethodi može imati.
Vođene vježbe
-
Podijelite redove ispod na komponente komandi, opcije/parametar(e) i argument(e):
-
Primjer:
cat -n /etc/passwd
Komanda:
cat
Opcija:
-n
Argument:
/etc/passwd
-
ls -l /etc
Komanda:
Opcija:
Argument:
-
ls -l -a
Komanda:
Opcija:
Argument:
-
cd /home/user
Komanda:
Opcija:
Argument:
-
-
Kojeg su tipa navedene komande:
Primjeri:
pwd
Unutarnja šel komanda
mv
Vanjska šel command
cd
cat
exit
-
Riješite sljedeće naredbe koje koriste navodnike:
Primjer:
echo "$HOME is my home directory"
echo /home/user is my home directory
touch "$USER"
touch 'touch'
Istraživačke vježbe
-
S jednom komandom i korištenjem proširenja zagrada u Bashu (pregledajte stranicu za Bash), kreirajte 5 datoteka numeriranih od 1 do 5 s prefiksom
game
(game1
,game2
, …). -
Izbrišite svih 5 datoteka koje ste upravo kreirali sa samo jednom komandom, koristeći različite posebne znake (pregledajte Proširenje imena putanje na stranicama Bash).
-
Postoji li neki drugi način da dvije komande rade međusobno? Koji je to način?
Sažetak
U ovom labu ste naučili:
-
Koncepte Linux šela
-
Šta je to Bash šel
-
Strukturu komandne linije
-
Uvod u navodnike
Komande korištene u ovoj vježbi:
bash
-
Najpopularniji šel na Linux računarima.
echo
-
Prikaži tekst u terminalu.
ls
-
Prikaži sadržaj direktorija.
type
-
Prikaži način izvršavanja određene komande.
touch
-
Kreiraj praznu datoteku ili ažuriraj vrijeme nastanka datoteke.
hostname
-
Prikaži ili promijeni naziv sistema.
Odgovori na vođene vježbe
Podijelite redove ispod na komponente komandi, opcije/parametar(e) i argument(e):
+
* ls -l /etc
+
Komanda: |
|
Opcija: |
|
Argument: |
|
+
* ls -l -a
+
Komanda: |
|
Opcija: |
|
Argument: |
+
* cd /home/user
+
Komanda: |
|
Opcija: |
|
Argument: |
|
-
Kojeg su tipa navedene komande:
cd
Unutarnja šel komanda
cat
Vanjska šel komanda
exit
Unutarnja šel komanda
-
Riješite sljedeće naredbe koje koriste navodnike:
touch "$USER"
tom
touch 'touch'
Kreiraj datoteku po imenu
touch
Odgovor na istraživačke vježbe
-
S jednom komandom i korištenjem proširenja zagrada u Bashu (pregledajte stranicu za Bash), kreirajte 5 datoteka numeriranih od 1 do 5 s prefiksom
game
(game1
,game2
, …).Opsezi se mogu koristiti za izražavanje brojeva od 1 do 5 unutar jedne naredbe:
$ touch game{1..5} $ ls game1 game2 game3 game4 game5
-
Izbrišite svih 5 datoteka koje ste upravo kreirali sa samo jednom komandom, koristeći različite posebne znake (pregledajte Proširenje imena putanje na stranicama Bash).
Budući da svi fajlovi (datoteke) počinju sa
game
i završavaju se jednim znakom (broj od 1 do 5 u ovom slučaju),?
se može koristiti kao poseban znak za posljednji znak u imenu datoteke:$ rm game?
-
Postoji li neki drugi način da dvije komande rade međusobno? Koji je to način?
Da, jedna komanda može, na primjer, upisati podatke u datoteku koja se zatim obrađuje drugom komandom. Linux također može prikupiti izlaz jedne komande i koristiti ga kao ulaz za drugu komandu. Ovo se zove piping i naučit ćemo više o tome u budućoj lekciji.