Linux jest systemem operacyjnym, który zdobywa coraz większą popularność wśród programistów. Jego otwartość, niezawodność i uniwersalność sprawiają, że coraz chętniej jest wykorzystywany do tworzenia aplikacji internetowych, systemów bazodanowych czy też projektów open source. Niniejszy kurs jest skierowany do osób rozpoczynających przygodę z Linuxem i chcących poznać podstawy tego systemu.
Rozpoczniemy od omówienia interfejsu linii poleceń, który jest podstawowym sposobem interakcji z kernelem Linuksa. Poznamy najważniejsze polecenia służące do nawigacji w systemie plików, zarządzania plikami i katalogami, a także edycji tekstu. Nauczymy się efektywnie korzystać z powłoki Bash, aby sprawnie poruszać się po systemie.
Podstawowe polecenia Linuksa
Poruszanie się po systemie
Aby swobodnie korzystać z Linuksa przez linię poleceń, niezbędna jest znajomość poleceń służących do nawigacji w strukturze katalogów. Poznamy polecenia takie jak cd, pwd, ls, które pozwolą nam sprawnie przemieszczać się pomiędzy katalogami i wyświetlać ich zawartość. Omówione zostaną opcje poszerzające możliwości tych poleceń.
Praca z plikami i katalogami
Linux udostępnia zaawansowane narzędzia do zarządzania plikami i katalogami. Polecenia cp, mv, rm pozwolą odpowiednio na kopiowanie, przenoszenie i usuwanie plików. Poznamy polecenia mkdir i touch tworzące katalogi i pliki. Ważnym zagadnieniem będą uprawnienia do plików kontrolowane polecaniami chmod i chown.
Edycja tekstu
Edytor vi należy do podstawowego wyposażenia każdej dystrybucji Linuksa. Nauczymy się w nim poruszać, wprowadzać tekst, zapisywać i wychodzić z programu. Poznamy zaawansowane funkcje vim jak przeszukiwanie tekstu czy pracę z wieloma plikami.
Instalacja oprogramowania na Linuksie
Menedżery pakietów
Większość dystrybucji Linuksa posiada menedżery pakietów ułatwiające instalację i aktualizację oprogramowania. Pakiety deb i rpm pozwolą w prosty sposób pobierać i usuwać aplikacje bezpośrednio z repozytoriów. Omówimy różne menedżery pakietów oraz podstawowe operacje z nimi związane.
Kompilacja z kodu źródłowego
Często korzystniej jest skompilować program z kodów źródłowych, aby dostosować go do własnych potrzeb. Przeanalizujemy proces pobierania i konfiguracji kodu źródłowego, a następnie jego kompilacji. Omówione zostaną narzędzia Makefile, gcc, debugowanie i instalacja wygenerowanych binariów.
Automatyzacja instalacji
Narzędzia takie jak Ansible, Puppet czy Chef umożliwiają zautomatyzowaną konfigurację systemu i instalację oprogramowania. Pozwolą zapewnić spójność środowiska na wielu maszynach przy minimalnym nakładzie pracy. Omówione zostaną zalety i przykłady zastosowania tych narzędzi.
Czytaj więcej: CI/CD dla programistów - szybki start w 30 minut
Konfiguracja środowiska systemu
Menadżery okien
Menadżery okien takie jak Openbox, Fluxbox, i3 umożliwiają elastyczne zarządzanie oknami i pulpitami roboczymi. Pozwolą na optymalizację przestrzeni roboczej i dostosowanie środowiska pracy do własnych preferencji. Omówione zostaną możliwości konfiguracji i dopasowania interfejsu.
Pulpity graficzne
Środowiska graficzne KDE, Gnome i XFCE udostępniają bogaty zestaw narzędzi do pracy na pulpicie. Przeanalizujemy możliwości konfiguracji pulpitu, menu, paneli, tapet i schematów kolorów. Porównamy zalety poszczególnych środowisk pod kątem wydajności i funkcjonalności.
Dostosowywanie interfejsu
Możliwości personalizacji interfejsu w Linuksie są praktycznie nieograniczone. Omówimy konfigurację motywów GTK i Qt, instalację dodatkowych paneli i widgetów. Przeanalizujemy też jak zmienić domyślną czcionkę, kursor i dźwięki systemowe.
Bezpieczeństwo i administracja

Konta i uprawnienia użytkowników
Linux posiada zaawansowany system kontroli dostępu opartej o użytkowników i grupy. Wyjaśnimy jak tworzyć konta użytkowników i nadawać im odpowiednie uprawnienia do plików i zasobów systemowych. Omówione zostaną pojęcia jak UID, GID, maski uprawnień.
Zapory sieciowe i aktualizacje
Bezpieczeństwo systemu Linux można zwiększyć poprzez konfigurację zapór sieciowych, takich jak iptables czy firewalld. Wyjaśnimy jak blokować niepożądany ruch przychodzący i wychodzący. Istotne jest także regularne aktualizowanie systemu - omówimy narzędzia do zarządzania poprawkami.
Backup i monitoring
Aby zminimalizować skutki ewentualnej awarii lub włamania, należy regularnie wykonywać kopie zapasowe kluczowych danych. Przedstawimy narzędzia do automatyzacji backupów, takie jak rsync czy BorgBackup. Omówimy też monitorowanie zasobów i logów przy pomocy narzędzi jak top, htop czy multitail.
Programowanie na Linuksie
Edytory tekstu i IDE
Linux oferuje szeroki wybór zaawansowanych edytorów tekstu i zintegrowanych środowisk programistycznych (IDE). Porównamy możliwości takich narzędzi jak Vim, Emacs, VS Code, PyCharm w kontekście wygody pracy i produktywności programisty.
Kompilacja i debugowanie
Omówimy narzędzia programistyczne ułatwiające kompilację, linkowanie i debugowanie aplikacji na Linuksie, takie jak Make, GCC, GDB. Poznamy techniki debugowania i profilowania kodu w celu wykrywania i usuwania błędów.
Kontrola wersji kodu źródłowego
Kontrola wersji przy użyciu narzędzi takich jak Git czy SVN pozwala śledzić zmiany w kodzie i łatwo wracać do poprzednich wersji. Wyjaśnimy działanie systemów kontroli wersji i opiszemy podstawowe operacje z nimi związane.
Linux w chmurze i kontenerach
Wdrażanie aplikacji w chmurze
Coraz popularniejszym trendem jest przenoszenie aplikacji do chmury. Wyjaśnimy jak przygotować aplikację do wdrożenia w chmurze i jakie korzyści to przynosi. Omówione platformy to AWS, Google Cloud i Azure.
Docker i Kubernetes
Technologia kontenerów, takich jak Docker pozwala na szybkie wdrażanie i skalowanie aplikacji. Nauczymy się budować obrazy kontenerów, uruchamiać kontenery i zarządzać nimi przy pomocy Kubernetes.
Chmura obliczeniowa
Linux stanowi podstawę popularnych usług chmury obliczeniowej, takich jak Amazon EC2, Azure Virtual Machines czy Google Compute Engine. Omówimy możliwości i sposoby wykorzystania maszyn wirtualnych w chmurze w celu skalowania infrastruktury.