Powłoki - interaktywna praca z wierszem poleceń Koło Naukowe Systemów Open Source Wyzsza Szkoła Biznesu - National-Louis University Krzysztof Walo kwalo@wsb-nlu.edu.pl
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 ' 3QRG]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 * 3H- jedno słowo wstecz * )-L- jeden znak do przodu * 3L- 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 * 3J - 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ę OLALKZIHGYNEIUSVRKZOUTC!ZNKT KZIHGYNEIUSVRKZOUT 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_TS 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ń: QORRVOJ,
QORRGRRYTG ]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 LMAC GJGTOK Znak % jest opcjonalny. Działa zarówno w bash, jak i zsh LMACT[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 IUSVJKLEMT[EMKTKXOI4VXUMXGS 5.2 promptinit - szybka zmiana promptow Dodanie modułu do pliku ~/.zshrc: G[ZURUGJ; VXUSVZOTOZ VXUSVZOTOZ Szybka zmiana promptów: VXUSVZTG ]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 )JR[H]IOYQGP I QRG]OY WGTGYZ 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; YNSOSKYKZ[V Uruchomienie YNSOSKYKZ[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 VJLNGTJRKXK\OTIKY 6. Programy wspołpracujące z powłoką 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