plu retro sagoj por navigado

indekso Enkonduko al Linukso

3 La ŝelo(j)

Unikso ekestis en tempo, kiam uzuloj uzis teleksilojn (telegrafajn skribmaŝinojn) por dialogi kun komputiloj. Por tio necesas programo, kiu ruliĝas daŭre (dum tiel nomata sesio, inter la ensaluto kaj la adiaŭo de la uzulo), atendas ordonojn (komandojn) de la uzulo kaj plenumas ilin. Tia programo en Unikso nomiĝas ŝelo: ĝi estas kvazaŭ la ekstera ŝelo de la komputilo, kiu kaŝas la internon kontraŭ la uzulo.

Ĉar la angla vorto, shell, signifas ankaŭ "konko", ŝeloj estas foje reprezentataj per bildo de moluska konko. Tio tamen estas ne tre internacia.

3.1 La Borna Ŝelo

La historie unua ŝelo de Unikso estis la "tompsona ŝelo" (angle: Thompson Shell), nomita laŭ Ken Thompson, unu el la pioniroj de Unikso. Ĝi ekestis en 1971.

En 1979 ekestis la Uniksa Versio 7, kies ŝelo estis la "borna ŝelo" (angle: Bourne Shell), nomita laŭ Stephen Bourne. Ĝi estis pluevoluigaĵo de la Tompsona ŝelo. Pro tio nun jam preskaŭ neniu memoras tiun; la Borna Ŝelo tamen pluvivas en sia posteulo, la Reborna Ŝelo aŭ baŝo, laŭ sia dosiera nomo bash. Ĝia angla nomo Bourne-again shell estas vortludo; unuflanke ĝi aludas al Bourne, aliflanke la nomo sonas egale kiel born-again = "renaskita". Baŝo estas parto de la malferm-fonta projekto GNU kaj estas tre populara en Linukso.

La borna ŝelo havas la dosieran nomon sh kaj normale situas je /bin/sh en la dosiera arbo. Ĝi estas potenca interpretilo por komanda lingvo, kiu estas uzebla ankaŭ por skriptoj. Tio signifas, ke ĉiu dialogo per la ŝelo estas transformebla al programeto kaj ripetita poste, sen mane ripeti la tutan dialogon. Tiu speco de "aŭtomatigo" ŝparas multe da laboro. Ĝi ankaŭ montras gravan diferencon inter dialogado per muso kaj dialogado per ŝelo: Musaj dialogoj ne estas bone registreblaj kaj reuzeblaj. Tion priskribas modifaĵo de la latina proverbo verba volant, scripta manent (paroloj forflugas, skribaĵoj fiksiĝas); oni diras cliccata volant, scripta manent (klakoj forflugas, skriptoj restas) por esprimi, ke la laboro de klakado servas nur unu fojon, sed komandaj skriptoj estas reuzeblaj.

Ekzemplo

Simpla ekzemplo estas la listigo de ĉiuj dosieroj en dosierujo. Por ĝi ekzistas la komando ls. Pli detalan informon donas la elekto ("opcio") "ls -l". Kaj eblas indiki la dosierujon, kies enhavon oni volas listigi:

$ ls 
miaunualetero.odt  tukso.jpeg 
$ ls /home/u1 
miaunualetero.odt  tukso.jpeg 
$ ls -l /home/u1 
totalo 24 
-rw-r--r-- 1 u1       kursoj    7550 2008-08-03 14:57 miaunualetero.odt 
-rw-r--r-- 1 u1       kursoj   12499 2008-08-03 15:00 tukso.jpeg 

La enigaĵo de la uzulo estas markita flave en la bildo (ne en la originalo). La dolara signo ($) ofte estas uzata kiel defiilo por montri al la uzulo, ke estas lia vico agi. Sed multaj uzaj pli kompleksajn defiilojn, kiuj donas pli da informo.

Kiel la komando en la unua ekzemplo (simpla ls) sciis, kiun dosieron ĝi listigu? Se oni ne indikas dosierujon, ĝi listigas sian aktualan labor-dosierujon, tio estas la dosierujo, "en kiu ĝi nun estas". Tiun labor-dosierujon eblas ŝanĝi per la komando cd (angle change directory = ŝanĝu dosierujon). Per la komando pwd eblas eltrovi la aktualan labordosierujon. Sesia ŝelo startas en la hejma dosierujo.

$ pwd 
/home/u1
$ cd /home 
$ pwd 
/home
$ ls -l 
totalo 0
drwxr-xr-x 2 u1       kursoj   120 2008-08-03 15:00 u1
drwxr-xr-x 4 u2       kursoj    96 2008-08-03 15:32 u2
$ cd 
$ pwd 
/home/u1

La lasta voko de cd ne havas parametron kaj igis la ŝelon reiri al la hejma dosierujo. Pliaj specialaj parametroj estas la minusa signo (-), kiu reiras al la (tempe) antaŭa dosierujo, kaj du punktoj (..), kiuj supreniras al la patra dosierujo.

La eligaĵo de ls -l komenciĝas per stranga vico de 10 signoj. La unua estas "d" por dosierujo kaj "-" por dosiero. La sekvaj estas tri grupoj de tri signoj, kiuj donas la permesojn de la dosiero: r por legi (angle read), w por skribi (angle write), x por ruli (angle execute). Minussigno indikas, ke la permeso ne ekzistas. La unua grupo estas por la posedanto de la dosiero, la dua por lia uzula grupo kaj la tria por ĉiuj aliaj uzuloj. Jena tabelo klarigas la signifon de la aliaj partoj de la eligaĵo de ls -l:

Eligaĵo (dosierujo) Eligaĵo (dosiero) Signifo
drwxr-xr-x -rw-r--r-- Permesoj
2 1 Nombro de patroj
u1 u1 Posedanto
kursoj kursoj Grupo
120 7550 Grando (bajtoj)
2008-08-03 15:00 2008-08-03 14:57 Lasta modifo
u1 miaunualetero.odt Nomo

La nombro, kies signifo estis klarigita per "nombro de patroj", ne estas bezonata de normala uzanto. Ĝi signifas, en kiom da dosierujoj la nodo enestas. Ĉe normala dosiero ĝi kutime estas 1, ĉe dosierujo almenaŭ 2, ĉar la dosierujo estas en sia patra dosierujo, sed teknike ankaŭ en si mem. Krome ĝi estas en ĉiu sub-dosierujo (kiel patro). Dosierujo kun 5 subdosierujoj do havas almenaŭ 7 patrojn.

3.2 Aliaj ŝeloj

Ni jam menciis, ke antaŭ la borna ŝelo ekzistis la tompsona ŝelo, kaj ke post ĝi venis la baŝo. Signifa ŝelo inter borna ŝelo kaj baŝo estis la korna ŝelo (ksh), nomita laŭ David Korn, kiu evoluigis ĝin en 1981. Ĝi enkondukis la teknikon de historio; tio estas, ĝi memoras la plenumitajn komandojn kaj ebligas al la uzulo ripeti, eĉ modifi ilin. Tio ŝparas laboron, kiam oni rulas multajn similajn komandojn aŭ devas korekti erarojn en komando. La baŝo transprenis tiun historio-funkcion.

Historio ekzistis jam en la C-ŝelo, kiun 1979 evoluigis Bill Joy. Ĝia komando-lingvo ne tre similas al tiu de la aliaj ŝeloj, sed pli orientiĝas laŭ la programlingvo C.


Al la sekva leciono


Specimenaj demandoj

Ligiloj al Vikipedio