Shell’as yra komandų interpretatorius, kuris priima kiekvieną jūsų komandą ir perduoda ją įvykdymui operacinės sistemos branduoliui. Po komandos įvykdymo, shell’as išveda komandos rezultatus arba pranešimus apie klaidas į ekraną ir laukia sekančios komandos.
UNIX sistemose galima naudoti kelias shell’o versijas. Registruojant vartotoją sistemos administratorius nustato, koks shell’o procesas pagal nutylėjimą aptarnaus vartotoją (failas /etc/passwd)
Dažniausiai naudojami shell:
Bourne shell –sh; C shell – csh; TC Shell –tcsh; Korn shell – ksh; Bourne Again Shell – bash
Shello versijos nustatymas: echo $SHELL
Noredami pereiti į kitą shellą, surinkite atitinkamą komandą: sh, tcsh, ksh, bash
Grįžimas prie buvusio shell'o:exit
Atsijungimas nuo pradinio shell'o: logout
Įvedimo/išvedimo perskirstymas (srautai)
UNIX sistemoje shell’o interpretuojamose komandose leidžiama perskirstyti įvedimo, išvedimo arba klaidų srautą naudojant šiuos simbolius:
> - stdout perskirstymas.
>> - stdout perskirstymas (prirašymas failo gale - append)
< - stdin perskirstymas
Pavyzdžiai:
1. > simbolis. Juo galima nukreipt visą į ekraną išvedamų simbolių srautą į failą. Jei nurodytas failas yra sukurtas, jis perrašomas, jei failo nėra, jis sukuriamas:
Kodas: Pasirinkti visus
lioniax@browser ~/public_html/lab $ ls -l
total 28
drwxr-xr-x 2 cetras users 4096 Kov 21 12:03 cpp
-rw-r--r-- 1 cetras users 11212 Kov 21 12:04 cpp.tar.gz
drwxr-xr-x 2 cetras users 4096 Kov 21 12:03 java
-rw-r--r-- 1 cetras users 5498 Kov 21 12:04 java.tar.gz
lioniax@browser ~/public_html/lab $ ls -l > failo_vardas
lioniax@browser ~/public_html/lab $ ls -l
total 32
drwxr-xr-x 2 cetras users 4096 Kov 21 12:03 cpp
-rw-r--r-- 1 cetras users 11212 Kov 21 12:04 cpp.tar.gz
-rw-r--r-- 1 cetras users 284 Bal 8 15:35 failo_vardas
drwxr-xr-x 2 cetras users 4096 Kov 21 12:03 java
-rw-r--r-- 1 cetras users 5498 Kov 21 12:04 java.tar.gz
lioniax@browser ~/public_html/lab $ cat failo_vardas
total 28
drwxr-xr-x 2 cetras users 4096 Kov 21 12:03 cpp
-rw-r--r-- 1 cetras users 11212 Kov 21 12:04 cpp.tar.gz
-rw-r--r-- 1 cetras users 0 Bal 8 15:35 failo_vardas
drwxr-xr-x 2 cetras users 4096 Kov 21 12:03 java
-rw-r--r-- 1 cetras users 5498 Kov 21 12:04 java.tar.gz
lioniax@browser ~/public_html/lab $
2. >> simbolis. Juo galima nukreipt visą į ekraną išvedamų simbolių srautą į failą. Jei nurodyto failo nėra, jis sukuriamas, jei yra, srautas rašomas į failo pabaigą:
Kodas: Pasirinkti visus
lioniax@browser ~/public_html/lab $ ls -l
total 32
drwxr-xr-x 2 cetras users 4096 Kov 21 12:03 cpp
-rw-r--r-- 1 cetras users 11212 Kov 21 12:04 cpp.tar.gz
-rw-r--r-- 1 cetras users 62 Bal 8 15:44 failo_vardas
drwxr-xr-x 2 cetras users 4096 Kov 21 12:03 java
-rw-r--r-- 1 cetras users 5498 Kov 21 12:04 java.tar.gz
lioniax@browser ~/public_html/lab $ cat failo_vardas
Siame faile bus irasytas katalogo ~/public_html/lab turinys:
lioniax@browser ~/public_html/lab $ ls -l >> failo_vardas
lioniax@browser ~/public_html/lab $ cat failo_vardas
Siame faile bus irasytas katalogo ~/public_html/lab turinys:
total 32
drwxr-xr-x 2 cetras users 4096 Kov 21 12:03 cpp
-rw-r--r-- 1 cetras users 11212 Kov 21 12:04 cpp.tar.gz
-rw-r--r-- 1 cetras users 62 Bal 8 15:44 failo_vardas
drwxr-xr-x 2 cetras users 4096 Kov 21 12:03 java
-rw-r--r-- 1 cetras users 5498 Kov 21 12:04 java.tar.gz
lioniax@browser ~/public_html/lab $
"Siame faile bus irasytas katalogo ~/public_html/lab turinys:"
Komandos "ls -l >> failo_vardas" surašėme į failo"failo_vardas" galą.
"Vamzdžio" mechanizmas
“Vamzdžio” (pipe) mechanizmas yra naudojamas shell’e tikslu perduoti vienos komandos stdout failą tiesiai kaip stdin failą kitai komandai.
Komandos sintaksė yra tokia:
command1 [arguments] | command2 [arguments]
Pavyzdžiai:
1.
Kodas: Pasirinkti visus
lioniax@browser ~/public_html/lab $ ls -l
total 32
-rw-r--r-- 1 cetras users 0 Bal 8 15:53 a
drwxr-xr-x 2 cetras users 4096 Kov 21 12:03 cpp
-rw-r--r-- 1 cetras users 11212 Kov 21 12:04 cpp.tar.gz
-rw-r--r-- 1 cetras users 346 Bal 8 15:45 failo_vardas
drwxr-xr-x 2 cetras users 4096 Kov 21 12:03 java
-rw-r--r-- 1 cetras users 5498 Kov 21 12:04 java.tar.gz
lioniax@browser ~/public_html/lab $ ls -l | grep "failo"
-rw-r--r-- 1 cetras users 346 Bal 8 15:45 failo_vardas
lioniax@browser ~/public_html/lab $
Metasimboliai
Vartotojui įvedus komandą shell'as tikrina ją ir pradžioje specialiai apdoroja rastus metasimbolius, o po to vykdo suformuotą komandą. Paminėsiu keletą metasimbolių, kuriuos aš dažniausiai naudoju:
1. Metasimbolis "*". Manuale aiškinama, kad šis metasimbolis vaizduoja bet kokių simbolių grupę. Bet pavyzdys paaiškina daug geriau:
Tarkim naudojam komandą: "ls boruv*". Komanda atvaizduos tuos kataloge esančius failus bei katalogus, kurie prasideda raidėmis "boruv". Toliau esančių simbolių skaičius nėra apribotas (sąlyginai):
Kodas: Pasirinkti visus
lioniax@browser:~/programavimas/java/gui$ ls
About$Photo.class Langas2$Piesti.class SvorisWindow.class boruvka.java
About.class Langas2$UpdateButton.class Taskas.class boruvka.java~
Author.png Langas2$VertexButton.class boruvka$Dialogas.class duomenys.txt*
Briauna.class Langas2.class boruvka$DialogasRez.class rez.txt
Langas2$DeleteButton.class Metodai$PiestiGrafa.class boruvka$Exit.class rez2.txt
Langas2$EdgeButton.class Metodai.class boruvka$FormuotiAbout.class
Langas2$Pele.class PiestiGrafa$Piesti.class boruvka$FormuotiLanga2.class
Langas2$Piesti$Pele.class PiestiGrafa.class boruvka.class
lioniax@browser:~/programavimas/java/gui$ ls boruv*
boruvka$Dialogas.class boruvka$Exit.class boruvka$FormuotiLanga2.class boruvka.java
boruvka$DialogasRez.class boruvka$FormuotiAbout.class boruvka.class boruvka.java~
lioniax@browser:~/programavimas/java/gui$
Kodas: Pasirinkti visus
lioniax@browser:~/programavimas/java/gui$ ls
About$Photo.class Langas2$Piesti$Pele.class PiestiGrafa$Piesti.class boruvka$FormuotiAbout.class rez2
About.class Langas2$Piesti.class PiestiGrafa.class boruvka$FormuotiLanga2.class rez2.txt
Author.png Langas2$UpdateButton.class SvorisWindow.class boruvka.class rez3
Briauna.class Langas2$VertexButton.class Taskas.class boruvka.java rez4
Langas2$DeleteButton.class Langas2.class boruvka$Dialogas.class boruvka.java~ rez41
Langas2$EdgeButton.class Metodai$PiestiGrafa.class boruvka$DialogasRez.class duomenys.txt* rez412
Langas2$Pele.class Metodai.class boruvka$Exit.class rez1 rez43
lioniax@browser:~/programavimas/java/gui$ ls rez?
rez1 rez2 rez3 rez4
lioniax@browser:~/programavimas/java/gui$
Kodas: Pasirinkti visus
lioniax@browser:~/temp/t$ ls
rez rez1 rez2 rez3 rez4 rez5 rez51 rez52 rez53 rez57 rez58
lioniax@browser:~/temp/t$ ls rez[123]
rez1 rez2 rez3
lioniax@browser:~/temp/t$
Kodas: Pasirinkti visus
lioniax@browser:~/temp/t$ ls
rez rez1 rez2 rez3 rez4 rez5 rez51 rez52 rez53 rez57 rez58
lioniax@browser:~/temp/t$ rm ` ls rez[123] `
lioniax@browser:~/temp/t$ ls
rez rez4 rez5 rez51 rez52 rez53 rez57 rez58
lioniax@browser:~/temp/t$
Šuo atveju katalogas /opts neegzistuoja, todėl "ls" komanda gražino klaidos pranešimą, o "pwd" komanda nebuvo vykdoma.
Kodas: Pasirinkti visus
lioniax@browser:~$ ls /opts && pwd
/usr/bin/ls: /opts: No such file or directory
Kodas: Pasirinkti visus
lioniax@browser:~$ ls /opt && pwd
kde/ openoffice.org2.0/ www/
/home/lioniax
Šuo atveju katalogas /opts neegzistuoja, todėl "ls" komanda gražino klaidos pranešimą, ir buvo vykdoma komanda "pwd"
Kodas: Pasirinkti visus
lioniax@browser:~$ ls /opts || pwd
/usr/bin/ls: /opts: No such file or directory
Kodas: Pasirinkti visus
lioniax@browser:~$ ls /opt || pwd
kde/ openoffice.org2.0/ www/