Powłoki - interaktywna praca z wierszem poleceń

Transkrypt

Powłoki - interaktywna praca z wierszem poleceń
Powłoki - interaktywna praca z wierszem
poleceń
Koło Naukowe Systemów Open Source
Wyzsza Szkoła Biznesu - National-Louis University
Krzysztof Walo
[email protected]
1. Co to jest powłoka?
Program komputerowy. Rodzaj interfejsu.
Zczytuje polecenia z stdin i wypisuje na stdout.
Powłoka systemowa - specjaly rodzaj powłoki.
Odpowiedzialna za uruchamianie programów zewnętrznych.
2. Przyklady powlok
- GRUB
- GDB
- python
- powloki systemowe (bash, tcsh, ksh, zsh, itp.)
3. Roznice w powlokach systemowych
- sh
Domyślna powłoka w systemie Unix Version 7
Napisana w 1977 roku przez Stephena Bourne'a
/bin/sh jest domyślną powłoką we wszystkich obecnych Uniksach
Faktycznie /bin/sh jest linkiem symbolicznym do innej powłoki
Zgodnej (zazwyczaj) ze standardem POSIX
- csh
- tcsh
- ksh
Stworzona przez Billa Joy'a dla systemów BSD
Składnia powłoki bazowana na języku C
Zawiera aliasy i historię komend
Litera T w nazwie pochodzi od systemu operacyjnego TENEX
Autor: Ken Geer
csh z dodatkowymi funkcjami - np. dopełnianie komend
Domyślna powłoka w systemach FreeBSD i we wczesnych wersjach
Mac OS X
Korn Shell - Stworzona przez Davida Korna z AT&T Bell Labs
Kompatybilna z powłoką sh
Zawiera elementy powłoki csh, oraz kilka innych funkcji:
- wbudowany system obliczania wyrażeń artymetycznych
- wbudowany system wyrażeń regularnych
Kod źródłowy ksh jest sprzedawany przez AT&T, oraz Novella
- bash
Bourne-Again Shell - Powłoka projektu GNU
Obecnie najpopularniejsza powłoka. Domyślna w większości
dystrybucji GNU/Linux, w Mac OS X Tiger 10.4, oraz w środowisku
Cygwin dla platformy Win32
Całkowicie zgodna z /bin/sh. Zawiera pomysły zawarte w powłokach
Korna i csh
- zsh
Korn Shell + trochę ulepszeń:
- edycja wiersza poleceń
- korekta pisowni
- programowalne dopełnianie poleceń
- automatyczne ładowanie funkcji
- rozszerzalna poprzez moduły
4. Interaktywna praca z powłoką
4.1 edycja poleceń - skroty klawiszowe
Skróty klawiszowe działają jak w edytorze Emacs
Skrót ) QRG]OY` oznacza:
naciśnij i przytrzymaj klawisz Control, a następnie
wciśnij klawisz `QRG]OY`'
3 QRG]OY`
Jak wyżej, tylko dotyczy klawisza `Meta'
Klawisz Meta w przypadku platformy PC to Alt
Option na Macu
Podobny Efekt można uzyskać przy pomocy klawisza ESC
Tylko należy go wcisnąć, puścić, a następnie nacisnąć
`QRG]OY`'. Dzięki temu mamy zgodność na różnych platformach.
Przesuwanie kursora
* ) G - przesunięcie kursora do początku wiersza
* ) K - kursor na koniec wiersza
* ) H - jeden znak wstecz
* 3 H - jedno słowo wstecz
* )-L - jeden znak do przodu
* 3 L - jedno słowo do przodu
Kasowanie znaków
* ) J - jak klawisz Del.
Dodatkowo działa jak EOF, jeśli użyty w pustym wierszu
Kończy działanie powłoki
* 3 J - kasuje wszystkie znaki od kursora do końca słowa
* 3 (GIQYVGIK - jak wyżej, tylko kasuje do początku słowa
* ) [ - kasuje od kursora do początku wiersza
* ) Q - kasuje od kursora do końca wiersza
4.2 autouzupelnianie
Aktywowane przy użyciu klawisza <Tab>
Domyślnie uzupełnia nazwy plików i poleceń
Funkcję tą można rozszerzyć, żeby uzupełniała także opcje
poszczególnych komend.
- Uzupełnianie komend w bashu.
Dopisać w pliku ~/.bashrc linię
OL A L KZI HGYNEIUSVRKZOUT C! ZNKT
KZI HGYNEIUSVRKZOUT
LO
4.3 historia
Pozwala odwoływać się do komend, które wydawaliśmy wcześniej
Używane przez nas komendy są zapisywane w pliku historii
W zależności, jak mamy ustawione
- ~/.bash_history
- ~/.history
- ~/.histfile
Przeglądanie historii
- W bash
NOYZUX_ T
wyświetla n ostatnich poleceń
- W zsh
NOYXUX_ T
Wyświetla polecenia od polecenia n do przedostatniego
NOYZUX_ T
jak w bashu - n ostatnich polecen
NOYZUX_ T S
wyświetla polecenia z historii. Od numeru n do m włącznie
T[SKX
Wykonuje polecenie z historii o numerze numer
T[SKX
Wykonuje polecenie z historii o numer wcześniejsze
Wykona ostanie polecenie
W zsh, jeśli mamy włączone uzupełnianie historii, to po odwołaniu się do
polecenia z historii i wciśnięciu klawisza <Tab> zostanie wyświetlone to
polecenie.
4.4 kontrola zadań w powloce - job control
Jedna powłoka może kontrolować kilka zadań
Tylko jedno zadanie może działać "na pierwszym planie" (foreground)
Można mieć wiele zadań uruchomionych w tle (background), lub
zatrzymanych
Zatrzymanie zadania - C-z
Zatrzymanie zadania odbywa się przez wysłanie procesowi sygnału
9/-:9:6
Zabicie zadania - ) I
Tą kombinacją klawiszy można zabić wyłącznie zadanie z pierwszego
planu. Polega to na wysłaniu sygnału 9/-:+83. Proces może na to nie
zareagować (jeśli ma bugi). Wówczas należy wywołać na nim sygnał 9/-1/22.
Zrobi się to jednym z polecenień:
QORR VOJ,
QORRGRR Y
TG`]G.
Wyświetlenie zadań działających pod kontrolą powłoki:
PUHY
Można zmienić miejsce działania zadań. Jeśli uruchomiliśmy zadanie
w tle, to możemy je przesunąć na pierwszy plan poleceniem
LM A C`GJGTOK
Znak % jest opcjonalny. Działa zarówno w bash, jak i zsh
LM A CT[SKX
Numer możemy zobaczyć, wydając komendę `PUHY'. W zsh numer
musi być poprzedzony znakiem `%'
Podobnie można zadanie z pierwszego planu wysłać w tło.
Najpierw je zatrzymujemy kombinacją klawiszy `) `'. Następnie
Uruchamiamy je w tle przy pomocy komendy HM. Komenda HM ma taką
samą składnię, jak LM.
4.5 Prompt
Prompt jest znakiem zachęty. Kiedy się pojawia, to oznacza, że
Shell jest gotowy "przyjąć" nowe polecenia.
Wyróżniamy 4 różne prompty w powłokach systemu UNIX. Odpowiadają
za nie 4 zmienne środowiskowe:
PS1 - główny prompt. Wyświetlany, kiedy ma być wczytana komenda
PS2 - pokazuje się, kiedy należy dokończyć komendę
PS3 - Używany w wyrażeniu YKRKIZ
PS4 - 'execution trace prompt' - prawdopodobnie nidgy go nie zobaczycie :)
Zmienne te można modyfikować, używając specjalnych znaków.
Znaki specjalne dla basha dostępne są na stronie manuala w sekcji
PROMPTING. Znaki dla zsh są dostępne w SGT `YNSOYI, w sekcji
PROMPT EXPANSION
5. Zsh - moduły
Zsh jest podzielony na wiele modułów, które można dołączyć, znacznie
rozszerzając możliwości powłoki
5.1 compinit - autouzupełnianie
Uruchamiany poprzez dodanie wpisu do pliku ~/.zshrc:
G[ZURUGJ ;` IUSVOTOZ
IUSVOTOZ
Polecenie IUSVOTYZGRR uruchamia intuicyjne narzędzie umożliwiające
ustawienie (prawie) wszystkich opcji dla tego modułu.
Jeśli jakiś program wyświetla pomoc po podaniu opcji NKRV, to
można uzyskać autouzupełnianie dla jego opcji po wpisaniu
IUSVJKL EMT[EMKTKXOI 4 VXUMXGS
5.2 promptinit - szybka zmiana promptow
Dodanie modułu do pliku ~/.zshrc:
G[ZURUGJ ;` VXUSVZOTOZ
VXUSVZOTOZ
Szybka zmiana promptów:
VXUSVZ TG`]G
Listę dostępnych promptów można uzyskać przez autouzupełnianie.
Można stworzyć swój prompt. Tworzymy w tym celu plik
prompt_nazwa_setup, znajdujący się w jednym z katalogów wymienionych
w zmiennej środowiskowej LVGZN. Nazwa to nazwa naszego promptu
Wewnątrz tworzymy funkcję prompt_nazwa_setup, która ustawia wartość
zmiennej PS1, bądź PROMPT (tak naprawdę to to samo)
5.3 zcalc - interaktywny kalkulator
Ładowanie
G[ZURUGJ ; `IGRI
Uruchomienie
`IGRI
Obsługuje zmienne, oraz zawiera podstawowe funkcje matematyczne
sin, cos, tan, cotan i inne
Nie należy uruchamiać zcalc w pliku ~/.zshrc! Funkcja zcalc działa interaktywnie.
Kończymy jej działanie wciskając kombinację klawiszy ) J R[H ]IOYQGPÊI
QRG]OY` W G TGYZÞVTOK +TZKX
5.4 zsh-mime-setup
Wykonywanie komend skojazonych z rozszerzeniem pliku.
Działa podobnie, jak w przypadku graficznych menadżerów plików
Wystarczy podać w linii poleceń nazwę pliku (bez polecenia), a
Zostanie uruchomione polecenie skojarzone z danym rozszerzeniem.
Ładowanie
G[ZURUGJ ; `YN SOSK YKZ[V
Uruchomienie
`YN SOSK YKZ[V
Można przypisać poszczególne programy do danych rozszeżeń. Dodajemy
wpis do pliku ~/.zshrc zanim załadujemy zsh-mime-setup.
`YZ_RK SOSK VJL NGTJRKX K\OTIK
6. Programy wspołpracujące z powłoką
Y
W trybie tekstowym:
- screen
Umożliwia uruchomienie wielu powłok na jednym terminalu (tty).
Powłoki są uruchamiane w tzw. oknach
Podstawowe sktóty klawiszowe:
- C-a c - stworzenie nowego okna ( którym działa powłoka)
- C-a k - zamknięcie aktualnego okna
- C-a n - przejście do nast. okna
- C-a b - przejście do poprzedniego okna
- C-a " - interaktywny wybór okna
- C-a \ - zamknięcie screen'a
- C-a ? - wyświetlenie ekranu z pomocą
W oknach:
- emulatory terminali (xterm, aterm, rxvt, gnome-terminal, konsole)
- viewglob
Podłączony do terminala wyświetla zawartość katalogu, w którym się aktualnie
znajdujemy.
Wymaga działania demona. Uruchamiamy go poleceniem:
\MJ
Następnie uruchamiamy go poleceniem:
\MYKKX