Helion


Szczegóły ebooka

 
Bash. Receptury

Bash. Receptury


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!

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)