POWŁOKA
( ang. SHELL) -
jak większość elementów Systemu UNIX
sama powłoka (shell) jest programem, takim jak i inne.
Interpretery różnych powłok w systemie operacyjnym UNIX
przechowywane są w plikach do których każdy z użytkowników
systemu ma dostęp w trybie egzekucji:
/bin/sh
- Bourne shell ,powłoka Bourne'a
/bin/csh
- C shell , powłoka C
/bin/ksh
- Korn shell
/bin/rsh
- remote shell
/bin/rksh
- remote Korn Shell
/bin/pam
- Personal Applications Manager - a visual shell
W związku z tym, nowa powłoka Bourne’a może być uruchomiona
przez wykonanie polecenia ( tak jak każdego innego polecenia ):
$
/bin/sh
lub po prostu
$
sh
( ponieważ ścieżka /bin jest na ogół w zestawie środowiska
poprzedniej powłoki wpisana do zmiennej PATH )
UNIX - powłoka jako program
Wniosek:
powłoka jest pewnym programem, który może być
uruchomiony, tak jak
każde inne polecenie lub program
aplikacyjny.
Co z tego wynika:
- dla powłoki możemy także określić takie pojęcia jak:
STDIN - standardowe urządzenie wejścia
( default=klawiatura )
STDOUT - standardowe urządzenie wyjścia ( default=monitor )
STDERR - standardowe urządzenie dla komunikatów
( default=monitor )
- zestaw parametrów wywołania powłoki poleceniem
$
sh parametr1 parametr2 [... parametrN]
-
jeśli powłoka została uruchomiona poleceniem bez parametrów i
bez redyrekcji strumienia STDIN, to mówimy że powłoka pracuje w
trybie interakcyjnym, czyli takim, jak opisano wcześniej na
zajęciach, tzn. po wykonaniu ostatniego polecenia przechodzi na
nasłuch ( z klawiatury ) następnego polecenia pokazując
prompt
na ekranie (
$
)
- jeśli powłoka zostanie uruchomiona w jeden z dwojga poniżej
przytoczonych metod
$
sh < plik1
lub
$
sh plik1
to źródłem poleceń dla nowo uruchomionej powłoki (nowy,
odrębny proces), jest informacja zapisana w pliku o nazwie
plik1
.
Oczywiście, treść pliku plik1, musi stanowić ciąg linii tekstu, każda
z linii jest dobrze skonstruowanym poleceniem powłoki.
UNIX - powłoka jako program
PRZYKŁAD Na poprzednich zajęciach rozwiązywano zadanie
postaci:
Użytkownik chce szybko się dowiedzieć, ile obiektów znajduje się
we wskazanym katalogu ( w przykładzie jest to katalog
/home
).
Zaproponowano 2 alternatywne podejścia:
UNIX - powłoka jako program
Rozwiązanie 1
Ciąg poleceń:
$
ls /home > listahome
$
wc -w < listahome
$
rm listahome
Rozwiązanie 2
Potok:
$
ls /home | wc -w
Możliwe jest zrealizowanie obu sposobów nieco inaczej, przez
uruchomienie kolejnej powłoki dla realizacji tego celu:
Rozwiązanie 1a
Rozwiązanie 2a
$
sh wykonaj1
$
sh wykonaj2
jeśli uprzednio przygotowano plik
wykonaj1 o zawartości :
wykonaj2 o zawartości
:
ls /home > listahome
ls /home | wc -w
wc -w < listahome
rm listahome
Oba pliki mogą być przygotowane typowym edytorem tekstu
(pliki ASCII).
Rozwiązanie zaproponowane poprzednio jest mało elastyczne.
Zawsze będzie zliczać pliki w katalogu
/home
. Zliczenie plików w
innym katalogu będzie możliwe gdy zmienimy tekst
/home
na inny
( prawidłowo skonstruowaną ścieżkę do katalogu) w plikach :
wykonaj1
lub
wykonaj2
.
Powłoka dopuszcza użycia pewnych parametrów, które mogą być w
plikach
wykonaj1
lub
wykonaj2
reprezentowane w symboliczny
sposób, za pomocą:
$1
,
$2
,
$3
,
$4
,
$5
,
$6
,
$7
,
$8
,
$9
Noszą one nazwę parametrów pozycyjnych. W trakcie realizacji
nowego procesu powłoki w miejsce parametru pozycyjnego
wstawiany jest parametr z lini wywołania nowej powłoki.
PRZYKŁAD
Wracamy do naszego przykładu.
1. Zmieniamy zawartość pliku
wykonaj1
tak , by w miejsce
/home
wstawić
$1
2. Wykonujemy polecenie:
$
sh wykonaj1
/home
3. Wykonujemy polecenie:
$
sh wykonaj1
/home/studenci
UNIX - powłoka jako program
PRZYKŁAD
Pokażemy zastosowanie
dwóch parametrów
pozycyjnych.
Poprzednie zadanie wzbogacamy o uzupełnienie pojawiającej się
liczby plików we wskazanym katalogu ( za pomocą pierwszego
parametru pozycyjnego ) komentarzem. Komentarz ten może być
drugim parametrem pozycyjnym.
1. Zmieniamy zawartość pliku
wykonaj1
2. Uruchamiamy nową powłokę
z parametrami:
wykonaj1
- nazwa pliku
/home/studenci
to $1
Janusz Donizak
to $2
UNIX - powłoka jako program
Jeszcze większą elastyczność zastosowania powłoki jako programu
daje możliwość uprzedniego przygotowania pliku z listą poleceń
powłoki ( np.
wykonaj1
z poprzedniego przykładu ) , i uczynienie
tego pliku
plikiem wykonywalnym
( egzekucyjnym ),
przez
modyfikację praw dostępu
.
1
. Sprawdzamy prawa dostępu do pliku
wykonaj1
2
.
Modyfikujemy prawa dostępu ( w odniesieniu do siebie jako
właściciela pliku)
3
. Sprawdzamy ponownie nowe prawa dostępu do pliku
wykonaj1
4
. Uruchamiamy program ( nowe polecenie !!! )
./wykonaj parametr1 paramter2
UNIX - powłoka jako program
Uwaga: znaki
./
na początku polecenia wskazują jednoznacznie
ścieżkę
do
katalogu
aktualnego.
Przy
innych
poleceniach
( systemowych) tego nie trzeba robić, gdyż przeszukiwana jest
ścieżka
/bin
gdzie odpowiednie pliki poleceń są składowane
Zmienne powłoki.
W powłoce można używać zmiennych, którym przypisuje się
określoną wartość za pomocą instrukcji przypisania ( podstawienia )
nazwazmiennej=wartość
gdzie
nazwazmiennej
to ciąg znaków nazwy, zaś
wartość
to ciąg
znaków określających wartość (czasami niezbędne jest zastosowanie
znaków cytowania)
Przykład. W poprzednio przygotowanej procedurze
wykonaj1
wprowadzimy pewne zmiany, przez wykorzystanie pojęcia zmiennej.
1. Zmiany dokonane w pliku
wykonaj1
2. Uruchomienie procedury wykonaj1
UNIX - powłoka jako program
Uwaga: Wykorzystanie zmiennej przez odwołanie się do niej:
nazwa zmiennej musi być poprzedzona znakiem
$
( $nazwazmiennej)
np.
echo
$abc
$1
$kon
Zmienne powłoki ustalane w momencie uruchomienia nowego
procesu powłoki.
Pewna grupa zmiennych ma nadaną wartość przez powłokę w
momencie uruchomienia procedury powłoki. Są to:
#
- ilość parametrów pozycyjnych wywołania procedury powłoki,
?
- kod powrotu (dziesiętnie) ostatniego procesu uruchomionego
synchr.
$
- numer procesu (PID) właśnie tej procedury powłoki
!
- numer procesu (PID) ostatniego polecenia wykonanego w tle
(background)
*
- wszystkie parametry pozycyjne razem
HOME
- ścieżka do katalogu osobistego właściciela procesu
procedury powłoki,
PATH
- ściezki przeszukiwane w celu odszukania plików poleceń,
Przykład
1. Przygotowujemy plik
procedury proc0.sh
UNIX - powłoka jako program
2. Uruchamiamy procedurę
3 parametry pozycyjne:
Ala
,
ma
,
kota
Podstawienie polecenia.
Częstym przypadkiem podstawienia (przypisania) wartości zmiennej
jest podstawienie wyniku jakiegoś polecenia. Takie podstawienie ma
postać :
zmienna = ‘polecenieA‘
Opis:
wykonywane jest
polecenieA
, wynik polecenia, który pojawił by
się na STDOUT umieszczany jest w miejsce
poleceniaA
, przez co
faktycznie realizowane jest podstawienie:
zmienna = ’wynik_poleceniaA’
UWAGA: znak cytowania, który ma tu zastosowanie, to klawisz :
Przykład
Spróbujmy napisać procedurę powłoki, która przypisuje zmiennej
ile1 ilość podkatalogów w katalogu wskazanym parametrem
pozycyjnym
UNIX - powłoka jako program
Uruchamiamy procedurę:
./za1.sh /home
`
~
PRZYKŁAD: Instrukcja wyboru case
Przykład wykorzystania instrukcji wyboru "CASE" do analizy ilości
parametrów wywołania procedury oraz wykorzystania argumentów
$1, $2 ... i argumentu specjalnego "$#"
UNIX - powłoka jako program
OPIS:
Komentarz - linie
zaczynające się
znakiem #
Początek instr. Case
Przypadek
0 parametrów
1 parametr
2 parametry
każda inna ilość
parametrów niż 0,1
lub 2
koniec instr. case
Uruchomienie procedury:
./proc1.sh vera 12
Instrukcja warunkowa if
UNIX - powłoka jako program
if
polecenieA
then
grupapoleceń1
else
grupapoleceń2
fi
OPIS:
Egzekwowana jest tylko jedna grupa
poleceń,
jeśli kod wyjścia
poleceniaA
= 0 (TRUE)
grupa1
jeśli kod wyjścia
poleceniaA
> 0 (FALSE)
grupa2
Uwaga: każdemu poleceniu, lub generalnie procesowi nadawany
jest kod wyjścia ( stała całkowita nieujemna ), za pomocą
której
można
scharakteryzować
wynik
realizacji
polecenia ( procesu ). W opisie działania polecenia taka
informacja jest na ogół dostępna.
Instrukcje warunkowe
if
można zagnieżdżać jedną
wewnątrz drugiej:
if
polecenieA
then
if
polecenieB
then
grupa1
else
grupa2
fi
fi
Instrukcja warunkowa if
UNIX - powłoka jako program
if
polecenieA
then
grupapoleceń1
else
grupapoleceń2
fi
OPIS:
Egzekwowana jest tylko jedna grupa
poleceń,
jeśli kod wyjścia
poleceniaA
= 0 (TRUE)
grupa1
jeśli kod wyjścia
poleceniaA
> 0 (FALSE)
grupa2
Uwaga: każdemu poleceniu, lub generalnie procesowi nadawany
jest kod wyjścia ( stała całkowita nieujemna ), za pomocą
której
można
scharakteryzować
wynik
realizacji
polecenia ( procesu ). W opisie działania polecenia taka
informacja jest na ogół dostępna.
Instrukcje warunkowe
if
można zagnieżdżać jedną
wewnątrz drugiej:
if
polecenieA
then
if
polecenieB
then
grupa1
else
grupa2
fi
fi
PRZYKŁAD zastosowania instrukcji
if
w powiązaniu z poleceniem
test.
Przygotowujemy procedurę, która ma sprawdzić, w którym spośród
dwóch katalogów jest więcej podkatalogów. Ścieżki do katalogów
porównywanych podane parametrami pozycyjnymi.
ROZWIAZANIE:
1. Wykorzystamy poprzednio napisaną
procedurę
za1.sh
, po małej modyfikacji,
w miejsce tekstu w poleceniu
echo
wstawiamy tylko zmienną wyrażającą
dziesiętnie ilość podkatalogów
2. Nowa procedura
za2.sh
będzie
korzystać z procedury
za1.sh
do wyzna-
czenia ilości podkatalogów.
Wykorzystujemy polecenie
test
do sprawdzenia wartości zmiennych
liczba1
i
liczba2
.
3. Uruchomienie procedury
UNIX - powłoka jako program
test
ZADANIE1 Przebuduj procedurę
za2.sh
, tak aby w przypadku
niewłaściwej liczby parametrów pozycyjnych w linii wywołania
procedury ( różnej od 2 ) , procedura nie podejmowała innych
działań, tylko objaśniła użytkownika o swym działaniu.
ROZWIĄZANIE1:
UNIX - powłoka jako program
case
UNIX - powłoka jako program
test
ZADANIE2 Zbuduj procedurę
proc2.sh
, która sprawdzi które
parametry pozycyjne z linii wywołania procedury są plikami
zwykłymi czy katalogami. Jeśli parametr procedury poprzedzony jest
znakiem - , należy go traktować jako opcję.
ROZWIĄZANIE2:
Instrukcja pętli for
Pętla jest konstrukcją programistyczną pozwalającą na wielokrotne
powtórzenie jednego lub wielu poleceń:
UNIX - powłoka jako program
W tym kolorze
elementy stałe
instrukcji
W tym kolorze elementy
zmienne
(zależne od użytkownika)
for
zmienna
in
lista
do
grupapoleceń
done
OPIS:
Egzekwowana jest
grupapoleceń
tylokrotnie, ile obiektów występuje
w liscie
lista
, przy czym za każdym razem
zmienna
przyjmuje kolejną
wartość z listy
lista
.
Możliwe jest wielokrotne zagnieżdżanie pętli wewnątrz pętli, ale
należy zachować indywidualną (unikalną) nazwę
zmiennej
dla każdej
z nich.
UWAGA :
gdy lista ma postać reprezentowaną przez pojedynczy znak
*
,
wtedy
lista
reprezentuje zbiór nazw obiektów (plików i
podkatalogów) w katalogu aktualnym.
UNIX - powłoka jako program
Przygotowanie do prezentacji przykładu:
1. Utwórz w katalogu aktualnym pliki:
a) plik tekstowy o nazwie mic1.txt zawierający pierwsze
strofy Inwokacji do „Pana Tadeusza” A. Mickiewicza
b) plik tekstowy o nazwie kolory.txt zawierający
UNIX - powłoka jako program
Przygotowanie do prezentacji przykładu:
2. Utwórz w katalogu aktualnym pliki:
Listę plików zawierających kalendarze miesięczne roku 2000
dla każdego z miesięcy osobno, o nazwach :
1.fuj - styczeń 2000
2.fuj - luty 2000
.
.
.
12.fuj
- grudzień 2000
W tym celu napisz procedurę, korzystając z instrukcji
for
.
Rozwiązan
ie
( click )
cal
UNIX - powłoka jako program
ZADANIE3: Przygotuj procedurę, która będzie:
1) rozpoznawać pliki zwykłe w katalogu aktualnym
2) spośród rozpoznanych plików zwykłych, wybierać takie, które
mają nazwę skonstruowaną w taki sposób że:
2a)
na końcu znajduje się ciąg znaków:
.txt
2b)
na końcu znajduje się ciąg znaków:
.fuj
3) Po rozpoznaniu pliku typu
2a
, otwiera edytor
/usr/vue/bin/vuepad
do edycji tego pliku
4) Po rozpoznaniu pliku typu
2b
, zmienia jego nazwę tak by kończyła
się ciągiem znaków
.be
( Uwaga: najpierw trzeba sprawdzić, czy
użytkownik uruchamiający procedurę ma uprawnienia zapisu ).
ROZWIĄZANIE3:
Wskazówka:
Polecenie treści
/usr/vue/bin/vuepad
nazwapliku
uruchamia
edycję tekstu z pliku
nazwapliku
.
Każde polecenie zakończone znakiem & , powoduje uruchomienie
nowego procesu biegnącego niezależnie od procesu który
spowodował jego powstanie.
Pytanie: jaka będzie różnica w realizacji procesów ( z poziomu
procedury )
/usr/vue/bin/vuepad
nazwapliku
/usr/vue/bin/vuepad
nazwapliku
&
UNIX - powłoka jako program
basename
ROZWIĄZANIE3:
Wskazówka: aby wyciąć fragment nazwy pliku z jego ścieżki można
wykorzystać polecenie
basename
mv
test
Rozwiązan
ie
( click )
Napisz 2 wersje, ze
znakiem
&
i
bez,
porównaj
efekt
w
trakcie
wykonania
procedury
*
tutaj oznacza wszystkie
nazwy plików (i katalogów)
w katalogu aktualnym
UNIX - powłoka jako program - edytor „ed”
W systemach Unixowych, występują bardzo stare edytory tekstu,
które pozwalały na wykonywanie edycji tekstów, bez korzystania z
możliwości oferowanych przez współczesne terminale. Takim
edytorem jest np. edytor liniowy
ed
, który nadal ma swoje
zastosowanie w niektórych sytuacjach ( będzie to przedmiotem
kolejnego przykładu zastosowania procedur ).
Edytor ed umożliwia operacje na określonym pliku tekstowym bez
potrzeby wyświetlania choćby jednej nawet linii tego pliku. W trybie
interakcyjnym, potrafi wyświetlić pojedynczą linie tylko. W trybie
wsadowym, jest jednak bardzo użyteczny.
Parę poleceń użytecznych:
ed
abc
uruchomienie edytora w trybie interakcyjnym
dla edycji pliku
abc
ed
abc
<<
%
lista rozkazów edycji
%
Rozkazy edycji edytora ed:
g
/
wzor1
/
s
/
wzor2
/
wzor3
/g -
uruchomienie edytora w trybie wsadowym,
z wczytywaniem poleceń edycyjnych
zawartym pomiędzy znakami cytowania
%
we wszystkich liniach pliku (
g
=global) w
których odnajdziesz fragment tekstu
/
wzor1
/ , dokonaj podstawienia
(
s
=substitute) tekst
wzor2
na tekst
wzor3
dla każdego pojawienia się
wzor2
w linii
(g=global)
Polecenia edycyjne edytora ed:
w
- zapisz przetwarzany plik i zakończ edycje
ZADANIE:
Poprzednią procedurę, proc3.sh, przerób tak, by w odnalezionych
plikach tekstowych (*.txt) zamienić każde pojawienie się tekstu
zadanego pierwszym parametrem pozycyjnym procedury, na tekst
zadany przez drugi parametr pozycyjny. Wykorzystaj edytor ed.
Rozwiązan
ie
( click )
KONIEC TEMATU
„PROCEDURY”
KONIEC POKAZU
Polecenie wypisuje zawartość pliku dzieląc go na kolejne
ekrany. Rozmiar ekranu (ilość linii) czytany jest przez
system z bazy dostępnych terminali. Jeśli nie jest to
możliwe system przyjmuje że terminal ma 24 linie. Każdy
wypisany pełny ekran kończony jest linią ze znakiem
:
(dwukropek), jeśli nie użyto opcji
-p
. Polecenie
pg
ma
bardzo rozbudowany system wewnętrznych poleceń.
Między innymi: naciśnięcie klawisza
enter
powoduje
wypisanie kolejnej linii, sekwencja klawiszy
spacja
enter
wypisuje kolejny ekran,
5
enter
wypisuje zawartość pliku od
linii 5,
q
enter
przerywa wypisywanie,
h
enter
wypisuje
skróconą pomoc (help)
.
Składnia:
pg
[-nr]
[
-p
tekst]
[-cefns]
[ +numer ] [ +wzorzec ] [
plik ...]
pg
- wyświetl zawartość pliku tekstowego
z podziałem na ekrany
Wybrane Opcje:
-e
brak zatrzymywania po wyświetleniu pliku (gdy wypisywana
jest większa
ilość plików),
-s
tekst ustawiony przez
-p tekst
będzie podświetlany,
Parametry:
-nr
ustawia długość strony na
nr
linii (standardowo ilość
linii
terminalu),
-p
tekst
tekst kończący każdą
wypisaną stronę
(standardowo
:
) ,
+numer
wypisywanie od linii o numerze
numer
,
+wzorzec
rozpoczyna wypisywanie od linii w której znaleziono
ciąg
znaków określony przez
wzorzec
,
plik ...
nazwy wyświetlanych plików.
Polecenie wypisuje zawartość pliku dzieląc go na kolejne
ekrany. Rozmiar ekranu (ilość linii) czytany jest przez
system z bazy dostępnych terminali. Jeśli nie jest to
możliwe system przyjmuje że terminal ma 24 linie.
Każdy wypisany pełny ekran kończony jest linią z
tekstem
--More--
oraz informacją ile tekstu już wypisano.
Polecenie
more
ma bardzo rozbudowany system
wewnętrznych poleceń. Między innymi: naciśnięcie
klawisza
enter
powoduje wypisanie kolejnej linii,
spacji
kolejnego ekranu, klawisza
q
przerywa wypisywanie a
klawisza
h
wypisuje skróconą pomoc (help)
.
Składnia:
more
[-n]
[-cdflsu]
[ +numer ] [ +wzorzec ]
[ plik ...]
more
- wyświetl zawartość pliku
tekstowego
z podziałem na ekrany
Wybrane Opcje:
-d
wypisuje dodatkowo po każdej stronie tekst
press space to
continue ,
q to quit
(standardowy tekst
--More-- x%
),
-s
usuwa wielokrotnie występujące linie puste zostawiając jedną,
Argumenty:
-n
ustawia długość strony na
n
linii (standardowo ilość
linii
terminalu),
+numer
wypisywanie od linii o numerze
numer
,
+wzorzec
rozpoczyna wypisywanie 2 linie przed linią w której
znaleziono
ciąg znaków określony przez
wzorzec
,
plik ...
nazwy wyświetlanych plików.
Polecenie wypisuje kalendarz dla wskazanego przez
argumenty miesiąca lub całego roku. Przy braku
argumentów wypisywany jest kalendarz dla aktualnego
miesiąca. Rok musi zawierać się w przedziale 1-9999.
Polecenie zakłada że każdy rok rozpoczynał się w
styczniu, chociaż nie jest to prawdą historyczną.
Składnia:
cal
[ [ month ] year ]
cal
- wypisz kalendarz
Argumenty:
month
- numer miesiąca w roku,
year
- wybrany rok.
Przykład:
polecenie
cal 9 1939
wypisuje wrzesień 1939 roku
September 1939
S M Tu W Th F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Polecenie
czyta kolejne pliki z listy
file ...
i wypisuje w
postaci jednego pliku na standardowym wyjściu (zwykle
ekran terminala).
Jeśli lista
file...
jest pusta,
cat
czyta ze standardowego pliku
wejściowego (zwykle klawiatura).
cat
– połącz (konkatenuj) i wyświetlaj pliki
Składnia
-
cat
[-s] [-u] [-v] [-t] [-e]
file ...
Opcje:
-s
brak komunikatów o nieistnieniu plików,
-u
brak buforowania operacji we/wy,
-v
znaki niewidoczne (np. kontrolne) poza pewnymi
wyjątkami np. tabulator, pisane są w postaci
^n, gdzie n znak z zakresu (100-137 oct),
-t
znak tabulatora
pisan
y w postaci ^I
(opcja dostępna tylko łącznie z opcją
-v
),
-e
znak $ dopisywany na końcu każdej linii
(opcja dostępna tylko łącznie z opcją
-v
).
Argumenty:
file
- lista łączonych plików.
Polecenie zlicza ilość wierszy, słów lub znaków we
wskazanych plikach lub na standardowym wejściu. Wynik
działania wypisywany jest na standardowe wyjście. Słowo
wg. tego polecenia to ciąg znaków zakończony spacją,
tabulatorem lub znakiem nowej linii. Opcje mogą być
stosowane łącznie. Standardowo polecenie zakłada że
włączone są wszystkie opcje (
-lwc
).
Składnia:
wc
[-lwc]
[name]
wc
- zlicz słowa, linie lub znaki
Opcje:
-l
zliczana jest ilość wierszy,
-w
zliczana jest ilość słów
,
-c
zliczana jest ilość znaków.
Argumenty:
name
nazwa pliku.
Składnia
ls
[-abcdfgilmnopqrstuxACFHLR1]
[names]
ls
- wypisanie zawartości katalogów
Polecenie wypisuje zawartość wszystkich katalogów
wymienionych w liście katalogów
names
. Jeśli nie
występuje argument
names
wypisywana jest
zawartość katalogu aktualnego. Standardowo
wypisywane są wszystkie pliki poza tymi których
nazwa rozpoczyna się od
.
lub
..
(pliki ukryte).
Wybrane Opcje:
-a
wypisuje wszystkie pliki, również ukryte,
-l
pełna informacja o plikach: typ pliku, prawa dostępu,
ilość linków, właściciel, grupa, rozmiar, czas
modyfikacji oraz nazwa,
-p
dopisanie znaku
/
do nazwy katalogów,
-r
wypisanie w kolejności od najstarszego do
najmłodszego,
-t
wypisanie w kolejności zależnej od czasu
modyfikacji(pierwszy
najwcześniejszy,
-R
wypisywanie rekurencyjne łącznie z zawartością
podkatalogów
-1
wypisywanie w jednej kolumnie
Argumenty:
names
lista katalogów
Polecenie
ls -alt
wypisuje pełną informację o wszystkich
plikach katalogu aktualnego (łącznie z plikami ukrytymi) w
kolejności zależnej od czasu modyfikacji .
Polecenie, w zależności od użytych opcji, może wyświetlić:
nazwę użytkownika, linię terminala, czas zgłoszenia się do
systemu (logowania), czas jaki upłynął od ostatniej
aktywności linii terminala oraz systemowy numer (process
ID) interpretera poleceń (shell) dla każdego użytkownika
obecnie pracującego w systemie. Informacja ta czytana jest
z pliku /etc/wtmp lub z pliku
file
jeśli występuje ten
argument.
who
- kto jest w systemie
Składnia
-
who
[-muTlHqpdbrtasAcR]
[file]
who am i
Wybrane Opcje:
-m
równoważna poleceniu
who am
i
lub
who am I
,
-T
pełna informacja łącznie ze stanem terminala,
numerem procesu, nazwą komputera lokalnego itp.
-H
wypisywane są dodatkowo nagłówki kolumn,
-R
wypisywana jest dodatkowo nazwa komputera lokalnego ,
Argumenty
:
file
- przeglądany jest plik
file
a nie
standardowy /etc/wtmp
$
who
-H
NAME
LINE
TIME
adam
ttyp3
May 3 08:23
marcin
console
May 3 08:08
szczur
ttyp4
May 4 12:16
$
Polecenie wycina wskazane kolumny pól każdej liki
pliku. Wynik działania polecenia wypisywany jest na
standardowe wyjście. Pole może mieć stałą szerokość
(określoną ilość znaków) lub może być ograniczone
wybranym znakiem zwanym delimiterem.
Standardowym delimiterem jest tabulator.
Jeśli nie występuje argument
file...
czytane są znaki ze
standardowego wejścia.
Opcje:
-c
każdy znak jest polem,
-f
pole to ciąg znaków oddzielony delimiterem
(standardowo tabulatorem),
-d
ustawianie znaku delimitera,
-s
opuszczanie linii bez znaku delimitera.
Argumenty:
list
oddzielona przecinkami lista numerów
wycinanych
pól np. 1,4,6-9,12- oznacza: pole pierwsze,
czwarte,
od szóstego do dziewiątego oraz od 12 do
końca linii,
file...
lista nazw plików,
char
dowolny znak lub znaki specjalne i spacja
w cudysłowach .
cut
- wytnij wybrane pola z wszystkich
linii pliku
Składnia:
cut
-c
list [file ...]
cut
-f
list
[-d
char
]
[-s]
[file ...]
Składnia:
sort
[-cmu]
[
-o
out]
[bdfilnrM]
[file ...]
sort
- sortuj i/lub scal pliki
Polecenie sortuje wspólnie wszystkie linie wskazanych przez
argumenty polecenia plików tekstowych. Jeśli pliki te nie
zostaną wyszczególnione, sortowana jest informacja za
standardowego wejścia. Wynik polecenia wypisywany jest
na standardowe wyjście lub do wskazanego pliku.
Argumenty:
out
- nazwa pliku po przesortowaniu,
file ...
- lista nazw plików sortowanych,
Wybrane Opcje:
-c
- kontrola czy plik wejściowy
file
jest już
przesortowany.
Jeśli tak, nie zostanie utworzony plik wynikowy
out
.
-m
- nie sortuje, tylko scala pliki z listy,
-u
- usuwa kopie linii (zostawia tylko oryginał),
-o
- wynik polecenia pisany do pliku o nazwie
out
.
uniq
- znajdź powtarzające się linie
pliku
Składnia:
uniq
[-udc
[+n][-n]
]
[input
[output]]
...
Polecenie czyta standardowe wejście lub wskazany plik
tekstowy i porównuje sąsiadujące linie. W normalnym
przypadku, gdy nie użyto opcji, usuwane są wszystkie
kolejne kopie linii. Wynik wypisywany jest na standardowe
wyjście lub do wskazanego pliku.
Argumenty:
input
- nazwa sprawdzanego pliku,
onput
- nazwa pliku wynikowego,
+n
- liczba określająca ile znaków na
początku
każdej linii zostanie zignorowanych,
-n
- liczba określająca ile pól na początku
każdej
linii zostanie zignorowanych. Pole to ciąg
znaków oddzielony spacjami lub
tabulatorami.
Opcje:
-u
- w pliku wynikowym tylko nie
powtarzające się linie,
-d
- w pliku wynikowym tylko powtarzające się linie
(pisane
jednokrotnie),
-c
- dopisywanie ilości powtórzeń linii.
Składnia:
grep
[-cefilnqsvx]
wzorzec [plik ...]
grep
- wypisz wiersze pliku w których
występuje wzorzec
Polecenie przegląda standardowe wejście lub pliki
plik...
poszukując linii w których występuje
wzorzec
. Domyślnie,
linie zawierające wzorzec kopiowane są na standardowe
wyjście. Dowolny ciąg znaków, będący
wzorcem
, w
przypadku gdy zawiera znaki specjalne powłoki systemu
Unix (rówież spację), należy zamknąć apostrofami.
Wybrane Opcje:
-c
wypisywana jest tylko ilość wierszy w których znaleziono
wzorzec
,
-i
nie rozróżnia
małych, dużych liter,
-l
wypisywane są tylko nazwy plików w których znaleziono
wzorzec
,
-n
dopisywane są numery wierszy w których znaleziono
wzorzec
,
-v
wypisywane są wiersze w których nie znaleziono
wzorca
,
Argumenty:
wzorzec
poszukiwany ciąg znaków,
plik
przeszukiwany plik,
Polecenie usuwa wejścia (entries) dla jednego lub wielu
plików z katalogu. Jeśli wejście (entry) zawiera ostatni link
do pliku, plik ten też jest usuwany. Użytkownik musi
posiadać prawa do pisania i egzekucji w katalogu z którego
usuwane są plik, ale nie musi mieć takich praw dla
usuwanego pliku. W przypadku gdy użytkownik nie ma
prawa do modyfikacji pliku, na standardowe wyjście
wysyłane jest zapytanie o potwierdzenie operacji.
rm
- usuń pliki lub katalogi
Składnia
-
rm
[-f | -i]
[-Rr]
file ...
Opcje:
-f
uniemożl
i
wia pojawienie się zapytań powłoki
o potwierdzenie operacji usuwania,
-i
wymusza pojawienie się zapytań powłoki
o potwierdzenie
operacji usuwania,
-R
rekurencyjne usuwanie z katalogów i podkatalogów
-r
analogicznie jak
-R.
Argumenty:
file...
-
lista usuwanych plików (oraz
katalogów jeśli
używana jest opcja
-R
lub
-r .
Składnia:
test
exp
[
exp
]
test
- podaj wartość wyrażenie
logicznego
Polecenie wyznacza wartość wyrażenia logicznego
exp .
Jeśli jest prawdą (true) zwraca liczbę zero (kod wyjścia) a
gdy fałszem (false), liczbę różną od zera. Wartość różną od
zera zwracana jest również przy błędnej konstrukcji lub
braku wyrażenia
exp
.
W konstrukcji wyrażeń
exp
można używać następujących
operatorów logicznych:
!
operator negacji
-a
operator iloczynu logicznego
-o
operator sumy logicznej.
Do grupowania wyrażeń logicznych należy używać
nawiasów ale każdy nawias musi być poprzedzony
znakiem
\
gdyż są to znaki specjalne powłoki systemu Unix.
Argumenty:
exp
- wyrażenie logiczne utworzone z
następujących
składników:
-r
file
- prawda gdy plik
file
istnieje i jest udostępniony do
czytania,
-w
file
- prawda gdy plik
file
istnieje i jest udostępniony do
pisania,
-x
file
- prawda gdy plik
file
istnieje i jest udostępniony do
egzekucji,
-f
file
- prawda gdy plik
file
istnieje i jest plikiem zwykłym,
-d
file
- prawda gdy plik
file
istnieje i jest katalogiem,
-z
s1
- prawda gdy długość ciągu znaków
s1
jest zerowa,
-n
s1
- prawda gdy długość ciągu znaków
s1
jest różna od
zera,
s1
=
s2
- prawda gdy tekst
s1
jest identyczny jak
s2
,
s1
!=
s2
- prawda gdy tekst
s1
i
s2
są różne,
n1
-eq
n2
- prawda gdy liczby całkowite
n1
i
n2
są równe
(poza
-eq
mogą wystąpić następujące symbole
-ne
,
-gt
,
-ge
,
-lt
,
-le
.
basename
,
dirname
- wytnij część ścieżki
do pliku
Składnia:
basename
string [suffix]
dirname
[string]
Przykład 1:
$
basename /usr/staff/adam/kwiat.ps
kwiat
$
Przykład 2:
$
dirname /usr/staff/adam/kwiat.ps
/usr/staff/adam
$
Argumenty:
string
ścieżka do pliku,
suffix
rozszerzenie nazwy pliku.
Polecenie przenosi:
- plik
file1
do nowego lub istniejącego pliku_
new_file
(zmienia
nazwę pliku),
- plik
file1
do istniejącego katalogu
dest_dir
,
- pliki
file1
,
file2
,
...
do istniejącego katalogu
dest_dir
,
- zawartość katalogu
dir1
do nowego lub istniejącego
dest_dir
,
- zawartości katalogów
dir1
,
dir2
,
...
do nowego lub
istniejącego
katalogu
dest_dir
,
Użytkownik musi mieć prawo do pisania w istniejącym
katalogu
dest_dir
w przeciwnym wypadku operacja
zostanie przerwana. Jeśli użytkownik nie ma uprawnień do
pisania w istniejącym pliku
new_file
zostanie na
standardowe wyjście wysłane zapytanie o potwierdzenie
operacji zmiany nazwy.
Składnia:
mv
[-f | -i ]
file1 new_file
mv
[-f | -i ]
file1 [file2...] dest_dir
mv
[-f | -i ]
dir1[dir2...] dest_dir
mv
- przenieś lub zmień nazwę plików i
katalogów
Opcje:
-f
jeśli pliki o nazwie docelowej np.
new_file
już istnieją, zostaną
zamienione bez zapytania o potwierdzenie operacji,
-i
jeśli pliki o nazwie docelowej np.
new_file
już istnieją ,
generowane są
zapytania o potwierdzenie operacji,
Argumenty:
file1,file2, dir1,dir2
nazwy
przesuwanych plików i
katalogów,
new_file
nowa
nazwa pliku,
dest_dir
nazwa katalogu docelowego,
Polecenie wypisuje kalendarz dla wskazanego przez
argumenty miesiąca lub całego roku. Przy braku
argumentów wypisywany jest kalendarz dla aktualnego
miesiąca. Rok musi zawierać się w przedziale 1-9999.
Polecenie zakłada że każdy rok rozpoczynał się w
styczniu, chociaż nie jest to prawdą historyczną.
Składnia:
cal
[ [ month ] year ]
cal
- wypisz kalendarz
Argumenty:
month
- numer miesiąca w roku,
year
- wybrany rok.
Przykład:
polecenie
cal 9 1939
wypisuje wrzesień 1939 roku
September 1939
S M Tu W Th F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30