background image

Unix -  rodowisko u ytkownika, shelle 

'tedd' T. K dzierski 

str. 1/1 (ost. akt.: 14-02-05) 

 

 

Wymagania.we: przerobione ogólne zasady, pliki i kartoteki, edytory 

 

 

 

rodowisko pracy u ytkownika systemu Unix. 

 

Ka dy u ytkownik zaloginowany w systemie Unix de facto nie pracuje z Unixem - pracuje z jakim  

interpreterem komend (shellem)

. W momencie 

definiowania u ytkownika administrator definiuje (zob. plik /etc/passwd):  

 

• 

nazw  u ytkownika 

• 

hasło 

• 

unikalny numer u ytkownika (UID: User Identification Number 

• 

grup  do której standardowo nale y u ytkownik (GID: Group Identification Number) 

• 

'dług ' nazw  u ytkownika - pozwalaj ca na identyfikacj  u ytkownika według jego prawdziwego nazwiska 

• 

bazow  kartotek  u ytkownika - kartotek  w której znajd  si  pliki zakładane przez u ytkownika. Do kartoteki tej kopiowane s  zwykle standardowe pliki 

konfiguracyjne, nazwa tej kartoteki jest pami tana (dla ka dego u ytkownika osobno) w zmiennej HOME. Do tak zapami tanej nazwy kartoteki mo emy 

si  odwoła  poprzez $HOME (dla ka dej zmiennej  rodowiskowej konstrukcja $nazwa_zmiennej jest zast powana przez shella warto ci  tej zmiennej) 

• 

program, który jest uruchamiany po zaloginowaniu si  przez u ytkownika do systemu. Programem tym jest najcz ciej jaki  interpreter komend - program, 

który pobiera i interpretuje komendy, wpisywane przez u ytkownika z klawiatury. To oznacza,  e oprócz 'standardowych' u ytkowników mo emy w Unixie 

zdefiniowa  u ytkowników 'celowych' - je eli tym programem, który zostanie uruchomiony po zaloginowaniu si  u ytkownika do systemu b dzie program 

finansowo - ksi gowy to u ytkownik nie b dzie 'widział'  e pracuje w Unixie - dla niego b dzie to po prostu komputer z systemem finansowo - ksi gowym. 

Taki u ytkownik nie b dzie w stanie wpisywa   adnych komend Unixowych. Dal 'standardowego' u ytkownika tym interpreterem komend (shellem) jest 

tcsh 

 

Poniewa  

bash

 (czasami dost pny jako 

sh

) jest interpreterem u ywanym cz ciej przez administratora systemu (jest mniej 'ergonomiczny', ale standardowo 

jest instalowany w ka dym Unixie, ma bardziej rozbudowane mo liwo ci tworzenia skryptów) a 

tcsh

 - cz ciej u ywanym przez u ytkowników nie b d cych 

background image

Unix -  rodowisko u ytkownika, shelle 

'tedd' T. K dzierski 

str. 2/2 (ost. akt.: 14-02-05) 

 

administratorami (bardziej 'ergonomiczny', ułatwienia w poruszaniu si  po systemie plikowym - ale słabszy j zyk tworzenia makr, czasem nie instalowany 

podczas standardowej instalacji systemu) musimy pozna  oba shelle. 

 

 Pliki konfiguracyjne 

 

Ka dy shell działa w taki sam 'sposób': 

 

• 

w momencie uruchomienia shella przez u ytkownika (loginowanie si  do systemu lub uruchomienie shella z linii komend) wykonywane s  pliki, inicjuj ce 

prac  shella 

• 

po zainicjowaniu - shell pozwala u ytkownikowi wpisa  komend . Ta komenda - przed prób  jej zinterpretowana - jest 'rozwijana' - aliasy (zob. dalej) s  

zast powane ich warto ciami, w miejsce wzorników wstawiane s  nazwy plików i kartotek pasuj cych do wzorników. Dopiero potem shell próbuje 

zinterpretowa  i wykona  komend . 

• 

kiedy u ytkownik wpisze komend  ko cz c  prac  shella (

logout, exit

) - wykonywane s  pliki 'ko cz ce' prac  shella 

 

 

To, które pliki zostan  wykonane zale y zarówno od rodzaju shella (

tcsh

 / 

bash

) jak i jego wersji. Dlatego sugeruj   eby sprawdzi  t  informacj  w 

opisie tego shella, którego u ywamy (

man tcsh

 lub 

man bash

, wykonane w systemie Unix, w którym jeste my zdefiniowani) zanim zaczniemy 

u ywa  naszego shella 

 

Najcz ciej u ywane pliki konfiguracyjne: 

 

tcsh 

Podczas uruchamiania sprawdzane i wykonywane b d  nast puj ce pliki (kolejno  - istotna): 

 

/etc/csh.cshrc 

background image

Unix -  rodowisko u ytkownika, shelle 

'tedd' T. K dzierski 

str. 3/3 (ost. akt.: 14-02-05) 

 

/etc/csh.login 

$HOME/.tcshrc 

$HOME/.cshrc - o ile $HOME/.tcshrc nie istnieje 

$HOME/.login - je eli shell został uruchomiony z powodu zaloginowania si  u ytkownika do Unixa a nie z powodu wywołania shella z linii komend 

bash  Podczas uruchamiania sprawdzane i wykonywane b d  nast puj ce pliki (kolejno  - istotna): 

/etc/profile 

$HOME/.bash_profile, $HOME/.bash_login, $HOME/.profile - sprawdzane w tej kolejno ci. Pierwszy który zostanie znaleziony i mam prawo do 

czytania - zostanie wykonany. Pozostałe odnalezione pliki s  wtedy ignorowane. 

 

Je eli 

bash

 zostanie uruchomiony z linii komend (a nie jako wynik loginowania si  u ytkownika) - szuka tylko 

$HOME/.bashrc i wykonuje go - je eli 

taki plik istnieje 

tcsh 

Po zako czeniu przez u ytkownika sesji (

logout

exit

 - kolejno  sprawdzania / wykonywania plików istotna): 

/etc/csh.logout 

$HOME/.logout - je eli shell został uruchomiony z powodu zaloginowania si  u ytkownika do Unixa 

bash  Po zako czeniu przez u ytkownika sesji (

logout

exit

)" 

$HOME/.bash_logout - o ile taki plik istnieje 

 

To co znajduje si  w wy ej wymienionych plikach jest wykonywane - tak jakby komendy z tych plików były wpisane z linii komend. 

 

background image

Unix -  rodowisko u ytkownika, shelle 

'tedd' T. K dzierski 

str. 4/4 (ost. akt.: 14-02-05) 

 

 Zmienne  rodowiskowe 

 

Ta idea została przeniesiona z Unixa do Ms DOSa i Ms Windows - podczas pracy u ytkownika zmienne  rodowiskowe decyduj  o tym gdzie s  szukane 

komendy do wykonania, jak ustawione s  'parametry' sesji u ytkownika. 

 

tcsh 

tcsh pozwala zdefiniowa  dwa rodzaje zmiennych: 

zmienne  rodowiskowe

 - definiowane komend  

setenv, definiuj   rodowisko pracy u ytkownika 

 

 

setenv nazwa_zmiennej warto

 

 

podstawia warto  pod zmienn  

 

 

printenv nazwa_ziennej

 

 

wy wietla bie c  warto  zmiennej 

 

zmienne (parametry) shella

 - definiowane komend  

set, (re)definiuj  sposób działania 

tcsh

 

 

 

set nazwa_zmiennej = warto

   

wstawia warto  do parametru shella 

 

 

set

 

 

 

 

 

wy wietla bie ce warto ci parametrów shella 

bash 

bash

 u ywa jednego rodzaju zmiennych - 

zmiennych  rodowiskowych

, definiowanych przez podstawienie 

 

 

zmienna = warto  

lub 

 

set zmienna warto  

 

background image

Unix -  rodowisko u ytkownika, shelle 

'tedd' T. K dzierski 

str. 5/5 (ost. akt.: 14-02-05) 

 

Najwa niejsz  chyba zmienn , u ywan  przez oba shelle, jest zmienna PATH zawieraj ca nazwy kartotek, przeszukiwanych kiedy u ytkownik próbuje 

wykona  program. Dokładniej - kiedy pierwsze słowo w linii komend nie jest nazw  wewn trznej komendy shella shell przeszukuje kartoteki, których nazwy s  

zapami tane w zmiennej 

PATH. Przeszukiwane s  tylko te kartoteki w kolejno ci w jakiej wyst puj  w zmiennej PATH. Pierwszy znaleziony plik, 

którego nazwa jest taka sama jak pierwsze słowo z linii komendy i który posiada atrybut 'wykonywalny' ('

x

') jest ładowany do pami ci operacyjnej i 

wykonywany. Pozostałe elementy linii komend s  przesyłane jako parametry tego programu. 

 

Tym co najcz ciej 'myli' u ytkowników, którzy 'przesiadaj  si ' do Unixa z DOSa lub Ms Windows jest przyzwyczajenie do tego,  e programy z 

bie acej kartoteki s  zawsze wykonywane - w dodatku 'przesłaniaj ' programy z kartotek, pami tanych w zmiennej 

PATH. Unix wykonuje programy z 

bie cej kartoteki 

tylko wtedy kiedy nazwa bie cej kartoteki jest jawnie wstawiona do nazw pami tanych w zmiennej PATH (jako . - kropka w Unixie 

oznacza bie c  kartotek ). W dodatku kolejno  umieszczenia nazwy bie cej kartoteki decyduje w pełni o kolejno ci wykonywania programów z tej 

kartoteki. 

Mo emy jawnie 'wymusi ' wykonanie programu z bie cej kartoteki u ywaj c konstrukcji 

./nazwa_pliku_z_programem. Dla shella jest to jawne 

zdefiniowanie  cie ki dost pu do pliku ('bie ca kartoteka') - kartoteki ze zmiennej 

PATH nie s  wtedy przeszukiwane 

 

 

 

wy wietl nazwy kartotek które w Twoim shellu b d  przeszukiwane podczas próby znalezienia programu 

napisz komend , dodaj c  do zmiennej 

PATH bie c  kartotek  

w jakim pliku nale y umie ci  t  komend , modyfikuj c  zmienn  

PATH aby te zmiany obowi zywały po ka dej komendzie 

login

 

 Aliasy 

 

Aliasy s  konstrukcj , pozwalaj c  (zre)definiowa  komendy Unixowe lub sposób ich działania. Zasada działania aliasów jest nast puj ca: 

 

background image

Unix -  rodowisko u ytkownika, shelle 

'tedd' T. K dzierski 

str. 6/6 (ost. akt.: 14-02-05) 

 

tworzymy alias - 'nazw ', interpretowan  specjalnie przez shella. Ta nazwa a swoj  warto  - ka dorazowo kiedy w linii komend u yjemy aliasu shell zast pi 

t  nazw  warto ci  aliasu zanim zacznie interpretowa  lini  komendy. Zast powanie aliasu jest wykonywane tylko raz (nie jest to rekurencyjne 

zast powanie). Je eli warto ci  aliasu ma by  ci g znaków zawieraj cy spacj  - ujmujemy cały ten ci g w apostrofy 

w ka dej chwili mo emy zredefiniowa  warto  aliasu, usun  alias lub wy wietli  bie co zdefiniowane aliasy 

 

Komendy pozwalaj ce na działanie na aliasach: 

 

tcsh 

Definiowanie aliasu: 

 

alias nazwa warto  

bash 

Definiowanie aliasu: 

 

alias nazwa = warto  

wspólne  Wy wietlanie bie co zdefiniowanych aliasów: 

 

alias 

 

Usuwanie aliasu: 

 

unalias nazwa_aliasu 

 

 

Aby móc wpisywa  dir zamiast ls -la w celu wy wietlenia informacji o plikach w bie

cej kartotece (tcsh): 

 

alias dir 'ls -la' 

background image

Unix -  rodowisko u ytkownika, shelle 

'tedd' T. K dzierski 

str. 7/7 (ost. akt.: 14-02-05) 

 

 

Aby spowodowa  ka dorazowe pytanie o potwierdzenie podczas kasowania plików (tcsh): 

 

alias rm 'rm -i' 

 

 

Skutki bł dnego zdefiniowania aliasów mog  by  gro ne - przeanalizuj co stanie si  podczas wykonywania komendy 

 

ls * 

je eli zdefiniowany został alias 

 

alias ls rm 

 

 

 

Zdefiniuj aliasy pozwalaj ce pod Unixem wpisywa  i wykonywa  'DOSowe' komendy 

 

dir, copy, type, del, renam 

 

 

 Skrypty 

 

skrypty s  odpowiednikiem batchów z MsDOSa lub z Ms Windows. Pozwalaj  na spisanie ci gu komend Unixa a nast pnie ich wykonanie. 

 

background image

Unix -  rodowisko u ytkownika, shelle 

'tedd' T. K dzierski 

str. 8/8 (ost. akt.: 14-02-05) 

 

Tworzenie skryptu składa si  zawsze z nast puj cych etapów: 

 

dowolnym edytorem tworzymy plik tekstowy, który b dzie zawierał komendy do wykonania (== skrypt). Nazwa pliku mo e by  dowolna, nie jest wymagane 

jakie  specjalne ‘rozszerzenie’ pliku – w Unixie wykonywalny jest plik, który ma ustawiony atrybut wykonywalno ci, niezale nie od tego jaka ma nazw . 

pierwsz  linijk  tworzonego skryptu musi by  linia postaci 

#!pełna_ cie ka_dost pu_do_shella 

 

Dokładniej: je eli podczas wykonywania skryptu shell stwierdzi,  e pierwsza linia skryptu zaczyna si  od opisanej powy ej konstrukcji – załaduje do pami ci 

program na który wskazuje ta linijka, uruchomi go – a kolejne linie skryptu b dzie przesyłał do uruchomionego skryptu tak, jakby były wpisywane z klawiatury 

(redyrekcja standardowego wej cia). Je eli skrypt nie zaczyna si  od opisanej linii – uruchomiony b dzie 

bash

 i to on b dzie interpretował kolejne linie 

skryptu – tak jakby były wpisywane z klawiatury. 

 

po utworzeniu pliku – ko czymy prac  z edytorem, zapisujemy plik na dysku. Musimy – przed prób  wykonania tego skryptu – ustawi  mu atrybut 

‘wykonywalny’ (‘

x

’) 

mo emy teraz wykona  skrypt – wpisuj c odpowiednio (zob. zmienna 

PATH

) nazw  i  cie k  dost pu do pliku. 

 

B dziemy omawia  i u ywa  skryptów działaj cych pod kontrol  

basha

 - rozszerzenia j zyka skryptów, zdefiniowane w 

bashu

 pozwalaj  na pisanie o wiele 

bardziej zaawansowanych skryptów ni  skrypty działaj ce pod kontrol  

tcsh

. Dodatkowym argumentem przemawiaj cym za u ywaniem 

basha

 jest jego 

'dost pno ' - 

bash

 jest standardowo instalowany w ka dym  rodowisku Unixowym, 

tcsh

 czasem b dziemy musieli doinstalowa  do systemu. Wewn trz 

skryptu mo emy u ywa  nast puj cych konstrukcji: 

 

• 

parametry - symbole 

$1

, ... , 

$9

 s  zast powane warto ciami parametrów wyst puj cych w linii uruchamiaj cej skrypt. Parametr $0 zawiera nazw  

pliku ze skryptem 

• 

$# zawiera liczb  parametrów wej ciowych, z jakimi uruchomiony został skrypt 

background image

Unix -  rodowisko u ytkownika, shelle 

'tedd' T. K dzierski 

str. 9/9 (ost. akt.: 14-02-05) 

 

•  $?

 zawiera wynik wykonania ostatniej komendy w skrypcie. Je eli było to wywołanie programu - 

#?

 zawiera kod wykonania z jakim zako czył si  

program (w C/C++ - warto  parametru procedury 

exit

, ko cz cej prac  programu). Wi kszo  komend Unixowych zwraca warto  0 (zero) je eli 

program zako czył si  poprawnie, warto  wi ksz  od zera - je eli wyst piły jakie  bł dy w działaniu programu. 

• 

zmienne - s  to obiekty, tworzone przez programist  lub zdefiniowane w systemie Unix. Ka da zmienna ma swoj  nazw  - poprzez t  nazw  

odwołujemy si  do zmiennej. Warto  zmiennej nadajemy instrukcj  

 

 

nazwa = warto  

natomiast warto  zmiennej pobieramy u ywaj c konstrukcji 

$nazwa_zmiennej

 

• 

wyra enia - w instrukcjach wyst puj cych wewn trz skryptów mo emy u ywa  kilku rodzajów 'wyra e  warunkowych': 

 

(program ...) 

spowoduje wykonanie programu - wynikiem działania b dzie kod zwracany przez program 

{ instrukcja; } 

u ywany do 'grupowania' instrukcji ('instrukcja zło ona'). Ta konstrukcja mo e wyst pi  w ka dym miejscu gdzie w opisie 

komend pojawia si  termin 'instrukcja'. Dodatkowo, kod wykonania zwracany przez ostatnia instrukcj  jest 'warto ci ' takiego 

'wyra enia' 

bash 

[ wyra enie ] 

wyra enie arytmetyczno - logiczne. Zasady konstrukcji, warto ciowanie - jak w j zyku C 

 

W wyra eniach warunkowych mo emy równie  testowa  'cechy' plików. Najwa niejsze z nich to: 

 

-d file 

true 

gdy file jest nazw  kartoteki 

-e file 

true 

gdy file istnieje 

-f file 

true 

gdy file jest nazw  pliku 

-h file 

true 

gdy file jest nazw  linku do pliku ('symbolic link') 

-r file 

true 

gdy file istnieje i mamy pozwolenie na czytanie 

bash 

-s file 

true 

gdy file istnieje i mam rozmiar wi kszy od 0 

background image

Unix -  rodowisko u ytkownika, shelle 

'tedd' T. K dzierski 

str. 10/10 (ost. akt.: 14-02-05) 

 

-w file 

true 

gdy file istnieje i mamy pozwolenie na zapisywanie / modyfikacje / skasowanie file 

-x file 

true 

gdy file istnieje i mamy pozwolenie na wykonanie file 

-O file 

true 

gdy file istnieje i jeste my jego wła cicielem 

-G file 

true 

gdy file istnieje i jeste my jego 'grupowym' wła cicielem 

file1 -nt file2 

true 

gdy file1 jest 'nowsze' (pó niej modyfikowane) ni  file2 

 

file1 -ot file2 

true 

gdy file1 jest 'starsze' (wcze niej modyfikowane) ni  file2 

 

Wewn trz skryptu uruchamianego pod kontrol  

basha 

mo emy - oprócz normalnego wywołania wszystkich programów, dost pnych w naszej wersji Unixa - 

u ywa  nast puj cych instrukcji 'programistycznych': 

 

 

bash

 jest bardzo 'czuły na spacje' - je eli w skryptach nie b dziemy oddziela  spacj  poszczególnych składników instrukcji 

bash

 nie b dzie ich 

wykonywał, zgłaszaj c bł dy składniowe. 

 

background image

Unix -  rodowisko u ytkownika, shelle 

'tedd' T. K dzierski 

str. 11/11 (ost. akt.: 14-02-05) 

 

bash 

if wyra enie; then 

 instrukcja

1

 ;  

[ elif wyra enie

2

 ; then 

 instrukcja

2

 ; ] 

 ...  

[ else 

   instrukcja

3

 ; ] 

fi 

badanie warunków, je eli 

wyra enie

 ma warto  

true

 - wykonywana jest 

instrukcja

1

. Je eli 

wyra enie

 ma 

warto  

false

 i wyst puje 

elif

 - badana jest warto  

wyra enie

2

. Je eli to wyra enie ma warto  

true

 - 

wykonywana jest 

instrukcja

2

. T  konstrukcj  mo na powtarza  dowoln  ilo  razy. 

Instrukcja

3

, wyst puj ca po 

else

 jest wykonywana kiedy wszystkie inne badane warunki nie były prawdziwe. 

 

Przykład u ycia 

if

- zob. instrukcja 

select

background image

Unix -  rodowisko u ytkownika, shelle 

'tedd' T. K dzierski 

str. 12/12 (ost. akt.: 14-02-05) 

 

while wyra enie; do 

 instrukcja;  

done 

dopóki 

wyra enie

 ma warto  

true

 - powtarzaj wykonywanie 

instrukcji

 

Sprawdzaj, czy u ytkownik potrafi odgadn  to co wymy liłe  (opis 

read

 - poni ej, podpowiedz - w stylu wej cia 

do Mori): 

 

slowo = 'zgadnij' 

odpowiedz = 'cos' 

while [ odpowiedz != slowo ];  

do 

     { 

           echo zgadnij to slowo: 

           read odpowiedz 

           if [ odpowiedz != slowo ]; then 

               echo Nie zgadles ... 

           fi 

     } 

done

 

break  

przerywa wykonanie p tli 

while

 lub 

for

 

 

continue  

przechodzi do nast pnej iteracji p tli 

while

i lub 

for 

background image

Unix -  rodowisko u ytkownika, shelle 

'tedd' T. K dzierski 

str. 13/13 (ost. akt.: 14-02-05) 

 

exit 

exit liczba 

ko czy wykonanie skryptu. Je eli u yjemy opcjonalnego parametru 

liczba

 jego warto  b dzie kodem wykonania 

skryptu. 

 

case word in  

( pattern ... | pattern ) 

 instrukcja ; 

       ... 

 esac 

instrukcja wyboru. Warto  zmiennej 

word

 jest porównywana z wzornikami (

pattern

). Obowi zuj  normalne 

zasady interpretowania wzorników (wyra e  regularnych). Je eli warto  zmiennej 

word

 'pasuje' do wzornika - 

wykonywane s  instrukcje wpisane po 

pattern

. Wzorników mo e by  kilka - s  wtedy oddzielane znakiem 

|

 

interpretowanym jako alternatywa wzorników. Je eli warto  zmiennej 

word

 zostanie dopasowana do jakiego  

wzornika - wynikiem działania instrukcji 

case

 jest kod wyniku wykonania ostatniej instrukcji w li cie instrukcji po 

dopasowanym wzorniku. Je eli warto  

word

 nie zostanie dopasowana do  adnego wzornika - wynikiem 

działania 

case

 jest zero. 

 

Sprawd  sposób wpisania nazwy u ytkownika: 

 

echo Wprowadz nazwe uzytkownika: 

read uname 

case uname in 

( 'A-Z' ) 

    echo Bledna nazwa - wpisz nazwe uzytkownika malymi literami 

    break 

( '0-9' ) 

    echo Bledna nazwa uzytkownika - musi zaczynac si  od litery 

    break 

esac

 

background image

Unix -  rodowisko u ytkownika, shelle 

'tedd' T. K dzierski 

str. 14/14 (ost. akt.: 14-02-05) 

 

for name [ in word ] ;  

do instrukcja ;  

done

 

word

 jest list  nazw (słów). Zmienna 

name

 po kolei przyjmuje warto ci z tej listy, 

instrukcje

 s  powtarzane tak 

długo, a  zostan  wyczerpane wszystkie warto ci z listy 

 

aby wy wietli  zawarto  wszystkich plików  w bie cej kartotece, których nazwy zaczynaj  si  od 

f

 

for fname [ in f* ] ; 

do 

    { 

         cat $fname 

    } 

done

 

 

for (( expr1 ; expr2 ; expr3 )) ; 

do 

instrukcja ; 

done 

analogicznie jak p tla 

for

 w j zyku C 

 

Aby poprawi  sobie samopoczucie - wy wietli  10 razy 'kiedys w ko cu b d  mogl si  wyspac do woli...': 

 

for (( zm = 1 ; zm < 11 ; zm = zm -1 )) ; 

do 

       echo Kiedys w koncu b d  mogl si  wyspac do woli... 

done

 

background image

Unix -  rodowisko u ytkownika, shelle 

'tedd' T. K dzierski 

str. 15/15 (ost. akt.: 14-02-05) 

 

 

select name [ in word ] ; do 

 instrukcja ;  

done 

'pozwól wybra  u ytkownikowi' - wy wietlane s  wszystkie słowa z 

word

, ponumerowane. Wykonanie skryptu 

zostaje zatrzymane - shell czeka na to co wpisze u ytkownik. Je eli u ytkownik wpisze jedn  z liczb, b d c  

numerem słowa - to słowo zostanie wstawione do zmiennej 

name

. Je eli u ytkownik wpisze pust  lini  (naci nie 

Enter

 bez wpisania liczby) - lista jest wy wietlana ponownie. Je eli wpisana warto  nie jest liczb  lub jest liczb  

spoza zakresu numerów wy wietlonych u ytkownikowi - 

name

 b dzie puste. Ka dorazowo w zmiennej 

REPLY

 

pami tana jest cała wpisana przez u ytkownika linia. Po ustawieniu warto ci zmiennej 

name

 wykonywane s  

instrukcje 

instrukcja

 

Wy wietl nazwy plików zaczynaj cych si  od 

t

, pozwól wybra  plik którego zawarto  zostanie wy wietlona: 

 

echo Wybierz plik do wyswietlenia: 

select fname [ in t* ]; 

do 

    { 

        if [ $name != '' ]; then 

            echo Zawartosc pliku $name: 

            cat $name 

        fi 

    } 

done

 

background image

Unix -  rodowisko u ytkownika, shelle 

'tedd' T. K dzierski 

str. 16/16 (ost. akt.: 14-02-05) 

 

 

read -s -t timeout -p prompt  

-n nchars  

name

1

 ... name

n

 

jedna linia jest wczytywana z termianla, an którym uruchomiony został skrypt. Linia jest dzielona na słowa, 

pierwsze słowo jest wstawiane do zmiennej 

name

1

, drugie - do 

name

2

, itp. Je eli u ytkownik wpisze wi cej słów 

ni  wynosi ilo c zmiennych w komendzie 

read

 - nadmiarowe słowa s  ignorowane. Je eli słów jest mniej - 

'ko cowe' zmienne z listy w komendzie 

read

 b d  miały 'pust ' (NULL) warto . Ka dorazowo w zmiennej 

REPLY

 jest pami tana cała linia wpisana przez u ytkownika. 

 

Nast puj ce elementy komendy 

read

 s  opcjonalne: 

-s

 

 

('silent') tekst wpisywany przez u ytkownika nie jest wy wietlany na ekranie 

-t timeout

 

je eli przez 

timeout

 sekund u ytkownik nic nie wpisze - komenda 

read 

ko czy si , wszystkie 

zmienne maj  warto  pust  

-p prompt

 

wy wietl 

prompt

 przed pobieraniem słów z linii 

-n nchars

 

zako cz wczytywanie po (maksymalnie) 

nchars

 znakach (lub naci ni ciu klawisza 

Enter - je eli 

wpisywana linia jest krótsza ni  

nchars

 znaków) 

 

Przykład u ycia - zob. instrukcje 

while

 i 

case

 

Test.wy: 

 

 

w jaki sposób mo na utworzy  skrypt, interpretuj cy komendy wsadowe programu finansowo – ksi gowego? Zakładamy,  e program 

nazywa si  KASIAZ, znajduje si  w kartotece /usr/local/bin 

napisz mały 'symulator DOSu'. Skrypt - w p tli - wczytuje i rozpoznaje komendy wpisywane przez u ytkownika. Pozwól na wpisanie 

nast puj cych komend: 

 

dir wzornik 

 

wylistuj opisy wszystkich plików i kartotek których nazwy pasuj  do 

wzornika

 

background image

Unix -  rodowisko u ytkownika, shelle 

'tedd' T. K dzierski 

str. 17/17 (ost. akt.: 14-02-05) 

 

 

type plik 

 

wy wietl zawarto c pliku (

cat

 

del plik   

 

skasuj plik 

 

help 

 

 

wy wietl krótki opis działania skryptu 

 

quit 

 

 

zako cz prac  skryptu 

 

 

Ka da inna komenda powinna wy wietla  komunikat o bł dzie. 

 

napisz skrypt posiadaj cy jeden parametr - wzornik nazw. Skrypt powinien sprawdza , jakie go typu s  nazwy pasuj ce do wzornika 

(kartoteka, plik, link) i wy wietla  nazwy pasuj ce do wzornika z odpowiednim komentarzem 

 

Koniec 

 

Nast pny rozdział: 

procesy.doc