Rozdział 12. pdksh, Kurs Linuxa, Linux


Rozdział 12.
pdksh


Rick McMullin i Tim Parker

W tym rozdziale:

W poprzednim rozdziale omówiliśmy szczegóły pracy z powłoką bash. Ponieważ jednak nie każdy musi chcieć używać akurat tego interpretera, z Linuxem rozprowadzanych jest jeszcze kilka innych. Jednym z nich jest pdksh, odmiana powłoki Korn Shell (ksh). Omówimy tu w skrócie metody dostosowywania go do swoich potrzeb, najważniejsze polecenia i zmienne.

Powłoka pdksh
(Public Domain Korn Shell)

Interpreter Korn Shell, którego autorem jest David Korn, jest trzecią z powłok używanych najczęściej w systemach UNIX-owych. Został napisany później niż powłoki sh i csh, dzięki czemu łączy w sobie ich zalety. Nie jest jednak rozprowadzany razem z systemami UNIX-owymi, więc wiele osób po prostu nie miało okazji go poznać. Implementuje udogodnienia wprowadzone przez powłokę csh, a jednocześnie pozostaje całkowicie kompatybilny z powłoką sh. Wersja interpretera Korn Shell przeznaczona dla Linuxa jest dostępna za darmo i nazywa się właśnie pdksh.

Dokańczanie poleceń

Podczas wydawania polecenia jego pełne brzmienie często nie jest koniecznie do zrozumienia i prawidłowego zinterpretowania go. Dokańczanie poleceń pozwala na wpisanie tylko części polecenia, a następnie, po wciśnięciu odpowiedniej kombinacji klawiszy, interpreter próbuje dokończyć polecenie za Ciebie.

Domyślnie pdksh nie pozwala na używanie tego udogodnienia. Trzeba zażądać tego explicite, wydając jedno z poleceń:

set -o emacs
set -o vi

Powodują one, że pdksh będzie reagował na kombinacje klawiszy tak, jak robią to edytory emacs lub vi. Wybierz ten edytor, z którym jesteś lepiej obeznany.

0x01 graphic

Większość ludzi uważa, że edytor emacs jest łatwiejszy w obsłudze niż vi.

W trybie vi, zanim użyjesz jakiegokolwiek polecenia edycyjnego, musisz wejść w tryb wydawania poleceń. Można to zrobić poprzez naciśnięcie klawisza Escape. Nie można wtedy jednak dopisywać do wiersza poleceń żadnego tekstu, najpierw należy przejść do trybu edycji (jest na to kilka sposobów, można na przykład wcisnąć klawisz i - ang. insert - wstaw).

Kiedy dokańczanie poleceń jest uaktywnione, można go użyć wciskając dwukrotnie klawisz Escape (w trybie emacs) lub klawisz \ (w trybie vi). Przykładowo, jeśli w bieżącym katalogu znajdują się następujące podkatalogi i pliki:

News/ bin/ games/ mail/ sample.text test/

a chcesz edytować plik sample.text za pomocą edytora vi, możesz wydać polecenie

vi sample.text

Jednak już po wpisaniu pierwszej litery nazwy pliku nie ma wątpliwości, o który plik chodzi. Aby pdksh dokończył tę nazwę za Ciebie, wciśnij dwa razy klawisz Escape, jeśli używasz trybu emacs:

vi s<escape><escape>

Jeżeli używasz trybu vi, wciśnij klawisz \:

v s\

Rezultat dokończenia pojawi się na ekranie. Polecenie nie zostanie wykonane, dopóki nie zatwierdzisz go klawiszem Enter, dzięki czemu można sprawdzić, czy rzeczywiście chodziło Ci o postać polecenia podpowiadaną przez pdksh.

W przypadku, gdy plik sample.text nie jest jedynym plikiem o nazwie zaczynającej się na literę s, pdksh dopisuje znaki, co do których nie ma wątpliwości, po czym generuje krótki dźwięk, oznaczający konieczność wprowadzenia dodatkowych informacji.

0x01 graphic

