Poznaj możliwości powłoki bash i dostosuj system do własnych potrzeb
-
Jak pisać skrypty konwertujące pliki w formacie DOS i Unix?
-
Jak konfigurować interpreter bash, aby odpowiadał potrzebom i stylowi pracy użytkownika?
-
Jak opracować bezpieczne skrypty powłoki?
Bash to jedna z najpopularniejszych powłok systemów uniksowych, umożliwiająca pracę interaktywną i wsadową. Język basha pozwala na definiowanie aliasów i funkcji, a także zawiera konstrukcje sterujące przepływem. Bash (tak jak wiele innych narzędzi opisanych w tej książce) stworzono w ramach projektu GNU - wolno dostępnego systemu operacyjnego. Sposób używania powłoki jest bardzo prosty, polega na wprowadzeniu polecenia zgodnie z regułami składni. Następnie zostaje ono zinterpretowane i wykonane przez system.
Książka "bash. Receptury" zawiera opis powłoki bash oraz prezentuje praktyczne przykłady rozwiązań problemów spotykanych powszechnie podczas projektowania skryptów. W każdej chwili możesz się do nich odwołać, dostosowując system do własnych potrzeb. Podręcznik obejmuje również opis zasad funkcjonowania interpretera - ich zastosowanie umożliwia zwiększenie wydajności pracy. Korzystając z tej książki, dowiesz się, jak pobierać interpreter bash dla różnych systemów lub korzystać z powłoki bash bez jej pobierania; poznasz techniki automatyzacji zadań oraz rozwiązania skryptowe odnoszące się do operacji wejścia-wyjścia czy przetwarzania plików, a także sposoby tworzenia programów i wykonywania zadań administracyjnych.
-
Praca z powłoką bash
-
Standardowy strumień wejściowy
-
Standardowy strumień wyjściowy
-
Wykonywanie poleceń
-
Podstawy tworzenia skryptów - zmienne powłoki
-
Logika i arytmetyka powłoki
-
Dodatkowe mechanizmy skryptowe
-
Przetwarzanie informacji o dacie i czasie
-
Skrypty usprawniające pracę użytkownika
-
Interpretacja danych
-
Bezpieczne skrypty powłoki
-
Zadania administracyjne
"bash. Receptury" - wszystko, czego potrzebujesz, aby zapewnić optymalne warunki pracy systemu!
SPIS TREŚCI:
Przedmowa (13)
1. Wprowadzenie do pracy z powłoką bash (21)
-
1.1. Rozszyfrowanie znaku zachęty (24)
-
1.2. Ustalenie katalogu bieżącego (25)
-
1.3. Wyszukiwanie i wykonywanie poleceń (26)
-
1.4. Uzyskiwanie informacji na temat plików (28)
-
1.5. Wyświetlenie plików ukrytych z bieżącego katalogu (30)
-
1.6. Cudzysłowy i apostrofy w instrukcjach powłoki (32)
-
1.7. Wykorzystywanie i zastępowanie poleceń wbudowanych i zewnętrznych (34)
-
1.8. Sprawdzenie, czy powłoka pracuje w trybie interaktywnym (36)
-
1.9. Ustawienie interpretera bash jako domyślnej powłoki (37)
-
1.10. Pobranie interpretera bash dla systemu Linux (38)
-
1.11. Pobranie interpretera bash dla systemu BSD (42)
-
1.12. Pobranie interpretera bash dla systemu Mac OS X (43)
-
1.13. Pobranie interpretera bash dla systemu Unix (43)
-
1.14. Pobranie interpretera bash dla systemu Windows (44)
-
1.15. Korzystanie z powłoki bash bez jej pobierania (46)
-
1.16. Dodatkowa dokumentacja powłoki bash (47)
2. Standardowy strumień wyjściowy (51)
-
2.1. Przekazywanie danych wyjściowych do okna terminala (52)
-
2.2. Wyświetlanie tekstu z zachowaniem znaków spacji (53)
-
2.3. Formatowanie danych wyjściowych (54)
-
2.4. Wyświetlanie wyniku bez znaku nowego wiersza (55)
-
2.5. Zapisywanie danych wyjściowych polecenia (56)
-
2.6. Zapisywanie wyniku w plikach innych katalogów (58)
-
2.7. Zapisywanie wyniku polecenia ls (59)
-
2.8. Przekazanie danych wyjściowych i komunikatów o błędach do różnych plików (60)
-
2.9. Przekazanie danych wyjściowych i komunikatów o błędach do tego samego pliku (61)
-
2.10. Dodawanie danych wyjściowych zamiast nadpisywania ich (62)
-
2.11. Wykorzystanie jedynie początkowego lub końcowego fragmentu pliku (63)
-
2.12. Pomijanie nagłówka pliku (64)
-
2.13. Odrzucanie danych wyjściowych (65)
-
2.14. Zapisywanie i grupowanie danych wyjściowych większej liczby poleceń (66)
-
2.15. Łączenie dwóch programów przez wykorzystanie danych wyjściowych jako wejściowych (67)
-
2.16. Zapisywanie kopii danych wyjściowych mimo wykorzystywania ich jako danych wejściowych (69)
-
2.17. Łączenie dwóch programów z wykorzystaniem danych wyjściowych jako parametrów (71)
-
2.18. Wielokrotne przekierowania w jednym wierszu (72)
-
2.19. Zapisywanie danych wyjściowych, gdy wydaje się, że przekierowanie nie działa (73)
-
2.20. Zamiana strumieni STDERR i STDOUT (75)
-
2.21. Zabezpieczanie pliku przed przypadkowym nadpisaniem (77)
-
2.22. Celowe nadpisanie pliku (78)
3. Standardowy strumień wejściowy (81)
-
3.1. Pobieranie danych wejściowych z pliku (81)
-
3.2. Umieszczenie danych w skrypcie (82)
-
3.3. Wyeliminowanie nietypowego działania osadzonych dokumentów (83)
-
3.4. Wcinanie osadzonych dokumentów (85)
-
3.5. Pobieranie danych od użytkownika (86)
-
3.6. Wprowadzanie odpowiedzi typu tak-nie (87)
-
3.7. Wybór opcji z listy (90)
-
3.8. Wprowadzanie haseł (91)
4. Wykonywanie poleceń (93)
-
4.1. Uruchamianie pliku wykonywalnego (93)
-
4.2. Sprawdzenie, czy polecenie zostało wykonane poprawnie (95)
-
4.3. Sekwencyjne wykonanie kilku poleceń (97)
-
4.4. Jednoczesne wykonanie kilku poleceń (98)
-
4.5. Ustalenie poprawności wykonania polecenia (100)
-
4.6. Zmniejszenie liczby instrukcji if (101)
-
4.7. Wykonywanie poleceń bez nadzoru (102)
-
4.8. Wyświetlenie komunikatów o błędach (103)
-
4.9. Wykonywanie poleceń zapisanych w zmiennych (104)
-
4.10. Uruchomienie wszystkich skryptów w katalogu (105)
5. Podstawy tworzenia skryptów - zmienne powłoki (107)
-
5.1. Dokumentowanie skryptu (109)
-
5.2. Osadzanie dokumentacji w treści skryptu (110)
-
5.3. Zachowanie czytelności skryptu (111)
-
5.4. Oddzielenie nazw zmiennych od otaczającego je tekstu (113)
-
5.5. Eksportowanie zmiennych (114)
-
5.6. Wyświetlanie wartości wszystkich zmiennych (116)
-
5.7. Wykorzystanie parametrów w skryptach powłoki (117)
-
5.8. Iteracyjna analiza parametrów przekazanych do skryptu (118)
-
5.9. Obsługa parametrów zawierających znaki spacji (119)
-
5.10. Przetwarzanie listy parametrów zawierających znaki spacji (121)
-
5.11. Zliczanie parametrów (123)
-
5.12. Wykorzystanie parametrów (125)
-
5.13. Pobieranie wartości domyślnych (126)
-
5.14. Ustawianie wartości domyślnych (127)
-
5.15. Wykorzystanie pustego ciągu tekstowego jako poprawnej wartości domyślnej (128)
-
5.16. Wykorzystanie wartości innych niż stały ciąg tekstowy jako wartości domyślnych (129)
-
5.17. Generowanie komunikatów o błędach w przypadku niezdefiniowania parametrów (130)
-
5.18. Modyfikacja fragmentów ciągu tekstowego (132)
-
5.19. Wykorzystanie zmiennych tablicowych (133)
6. Logika i arytmetyka powłoki (135)
-
6.1. Wykonywanie działań arytmetycznych w skrypcie powłoki (135)
-
6.2. Rozgałęzianie kodu w instrukcjach warunkowych (138)
-
6.3. Sprawdzanie właściwości plików (141)
-
6.4. Sprawdzanie więcej niż jednego warunku (144)
-
6.5. Sprawdzanie właściwości ciągów tekstowych (145)
-
6.6. Sprawdzanie równości dwóch wartości (146)
-
6.7. Sprawdzanie zgodności wartości ze wzorcem (148)
-
6.8. Sprawdzanie wartości z użyciem wyrażeń regularnych (150)
-
6.9. Zmiana sposobu działania skryptu w zależności od rodzaju przekierowania danych (152)
-
6.10. Pętla while (153)
-
6.11. Pętla z wykorzystaniem instrukcji read (156)
-
6.12. Pętla ze zliczaniem iteracji (158)
-
6.13. Pętla z wykorzystaniem wartości zmiennoprzecinkowych (159)
-
6.14. Wielokrotne rozgałęzianie kodu (160)
-
6.15. Przetwarzanie parametrów wiersza polecenia (162)
-
6.16. Utworzenie prostego menu (165)
-
6.17. Zmiana znaku zachęty w tekstowym menu (166)
-
6.18. Kalkulator wykorzystujący notację RPN (167)
-
6.19. Kalkulator obsługiwany z poziomu wiersza poleceń (170)
7. Dodatkowe narzędzia powłoki I (173)
-
7.1. Wyszukiwanie określonego ciągu w pliku tekstowym (174)
-
7.2. Wyświetlenie jedynie nazwy pliku zawierającego poszukiwany ciąg tekstowy (176)
-
7.3. Zakończenie wyszukiwania wynikiem typu "prawda - fałsz" (177)
-
7.4. Wyszukiwanie ciągu tekstowego niezależnie od wielkości liter (178)
-
7.5. Przeszukiwanie danych przekazywanych w potoku (179)
-
7.6. Odrzucenie niepotrzebnych danych z procedury wyszukiwania (181)
-
7.7. Wyszukiwanie z użyciem bardziej rozbudowanych wzorców (182)
-
7.8. Wyszukiwanie numeru NIP (184)
-
7.9. Wykorzystanie polecenia grep do wyszukiwania informacji w zarchiwizowanych plikach (185)
-
7.10. Zachowanie części listingu wynikowego (186)
-
7.11. Zachowanie fragmentu wiersza wynikowego (187)
-
7.12. Odwrócenie kolejności słów w każdym wierszu (188)
-
7.13. Sumowanie zbioru wartości (189)
-
7.14. Zliczanie wartości tekstowych (190)
-
7.15. Wyświetlanie danych w formie histogramu (192)
-
7.16. Wyświetlenie fragmentu tekstu występującego za wyszukaną frazą (194)
8. Dodatkowe narzędzia powłoki II (197)
-
8.1. Sortowanie danych wyjściowych (197)
-
8.2. Sortowanie wartości liczbowych (198)
-
8.3. Sortowanie adresów IP (199)
-
8.4. Wycinanie fragmentów listingu wynikowego (202)
-
8.5. Usuwanie zduplikowanych wierszy (203)
-
8.6. Kompresja plików (204)
-
8.7. Rozpakowywanie plików (207)
-
8.8. Sprawdzenie docelowego katalogu dla plików archiwum (208)
-
8.9. Zamiana znaków (209)
-
8.10. Zamiana dużych liter na małe (210)
-
8.11. Konwersja plików DOS do formatu systemu Linux (211)
-
8.12. Usuwanie cudzysłowów drukarskich (212)
-
8.13. Zliczanie wierszy, słów i znaków pliku (213)
-
8.14. Zmiana podziału wierszy (214)
-
8.15. Dodatkowe funkcje polecenia less (215)
9. Wyszukiwanie plików - polecenia find, locate, slocate (217)
-
9.1. Wyszukiwanie wszystkich plików MP3 (218)
-
9.2. Przetwarzanie nazw plików zawierających niestandardowe znaki (219)
-
9.3. Zwiększenie szybkości przetwarzania wyszukanych plików (221)
-
9.4. Wyszukiwanie plików wskazywanych przez dowiązania symboliczne (221)
-
9.5. Wyszukiwanie plików bez względu na wielkość liter występujących w nazwach (222)
-
9.6. Wyszukiwanie plików na podstawie daty (223)
-
9.7. Wyszukiwanie plików określonego typu (224)
-
9.8. Wyszukiwanie plików o określonym rozmiarze (225)
-
9.9. Wyszukiwanie plików o określonej treści (226)
-
9.10. Szybkie wyszukiwanie plików i ich treści (227)
-
9.11. Wyszukiwanie plików z wykorzystaniem listy potencjalnych lokalizacji (229)
10. Dodatkowe mechanizmy skryptowe (233)
-
10.1. "Demonizowanie" skryptu (233)
-
10.2. Wielokrotne wykorzystanie kodu - polecenia include i source (234)
-
10.3. Wykorzystanie skryptów konfiguracyjnych w skrypcie (236)
-
10.4. Definiowanie funkcji (238)
-
10.5. Wykorzystanie funkcji. Parametry i zwracane wartości (239)
-
10.6. Przechwytywanie przerwań (242)
-
10.7. Zmiana definicji poleceń za pomocą aliasów (245)
-
10.8. Pomijanie aliasów i funkcji (247)
11. Przetwarzanie informacji o dacie i czasie (251)
-
11.1. Formatowanie dat podczas wyświetlania (252)
-
11.2. Dostarczanie domyślnej wartości daty (253)
-
11.3. Automatyczne generowanie dat z określonego zakresu (255)
-
11.4. Przekształcenie daty i czasu w znacznik czasu (257)
-
11.5. Przekształcanie znaczników czasu w ciągi dat i czasu (258)
-
11.6. Pobranie daty poprzedniego lub kolejnego dnia w języku Perl (259)
-
11.7. Obliczanie daty i czasu (260)
-
11.8. Obsługa stref czasowych, czasu letniego oraz lat przestępnych (262)
-
11.9. Wykorzystanie polecenia date i mechanizmu cron do uruchomienia skryptu w wybranym dniu (263)
12. Skrypty usprawniające pracę użytkownika (265)
-
12.1. Na początek coś łatwego - wyświetlanie myślników (265)
-
12.2.. Przeglądanie albumu ze zdjęciami (268)
-
12.3. Zapis danych w odtwarzaczu MP3 (273)
-
12.4. Nagrywanie płyt CD (277)
-
12.5. Porównywanie dwóch dokumentów (280)
13. Interpretacja danych i podobne zadania (283)
-
13.1. Przetwarzanie parametrów skryptu powłoki (283)
-
13.2. Przetwarzanie parametrów z własnymi komunikatami o błędach (286)
-
13.3. Interpretacja kodu HTML (288)
-
13.4. Zapisywanie danych wynikowych w tablicy (290)
-
13.5. Pobieranie danych wynikowych z wykorzystaniem wywołania funkcji (291)
-
13.6. Interpretacja tekstu z wykorzystaniem instrukcji read (292)
-
13.7. Zapisywanie danych w tablicy za pomocą instrukcji read (293)
-
13.8. Liczba mnoga angielskich rzeczowników (294)
-
13.9. Przetwarzanie danych znak po znaku (296)
-
13.10. Wyczyszczenie drzewa kodu źródłowego w systemie SVN (297)
-
13.11. Utworzenie bazy danych MySQL (298)
-
13.12. Wyodrębnianie określonych pól listingu danych (299)
-
13.13. Modyfikacja określonych pól listingu danych (302)
-
13.14. Usuwanie krańcowych znaków odstępu (303)
-
13.15. Kompresowanie znaków odstępu (307)
-
13.16. Przetwarzanie pól o stałej długości (309)
-
13.17. Przetwarzanie plików niezawierających znaków nowego wiersza (311)
-
13.18. Zapis pliku danych w formacie CSV (312)
-
13.19. Przetwarzanie plików z danymi CSV (314)
14. Bezpieczne skrypty powłoki (315)
-
14.1. Unikanie częstych problemów związanych z bezpieczeństwem (317)
-
14.2. Unikanie spoofingu w pracy interpretera (318)
-
14.3. Wyznaczanie bezpiecznej wartości $PATH (319)
-
14.4. Usuwanie wszystkich aliasów (321)
-
14.5. Czyszczenie tablicy odwzorowań plików wykonywalnych (321)
-
14.6. Zapobieganie zrzutom pamięci (322)
-
14.7. Wyznaczenie bezpiecznej wartości $IFS (323)
-
14.8. Wyznaczanie bezpiecznej wartości umask (324)
-
14.9. Wyszukiwanie w zmiennej $PATH katalogów umożliwiających modyfikowanie zawartości (325)
-
14.10. Dodawanie bieżącego katalogu do listy $PATH (327)
-
14.11. Bezpieczne pliki tymczasowe (328)
-
14.12. Walidacja wprowadzanych danych (332)
-
14.13. Definiowanie praw dostępu (334)
-
14.14. Ujawnienie haseł na liście procesów (335)
-
14.15. Tworzenie skryptów z prawami setuid i setgid (336)
-
14.16. Ograniczenie praw konta gościa (338)
-
14.17. Wykorzystanie środowiska chroot (340)
-
14.18. Wykonywanie skryptu z prawami zwykłego użytkownika (341)
-
14.19. Bezpieczne wykorzystanie mechanizmu sudo (342)
-
14.20. Wykorzystanie haseł w skryptach (343)
-
14.21. Wykorzystanie usługi SSH bez hasła (345)
-
14.22. Ograniczenie liczby poleceń SSH (352)
-
14.23. Rozłączanie nieaktywnych sesji (355)
15. Zaawansowane mechanizmy skryptowe (357)
-
15.1. Przenośność skryptu - problem wiersza #! (358)
-
15.2. Ustawianie zmiennej $PATH zgodnie z zaleceniami POSIX (359)
-
15.3. Tworzenie przenośnych skryptów powłoki (361)
-
15.4. Testowanie skryptów w środowisku VMware (363)
-
15.5. Przenośność kodu pętli (365)
-
15.6. Przenośność instrukcji echo (366)
-
15.7. Dzielenie danych wyjściowych tylko wtedy, gdy jest to konieczne (369)
-
15.8. Przeglądanie danych wynikowych w formacie szesnastkowym (370)
-
15.9. Wykorzystanie mechanizmów przekierowania sieciowego (371)
-
15.10. Ustalenie własnych adresów IP (373)
-
15.11. Pobieranie danych z innego komputera (377)
-
15.12. Przekierowanie wyjścia na czas działania skryptu (379)
-
15.13. Eliminacja błędów typu "argument list too long" (380)
-
15.14. Wysyłanie komunikatów syslog z poziomu skryptu (382)
-
15.15. Wysyłanie wiadomości e-mail ze skryptu (383)
-
15.16. Automatyzacja zadań z wykorzystaniem podziału procesu na etapy (386)
16. Konfiguracja i dostosowanie powłoki bash (389)
-
16.1. Opcje startowe powłoki bash (390)
-
16.2. Dostosowanie znaku zachęty (390)
-
16.3. Trwała zmiana wartości $PATH (398)
-
16.4. Chwilowa zmiana wartości $PATH (399)
-
16.5. Wyznaczanie wartości $CDPATH (404)
-
16.6. Skracanie i zmienianie nazw poleceń (406)
-
16.7. Dostosowanie domyślnego sposobu działania powłoki i jej środowiska (408)
-
16.8. Zmiana sposobu działania mechanizmu readline za pomocą skryptu .inputrc (408)
-
16.9. Własny zbiór narzędzi - dodanie ścieżki ~/bin (410)
-
16.10. Wykorzystanie dodatkowych znaków zachęty - $PS2, $PS3, $PS4 (411)
-
16.11. Synchronizowanie historii poleceń wprowadzanych w różnych sesjach (414)
-
16.12. Włączanie opcji związanych z historią poleceń (415)
-
16.13. Utworzenie lepszego polecenia cd (417)
-
16.14. Utworzenie katalogu i przejście do niego w jednym kroku (419)
-
16.15. Przejście do katalogów najniższego poziomu (421)
-
16.16. Dodawanie nowych funkcji przez zastosowanie ładowanych poleceń wbudowanych (422)
-
16.17. Usprawnienie mechanizmu uzupełniania poleceń (426)
-
16.18. Właściwe wykorzystanie plików startowych (431)
-
16.19. Tworzenie samodzielnych, przenośnych plików RC (435)
-
16.20. Uruchomienie powłoki z własną konfiguracją (437)
17. Zadania administracyjne (449)
-
17.1. Zmiana nazwy wielu plików (449)
-
17.2. Dokumentacja GNU Texinfo i Info w systemie Linux (451)
-
17.3. Rozpakowywanie wielu plików ZIP (452)
-
17.4. Przywracanie przerwanych sesji za pomocą narzędzia screen (453)
-
17.5. Współdzielenie pojedynczej sesji powłoki (456)
-
17.6. Rejestrowanie danych z całej sesji lub zadania wsadowego (457)
-
17.7. Czyszczenie ekranu po wylogowaniu (459)
-
17.8. Rejestracja metadanych plików w celu ich późniejszego odtworzenia (460)
-
17.9. Tworzenie indeksu plików (461)
-
17.10. Wykorzystanie poleceń diff i patch (462)
-
17.11. Zliczanie różnic między plikami (465)
-
17.12. Usuwanie lub zmiana nazwy plików zawierających znaki specjalne w nazwie (467)
-
17.13. Dołączanie danych na początku pliku (468)
-
17.14. Edycja treści pliku (471)
-
17.15. Wykorzystanie mechanizmu sudo w odniesieniu do grupy poleceń (473)
-
17.16. Wyszukiwanie wierszy tylko jednego pliku (475)
-
17.17. Zachowanie N ostatnich obiektów (478)
-
17.18. Filtrowanie wyniku polecenia ps za pomocą instrukcji grep, ale z pominięciem w zestawieniu samej instrukcji grep (481)
-
17.19. Sprawdzenie, czy dany proces działa (481)
-
17.20. Dodawanie prefiksu lub sufiksu do danych wynikowych (483)
-
17.21. Numerowanie wierszy (485)
-
17.22. Generowanie sekwencji liczbowych (487)
-
17.23. Emulacja instrukcji pause systemu DOS (489)
-
17.24. Wyświetlanie separatora tysięcy (489)
18. Mniej pisania - szybsza praca (491)
-
18.1. Szybkie przechodzenie między określonymi katalogami (492)
-
18.2. Powtarzanie ostatniego polecenia (493)
-
18.3. Uruchomienie polecenia zbliżonego do wykonywanego wcześniej (494)
-
18.4. Podmiana wartości składających się z większej liczby słów (495)
-
18.5. Powtórne wykorzystanie parametrów (497)
-
18.6. Automatyczne uzupełnianie nazw (498)
-
18.7. Bezpieczne działania (498)
19. Często popełniane błędy - rozwiązania i podpowiedzi (501)
-
19.1. Zapominanie o ustawieniu praw wykonywania (501)
-
19.2. Usuwanie błędu "Nie ma takiego pliku ani katalogu" (502)
-
19.3. Zapominanie o braku bieżącego katalogu w zmiennej $PATH (504)
-
19.4. Nadawanie skryptowi nazwy test (505)
-
19.5. Spodziewana zmiana eksportowanych wartości (506)
-
19.6. Brak cudzysłowów w operacjach przypisania wywołuje błędy "command not found" (507)
-
19.7. Wartości pasujące do wzorca są układane w kolejności alfabetycznej (509)
-
19.8. Potoki powołują podpowłoki (509)
-
19.9. Uzdrawianie terminala (512)
-
19.10. Usuwanie plików z użyciem pustej zmiennej (513)
-
19.11. Niestandardowe zachowanie instrukcji printf (514)
-
19.12. Sprawdzanie składni skryptu powłoki (516)
-
19.13. Śledzenie przebiegu skryptów (516)
-
19.14. Unikanie komunikatów "command not found" podczas korzystania z funkcji (518)
-
19.15. Pomyłki w stosowaniu symboli wieloznacznych powłoki i wyrażeń regularnych (519)
A: Podręczna pomoc (521)
-
Wywołanie powłoki bash (521)
-
Dostosowanie znaku zachęty (522)
-
Symbole specjalne ANSI (522)
-
Polecenia wbudowane i słowa kluczowe (523)
-
Wbudowane zmienne powłoki (526)
-
Opcje instrukcji set (530)
-
Opcje instrukcji shopt (531)
-
Zmiana sposobu działania powłoki za pomocą instrukcji set, shopt i zmiennych środowiskowych (533)
-
Operatory wyrażeń warunkowych (545)
-
Przekierowanie strumieni wejścia-wyjścia (546)
-
Opcje i znaki specjalne instrukcji echo (546)
-
Instrukcja printf (548)
-
Formatowanie daty i czasu z wykorzystaniem funkcji strftime (552)
-
Znaki wzorców dopasowywania (554)
-
Operatory rozszerzonego mechanizmu dopasowywania do wzorca extglob (555)
-
Symbole specjalne polecenia tr (555)
-
Składnia pliku konfiguracyjnego mechanizmu readline (555)
-
Polecenia trybu emacs (558)
-
Polecenia sterujące trybu vi (559)
-
Tabela wartości ASCII (561)
B: Przykłady dołączone do oprogramowania bash (565)
-
Przykłady zapisane w katalogu startup-files (565)
C: Przetwarzanie poleceń (573)
-
Etapy przetwarzania polecenia (573)
D: Kontrola wersji (579)
-
CVS (580)
-
Subversion (585)
-
RCS (591)
-
Inne rozwiązania (596)
E: Kompilacja powłoki bash (599)
-
Pobranie pakietu bash (599)
-
Rozpakowanie archiwum (599)
-
Co zawiera archiwum? (600)
-
Do kogo się zwrócić? (604)
Skorowidz (607)