Bash. Receptury - ebook
Bash. Receptury - ebook
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)
Kategoria: | Systemy operacyjne |
Zabezpieczenie: |
Watermark
|
ISBN: | 978-83-246-5972-2 |
Rozmiar pliku: | 4,3 MB |