Odpowiednikiem klawisza Escape jest kombinacja Control+[, oznaczana zazwyczaj jako ^[. Dwukrotne wciśnięcie klawisza Escape może być więc zapisane jako ^[^[. Taki zapis używany jest w wielu książkach i na stronach man.

Symbole wieloznaczne

Powłoka pdksh daje również możliwość używania w wierszu poleceń symboli wieloznacznych i, podobnie jak bash, obsługuje trzy ich rodzaje:

* zastępuje dowolny znak lub ciąg znaków,

? zastępuje dowolny pojedynczy znak,

[...] zastępuje dowolny znak zawarty pomiędzy nawiasami.

Znak * może być stosowany podobnie jak dokańczanie poleceń. Jeśli w bieżącym katalogu znajdują się następujące podkatalogi i pliki:

News/ bin/ mail/ test/ sample.text working/

a chcesz edytować plik sample.text edytorem vi, możesz wydać polecenie:

vi s*

Symbol * zastępuje dowolny znak lub ciąg znaków, więc interpreter poleceń zamienia s* na sample.text (jedyna nazwa pliku w tym katalogu, która pasuje do wzorca).

Metoda ta działa prawidłowo wtedy, gdy tylko jedna nazwa pliku zaczyna się na literę s. Jeśli jest ich więcej, wzorzec s* zostanie zastąpiony przez listę plików i podkatalogów rozpoczynających się na literę s. Podane wyżej polecenie spowoduje uruchomienie edytora vi z pierwszym plikiem z tej listy. Po zakończeniu jego edycji do edytora załadowany zostanie drugi plik itd. Metoda ta jest dobra, jeśli trzeba edytować więcej niż jeden plik. Jeśli natomiast zamierzałeś edytować tylko plik sample.text, trzeba to zrobić w inny sposób.

Bardziej praktyczne zastosowanie znaku * to wykonywanie poleceń na kilku plikach jednocześnie. Przykładowo, niech bieżący katalog zawiera następujące pliki i podkatalogi:

News/ bin/ games/ mail/ sample.text temp1.out
temp2.out temp3.out test/

Jeśli chcesz usunąć wszystkie pliki z rozszerzeniem .out, możesz to zrobić wydając polecenie

rm *.out

W tym przypadku pdksh zastąpi wzorzec *.out listą wszystkich plików z rozszerzeniem .out. Po wykonaniu tego podstawienia polecenie przyjmuje następującą postać:

rm temp1.out temp2.out temp3.out

Polecenie rm zostanie więc wywołane z argumentami temp1.out temp2.out temp3.out

Symbol ? działa na podobnych zasadach, z tym że zastępuje dokładnie jeden znak. Jeśli zawartość katalogu bieżącego jest taka sama jak w poprzednim przykładzie, pliki temp1.out temp2.out temp3.out można usunąć poleceniem

rm temp?.out

Symbol [...] pozwala bardziej szczegółowo określić, o jakie znaki lub zakresy znaków chodzi. By usunąć pliki jak wyżej, można wydać jedno z poleceń:

rm temp[123].out

rm temp[1-3].out

Przywoływanie wydanych poleceń

pdksh obsługuje przywoływanie wydanych wcześniej poleceń prawie w taki sam sposób, jak robi to interpreter bash. Pamięta on pewną liczbę ostatnio wydanych poleceń (określoną wartością zmiennej HISTSIZE).

Lista wydanych poleceń ładowana jest podczas logowania z pliku historii, którego nazwa przechowywana jest w zmiennej HISTFILE - domyślnie jest to plik .ksh_history znajdujący się w katalogu domowym. Nazwa ta, podobnie jak miało to miejsce w przypadku pliku .bash_history, rozpoczyna się od kropki. Oznacza to, że jest to plik ukryty i podczas przeglądania zawartości katalogu wyświetlony zostanie tylko w przypadku wyraźnego żądania, np. po wydaniu polecenia ls -a.

Interpreter daje możliwość poruszania się po liście wcześniej wydanych poleceń. Klawisze służące do tego celu różnią się w zależności od tego, czy używasz trybu edycji emacs, czy vi.

W przypadku trybu emacs, polecenie wydane wcześniej zostanie wyświetlone po naciśnięciu klawiszy Control+p, polecenie następne - Control+o. W trybie vi do poprzedniego polecenia wrócić można, wciskając klawisze K lub -, natomiast do następnego J lub +.

0x01 graphic

Jeśli używasz poleceń edytora vi, to zanim będziesz mógł przeglądać polecenia wydane wcześniej, musisz przejść do trybu wydawania poleceń (naciskając dwukrotnie klawisz Escape).

Jeśli zachodzi taka potrzeba, można edytować przywołane z listy polecenie. Interpreter pdksh udostępnia dość złożony zestaw funkcji służących do tego celu, jednak omawianie ich wykracza poza zakres tej książki. Przy wprowadzaniu niewielkich poprawek można z powodzeniem stosować najprostsze metody, na przykład użyć klawiszy kursora - strzałki w lewo i w prawo pozwalają poruszać się w obrębie jednego polecenia. Tekst można wstawiać w dowolnym miejscu polecenia i usuwać klawiszami Delete czy Backspace. Większość użytkowników uważa takie możliwości za wystarczające.

0x01 graphic

O wiele bardziej zaawansowane możliwości edycji dostępne są za pomocą kombinacji klawiszy takich, jak w edytorach vi oraz emacs (zależnie od wybranego trybu). Jeśli znasz dobrze któryś z tych edytorów, może to być pewnym udogodnieniem.

Plik historii poleceń można również edytować za pomocą polecenia fc (ang. fix command). Jeśli przeczytałeś rozdział 11. „bash”, pamiętasz na pewno, że interpreter bash obsługuje jeszcze jedno polecenie: history. Nie jest ono dostępne w powłoce pdksh, ponieważ wszystkie jego funkcje spełnia polecenie fc.

0x01 graphic

Choć polecenie history nie jest obsługiwane przez powłokę pdksh, działa ono poprawnie, ponieważ zazwyczaj w pliku konfiguracyjnym .kshrc zdefiniowany jest alias o następującej postaci:

alias history='fc -l'

Pozwala on na normalne używanie polecenia history, mimo że nie jest ono wewnętrznym poleceniem interpretera.

Składnia polecenia fc jest taka sama jak w powłoce bash:

fc [-e nazwa_edytora] [-nlr] [początek] [koniec]

Opcja -e nazwa_edytora pozwala podać, jaki edytor ma być użyty do edytowania poleceń. początek i koniec pozwalają określić zakres poleceń, które mają zostać pobrane z pliku historii. Mogą to być numery poleceń bądź łańcuchy znaków, które polecenie fc będzie próbowało odnaleźć w pliku historii poleceń.

Opcja -n wyłącza numerowanie wierszy z poleceniami. Opcja -r wyświetla polecenia w odwrotnym porządku. Opcja -l przesyła znalezione polecenia na ekran. We wszystkich przypadkach oprócz opcji -l, wybrane polecenia ładowane są do edytora tekstu.

Edytor tekstu uruchamiany jest na podstawie nazwy podanej w opcji -e nazwa_edytora. Jeśli nie została ona podana, używany jest edytor wskazywany przez zmienną FCEDIT. Jeśli taka zmienna nie istnieje, używana jest wartość zmiennej EDITOR, a w końcu, jeśli taka zmienna również nie jest zdefiniowana, uruchamiany jest edytor vi.

Polecenie fc wywołane bez argumentów powoduje załadowanie do edytora tekstu ostatnio wydanego polecenia. Po wyjściu z edytora polecenie jest wykonywane.

Oto kilka przykładów użycia polecenia fc:

fc ładuje do edytora tekstu ostatnio wydane polecenie,

fc-l 5 10 wyświetla polecenia o numerach od 5 do 10 (włącznie),

fc 6 ładuje do edytora tekstu polecenie o numerze 6,

fc mo ładuje do edytora tekstu ostatnie polecenie, które zaczyna się od tekstu mo.

Aliasy

Kolejnym ułatwieniem oferowanym przez interpreter pdksh są aliasy. Są to zwykle skróty dłuższych poleceń, wykonywanych przez pdksh w chwili napotkania aliasu. Załóżmy np., że posiadasz w swoim katalogu listę rzeczy do zrobienia zapisaną w pliku rzeczy-do-zrobienia.txt i codziennie ją modyfikujesz i przeglądasz, często więc musisz wydawać polecenie

vi rzeczy-do-zrobienia.txt

które do najkrótszych nie należy. Warto stworzyć dla niego alias o nazwie np. zrob:, który od tej chwili będzie można wpisywać w zastępstwie podanego wcześniej polecenia. Dokonuje się tego za pomocą polecenia alias interpretera pdksh:

alias zrob='vi rzeczy-do-zrobienia.txt'

Od tej chwili, aż do zakończenia działania pdksh, wpisanie polecenia zrob równoważne będzie wydaniu dłuższego polecenia vi rzeczy-do-zrobienia.txt. Jeśli uznasz, że alias stał się już niepotrzebny, możesz go usunąć poleceniem unalias:

unalias zrob

Alias przestanie istnieć i próba jego wykonania spowoduje wyświetlenie komunikatu Command not found (nie odnaleziono polecenia).

Użytkownicy przywiązani do poleceń DOS-u mogą zdefiniować dla własnej wygody następujące aliasy:

alias dir='ls'
alias copy='cp'
alias rename='mv'
alias md='mkdir'
alias rd='rmdir'

Inne przydatne aliasy to:

alias ll='ls -l'
alias lo='logout'
alias ls='ls -F'

0x01 graphic

Podobnie jak w przypadku powłoki bash, przy definiowaniu aliasów wokół znaku równości nie powinno być spacji. Cudzysłowy są wymagane tylko wtedy, gdy tekst polecenia zastępowanego aliasem zawiera spacje lub inne znaki specjalne.

Polecenie alias wydane bez żadnych argumentów powoduje wypisanie wszystkich aktywnych w danej chwili aliasów. Jeśli chcesz, aby aliasy tworzone były automatycznie podczas uruchamiania interpretera, powinieneś wpisać odpowiednie polecenia do pliku konfiguracyjnego, omówionego dokładniej w podrozdziale „Dostosowywanie powłoki pdksh”.

Przekierowanie wejścia

Przekierowanie (lub przeadresowanie, ang. redirection) wejścia pozwala na zmianę źródła danych wykorzystywanych przez polecenie. Większość wydawanych w środowisku pdksh (i innych powłok ­- przyp. tłum.) poleceń wymaga do wykonania odpowiednich danych wejściowych; w przypadku prostszych poleceń całość informacji przekazywana jest za pomocą argumentów ich wywołania. Przykładowo, używając polecenia rm podaje się jako argument nazwę usuwanego pliku; jej pominięcie wyświetla wskazówkę o sposobie uzyskania dodatkowych informacji o składni tego polecenia.

Istnieją również polecenia wymagające nieco bardziej złożonych danych wejściowych. Dane takie zwykle umieszczane są w pliku. Przykładem może tu być polecenie wc (word count), zliczające znaki, słowa i wiersze w przekazanych mu danych wejściowych. Aby zliczyć znaki, słowa i wiersze w pliku, należy podać jego nazwę jako argument wywołania polecenia wc:

wc test

11 2 1

Innym sposobem przekazania poleceniu wc danych zawartych w pliku test jest przeadresowanie wejścia polecenia z terminala do pliku. Służy do tego operator <, nakazujący poleceniu pobranie danych z pliku o podanej nazwie. W naszym przypadku operacja ta wyglądałaby tak:

wc < test

11 2 1

i, jak widać, przyniosłaby identyczny wynik.

Przeadresowanie wejścia wykorzystywane jest raczej rzadko, gdyż polecenia pobierające dane z pliku wejściowego posiadają zwykle opcję pozwalającą podać jego nazwę w wierszu poleceń. Możesz jednak znaleźć się w sytuacji, gdy będziesz musiał przekazać zawarte w pliku dane do polecenia nie posiadającego takiej możliwości. W takiej sytuacji przeadresowanie wejścia wybawi Cię z kłopotu.

Przekierowanie wyjścia

Jest ono używane o wiele częściej niż przekierowanie wejścia. Pozwala przesłać wyniki wykonania polecenia do pliku (lub urządzenia ­- przyp. tłum.), zamiast wyświetlać je na ekranie terminalu.

Możliwość przeadresowania wyjścia przydaje się w wielu sytuacjach. Może się np. zdarzyć, że wyniki wykonania polecenia nie mieszczą się na ekranie; w takiej sytuacji można skierować je do pliku, który następnie można przejrzeć za pomocą edytora tekstowego. Przeadresowanie wyjścia polecenia dokonywane jest za pomocą operatora > (dla wejścia, jak pamiętamy, był to operator <).

Aby np. zapisać zawartość katalogu wyświetlaną poleceniem ls w pliku katalog, należy więc wydać polecenie:

ls > katalog

Ciągi poleceń

Podobnie jak powłoka bash, również pdksh umożliwia „szeregowe łączenie” poleceń. Wyjście polecenia zostaje skierowane na wejście następnego, jego wyjście z kolei na wejście następnego itd.; wynik wykonania ostatniego polecenia kierowany jest na ekran. Aby utworzyć taki ciąg, należy wpisać nazwy kolejnych poleceń rozdzielone znakami |; przykładem zastosowania tego mechanizmu może być ciąg poleceń

cat test.txt | sort | uniq

Zawartość pliku test.txt (utworzonego poleceniem cat) podawana jest na wejście programu sort, który porządkuje wiersze alfabetycznie. Jego wyjście podawane jest na wejście programu uniq, usuwającego z tekstu powtarzające się wiersze. Jeśli w pliku test.txt znajduje się następujący tekst:

Przykladowy dialog
Czesc

Jak się masz
Czesc
Nie najgorzej, a ty?
Swietnie

na wyjściu ciągu poleceń pojawi się tekst:

Czesc

Jak się masz
Nie najgorzej, a ty?
Przykladowy dialog
Swietnie

Wiersze zostały tu posortowane według pierwszego wyrazu i usunięte zostało powtórzenie wiersza Czesc.

Znak zachęty

Inaczej niż w przypadku powłoki bash, w pdksh istnieją trzy poziomy znaków zachęty. Znak zachęty pierwszego poziomu wyświetlany jest, gdy interpreter oczekuje na wydanie polecenia przez użytkownika. Jego postać określona jest przez wartość zmiennej PS1 - zwykle jest to znak $. Aby go zmienić, na przykład na tekst „Powiedz mi, co mam robic”, poprzedzony liczbą wydanych do tej pory poleceń, należy wydać polecenie

PS1="! Powiedz mi, co mam robic"

Jak widać, nadanie zmiennej wartości uzyskuje się, wpisując jej nazwę, znak równości i wartość, jaką zmienna ma przyjąć. Po obu stronach znaku równości nie powinno być spacji.

Symbol wykrzyknika to nazwa jednej ze zmiennych, która oznacza w powłoce pdksh ilość wydanych do chwili bieżącej poleceń. Znak zachęty będzie więc miał postać tekstu Powiedz mi, co mam robic poprzedzonego numerem polecenia.

Znak zachęty drugiego poziomu wyświetlany jest, gdy pdksh oczekuje na podanie dodatkowych informacji niezbędnych do wykonania polecenia. Domyślnie jest to symbol >. Postać tego znaku zachęty określona jest wartością zmiennej PS2 i można ją zmienić na przykład w taki sposób:

PS2="Potrzebuje wiecej informacji"

Tekst Potrzebuje wiecej informacji zostanie wyświetlony za każdym razem, gdy interpreter będzie potrzebował jakichś dodatkowych danych do wykonania polecenia.

pdksh nie posiada tak zaawansowanych możliwości konfigurowania znaku zachęty jak bash. Dozwolone jest jednak używanie zmiennych powłoki, co pozwala na wyświetlenie takich informacji, jak nazwa bieżącego katalogu, na przykład w taki sposób:

PS1="($LOGNAME) "
PS1='($PWD) '

Pierwsze z powyższych poleceń spowoduje, że jako znak zachęty wyświetlany będzie identyfikator użytkownika. Drugie sprawi, że wyświetlana będzie nazwa bieżącego katalogu. Niezbędny jest w tym przypadku pojedynczy cudzysłów, które powoduje, że wartość zmiennej nie jest przypisywana raz (tak byłoby, gdyby użyty został cudzysłów podwójny), ale odświeżana przed każdym wyświetleniem. Jeśli chcesz dowiedzieć się czegoś więcej o używaniu cudzysłowów, zajrzyj do rozdziału 14. „Programowanie w języku powłoki”.

Zarządzanie zadaniami

Zarządzanie zadaniami to zdolność kontrolowania zachowań aktualnie działających procesów. Mówiąc konkretniej, jest to możliwość uśpienia (wstrzymania, ang. suspend) działającego procesu i późniejszego uruchomienia go. Interpreter bash śledzi wszystkie uruchamiane procesy (uruchamiane przez użytkownika, nie przez inne procesy) i pozwala je wstrzymywać oraz przywracać w dowolnej chwili.

Wciśnięcie klawiszy Control+Z powoduje wstrzymanie działającego procesu. Polecenie bg uruchamia go ponownie w tle, natomiast polecenie fg - na pierwszym planie.

Polecenia te są najczęściej używane w przypadku, gdy użytkownik omyłkowo uruchomi na pierwszym planie program, który miał zostać uruchomiony w tle. Program uruchomiony na pierwszym planie blokuje dostęp do interpretera poleceń i nie pozwala użytkownikowi na zrobienie czegokolwiek aż do momentu zakończenia swojego działania. Zazwyczaj nie jest to problemem, ponieważ większość poleceń potrzebuje na zakończenie działania co najwyżej kilku sekund, ale w przypadku programów, które działają długo, wygodniej jest uruchomić je w tle, by móc nadal używać interpretera.

Jeśli na pierwszym planie uruchomisz polecenie, na którego wyniki trzeba czekać dość długo, interpreter poleceń zostanie zablokowany na czas działania tego polecenia. Warto wtedy wcisnąć klawisze Control+Z, co spowoduje wstrzymanie programu, a następnie wydać polecenie bg, które uruchomi go ponownie w tle, dzięki czemu można będzie znów używać interpretera poleceń.

Skróty klawiaturowe

Bardzo przydatną cechą pdksh, której brakuje w powłoce bash, jest możliwość definiowania własnych skrótów klawiaturowych (ang. key bindings). Jeśli na przykład nie podoba Ci się, że poprzednie polecenie przywołuje się kombinacją Control+p możesz ją zmienić na dowolną inną. Składnia polecenia, które pozwala to zrobić, jest następująca:

bind <kombinacja_klawiszy> <polecenie>

Dzięki temu poleceniu możliwe jest dokładne dostosowanie interpretera do swoich wymagań. Najczęściej spotyka się właśnie zmianę klawiszy używanych do poruszania się po historii i wierszu poleceń na klawisze kursora, tak jak w powłoce bash. Odpowiednie polecenia przeważnie zapisywane są w pliku .kshrc, odczytywanym i wykonywanym przy każdym uruchomieniu interpretera pdksh. Mają one postać:

bind '^[['=prefix-2
bind '^XA'=up-history
bind '^XB'=down-history
bind '^XC'=forward-char
bind '^XD'=backward-char

W tabeli 12.1 zebrane zostały najczęściej wykorzystywane polecenia edycyjne, których można używać przy definiowaniu skrótów klawiaturowych. Listę wszystkich dostępnych poleceń edycyjnych uzyskać można, wydając polecenie bind bez żadnych argumentów.

Tabela 12.1. Najczęściej wykorzystywane polecenia edycyjne powłoki pdksh

Polecenie

Znaczenie

abort (^G)

Przerywa działanie innego polecenia edycyjnego,
najczęściej przeszukiwania historii poleceń.

backward-char (^B)

Przesuwa kursor o jeden znak do tyłu. Często przypisane do klawisza ze strzałką w lewo.

backward-word (^[b)

Przesuwa kursor na początek wyrazu.

beginning-of-line (^A)

Przesuwa kursor na początek wiersza poleceń.

complete (^[^[)

Nakazuje pdksh dokończyć polecenie.

copy-last-arg (^[_)

Powoduje wstawienie do polecenia ostatniego wyrazu poprzedniego polecenia.

delete-char-backward (ERASE)

Usuwa znak na lewo od kursora.

delete-char-forward

Usuwa znak na prawo od kursora.

delete-word-backward (^[ERASE)

Usuwa znaki na lewo od kursora aż do napotkania spacji (lub innego znaku białego).

delete-word-forward (^[D)

Usuwa znaki na prawo od kursora aż do napotkania spacji (lub innego znaku białego).

down-history (^N)

Przesuwa listę historii poleceń o jeden wiersz w dół. Często przypisane do klawisza ze strzałką w dół.

end-of-line (^E)

Przesuwa kursor na koniec bieżącego wiersza.

forward-char (^F)

Przesuwa kursor o jeden znak do przodu.
Często przypisane do klawisza ze strzałką w prawo.

forward-word (^[F)

Przesuwa kursor na koniec wyrazu.

kill-line (KILL)

Usuwa bieżący wiersz.

kill-to-eol (^K)

Usuwa wszystkie znaki od kursora do końca wiersza.

list (^[?)

Powoduje, że pdksh wypisuje wszystkie polecenia lub nazwy plików mogące stanowić dokończenie słowa, w którym aktualnie znajduje się kursor.

search-history (^R)

Szuka w liście historii poleceń pierwszego polecenia zawierającego podane znaki.

transpose-chars (^T)

Zamienia miejscami znaki z prawej i lewej strony kursora. Jeśli kursor jest na końcu wiersza, zamienia dwa ostatnie znaki.

up-history (^P)

Przesuwa listę historii poleceń o jeden wiersz w górę. Często przypisane do klawisza ze strzałką w górę.

Dostosowywanie powłoki pdksh

W tym rozdziale opisano już kilka sposobów dostosowywania powłoki pdksh do własnych potrzeb. Jednak wprowadzone usprawnienia działały tylko do momentu zakończenia sesji programu pdksh. Można uczynić je bardziej trwałymi poprzez zapisanie odpowiednich poleceń w pliku konfiguracyjnym.

W pliku konfiguracyjnym można zapisać dowolne polecenia (zwykle są to definicje aliasów i inicjalizacja zmiennych, na przykład określających znak zachęty), które zostaną wykonane przy każdym uruchomieniu powłoki pdksh.

Inaczej niż miało to miejsce w interpreterze bash (który wiedział, gdzie ma szukać pliku konfiguracyjnego), należy jawnie określić, gdzie znajduje się taki plik. W tym celu trzeba stworzyć (o ile nie istnieje) w katalogu domowym plik .profile, który wykonywany jest przy każdym logowaniu do systemu, bez względu na rodzaj używanej powłoki, i dodać do niego następujące wiersze:

export ENV=$HOME/.kshrc
EDITOR=emacs

Pierwsze z powyższych poleceń przypisuje wartość zmiennej ENV. Właśnie tę wartość sprawdza pdksh podczas uruchomienia, szukając nazwy pliku zawierającego dane konfiguracyjne. Jeśli zamierzasz modyfikować zachowanie tej powłoki, powinieneś podać tu nazwę pliku konfiguracyjnego zapisanego w Twoim katalogu domowym. Można oczywiście podać dowolną nazwę pliku, ale najczęściej używana jest nazwa .kshrc.

Jeśli nie planujesz dostosowywania pdksh, powinieneś ustawić wartość zmiennej ENV tak, aby wskazywała na domyślny systemowy plik konfiguracyjny. Plik ten nazywa się ksh.kshrc i zapisany jest w katalogu /etc.

Drugi wiersz pliku .profile określa wartość zmiennej EDITOR. Jest ona używana do tego, by zdecydować, jakie kombinacje klawiszy mają być aktywne podczas sesji interpretera. Jeśli wolisz używać trybu vi, powinieneś zamiast emacs wpisać vi.

0x01 graphic

Zamiast kopiować domyślny plik konfiguracyjny do katalogu domowego, można stworzyć własny plik konfiguracyjny wywołujący najpierw plik domyślny, a następnie wprowadzający odpowiednie zmiany.

Polecenia wewnętrzne powłoki pdksh

W interpreterze pdksh dostępnych jest wiele poleceń wewnętrznych, ale większości z nich używa się bardzo rzadko. Te najbardziej przydatne zostały zebrane w tabeli 12.2.

Tabela 12.2. Najczęściej wykorzystywane polecenia powłoki pdksh

Polecenie

Znaczenie

.

Odczytuje i wykonuje zawartość pliku
(polecenie to jest omówione bliżej w rozdziale 14.)

alias

Tworzy alias - czyli skróconą wersję polecenia

bg

Powoduje, że wstrzymany proces uruchamia się ponownie w tle

cd

Przechodzi do katalogu, którego nazwa podana jest jako argument

exit

Kończy działanie powłoki

export

Powoduje, że wartość zmiennej będzie dostępna
dla wszystkich procesów potomnych

fc

Pozwala na edycję historii poleceń

fg

Powoduje, że wstrzymany proces uruchamia się ponownie
na pierwszym planie

kill

Służy do zatrzymywania procesów

pwd

Wyświetla nazwę katalogu bieżącego

unalias

Usuwa alias

Zmienne powłoki pdksh

Najczęściej używane zmienne interpretera poleceń pdksh przedstawione są, wraz z krótkimi objaśnieniami, w tabeli 12.3.

Tabela 12.3. Najczęściej wykorzystywane zmienne powłoki pdksh

Nazwa zmiennej

Znaczenie

EDITOR, FCEDIT

Domyślny edytor dla polecenia fc

HISTFILE

Nazwa pliku, w którym przechowywana będzie historia poleceń

HISTSIZE

Rozmiar historii poleceń

HOME

Katalog domowy bieżącego użytkownika

OLDPWD

Poprzedni katalog bieżący

PATH

Ścieżka przeszukiwania

PS1

Znak zachęty pierwszego poziomu

PS2

Znak zachęty drugiego poziomu

PWD

Nazwa bieżącego katalogu

SECONDS

Liczba sekund, które upłynęły od uruchomienia powłoki.

Podsumowanie

Przyjrzeliśmy się podstawowym cechom powłoki pdksh (Public Domain Korn Shell). Pod wieloma względami jest ona podobna do powłoki bash, ale różni się kilkoma drobiazgami.

W następnym rozdziale zajmiemy się interpreterem poleceń tcsh, który jest linuxowym odpowiednikiem powłoki C. Kiedy już zapoznasz się z właściwościami wszystkich trzech powłok, nie powinieneś mieć problemu z wybraniem tej z nich, która najbardziej odpowiada Twoim potrzebom. Możesz oczywiście użyć każdej z nich w dowolnej chwili, po prostu wpisując jej nazwę (są to w końcu tylko zwykłe programy).

Więcej o programowaniu w języku powłoki możesz dowiedzieć się z rozdziału 14. „Programowanie w języku powłoki”

Edytory tekstu, których można używać do tworzenia i edytowania plików, omówione są w rozdziale 16. „Edytory tekstu: vi i emacs”.

Jeśli chcesz dowiedzieć się, jak skonfigurować interfejs graficzny X, przejdź do rozdziału 22. „Instalacja i konfiguracja XFree86”.

238 Część II Poznawanie Linuxa

238 E:\Moje dokumenty\HELION\Linux Unleashed\Indeks\12.DOC

E:\Moje dokumenty\HELION\Linux Unleashed\Indeks\12.DOC 239

Rozdział 12. pdksh 239



Wyszukiwarka

Podobne podstrony:
Rozdział 11. bash, Kurs Linuxa, Linux
Rozdział 13. tcsh, Kurs Linuxa, Linux
Rozdział 16. Edytory tekstu- vi i emacs, Kurs Linuxa, Linux
Rozdział 9. Prawa dostępu do plików i katalogów, Kurs Linuxa, Linux
Rozdział 15. FTP oraz Telnet, Kurs Linuxa, Linux
Rozdział 4. LILO, Kurs Linuxa, Linux
Rozdział 1. Wstęp do Linuxa, Kurs Linuxa, Linux
00 - Wstęp, Kurs Linuxa, Linux
Kurcz Język a myślenie rozdział 12
Rozdzial 12, Zimbardo ksiazka i streszcznie
(1995) WIEDZA KTÓRA PROWADZI DO ŻYCIA WIECZNEGO (DOC), rozdział 12, Rozdział 1
Rozdział 12, Rozdział 12
Bauman Zygmunt - Socjologia, Rozdział 12 - Drogi socjologii
12 rozdzial 12 PGQDKVM4BGI4BF32 Nieznany (2)
Ir-1 (R-1) 161-166 Rozdział 12
7 - Pretty Little Liars - Heartless - Rozdział 12, 7 - HEARTLESS
Rozdział 12, Dni Mroku 1 - Nocny wędrowiec
Rozdział 12, Psychologia zdrowia, Wykłady
polecenia linuxa, Linux, Linux - podstawy

więcej podobnych podstron