LFCS nr 1: Jak używać polecenia „sed” do manipulacji plikami w systemie Linux
Linux Foundation ogłosiła przyznanie certyfikatu LFCS (Linux Foundation Certified Sysadmin), nowego programu, którego celem jest pomaganie osobom na całym świecie w uzyskaniu certyfikatu w zakresie podstawowych i średnio zaawansowanych zadań administracyjnych w systemach Linux.
Obejmuje to wspieranie działających systemów i usług, a także rozwiązywanie problemów i analizę z pierwszej ręki oraz podejmowanie inteligentnych decyzji w celu eskalacji problemów do zespołów inżynieryjnych.
Od ostatniej wersji 11 sierpnia 2023 r. skrupulatnie uwzględniliśmy domeny i kompetencje, zbiegając się z datą wejścia w życie 11 maja 2023 r., zgodnie z oficjalną deklaracją Fundacja Linuksa.
Seria będzie nosiła tytuł Przygotowanie do LFCS (Certyfikowany administrator systemu Linux) części od 1 do 33 i obejmie następujące tematy:
- Part 1
Jak używać polecenia „Sed” do manipulowania plikami w systemie Linux
- Part 2
-
Jak zainstalować i używać Vi/Vim w systemie Linux
- Part 3
Jak kompresować pliki i katalogi oraz znajdować pliki w systemie Linux
- Part 4
Partycjonowanie urządzeń pamięci masowej, formatowanie systemów plików i konfigurowanie partycji wymiany
- Part 5
Montuj/odłączaj lokalne i sieciowe systemy plików (Samba i NFS) w systemie Linux
- Part 6
Składanie partycji jako urządzeń RAID – tworzenie kopii zapasowych systemu i zarządzanie nimi
- Part 7
Zarządzanie procesem i usługami uruchamiania systemu (SysVinit, Systemd i Upstart
- Part 8
Jak zarządzać użytkownikami i grupami, uprawnieniami do plików i dostępem Sudo
- Part 9
Zarządzanie pakietami systemu Linux za pomocą Yum, RPM, Apt, Dpkg, Aptitude i Zypper
- Part 10
Nauka podstawowych skryptów powłoki i rozwiązywania problemów z systemem plików
- Part 11
Jak zarządzać i tworzyć LVM za pomocą poleceń vgcreate, lvcreate i lvextend
- Part 12
-
Jak poznawać system Linux z zainstalowaną dokumentacją pomocy i narzędziami
- Part 13
Jak skonfigurować i rozwiązać problemy z programem Grand Unified Bootloader (GRUB)
- Part 14
Monitoruj wykorzystanie zasobów procesów systemu Linux i ustawiaj limity procesów dla poszczególnych użytkowników
- Part 15
Jak ustawić lub zmodyfikować parametry wykonawcze jądra w systemach Linux
- Part 16
Wdrażanie obowiązkowej kontroli dostępu za pomocą SELinux lub AppArmor w systemie Linux
- Part 17
Jak ustawić listy kontroli dostępu (ACL) i przydziały dysku dla użytkowników i grup
- Part 18
Instalowanie usług sieciowych i konfigurowanie automatycznego uruchamiania podczas rozruchu
- Part 19
Kompletny przewodnik po konfigurowaniu serwera FTP w celu umożliwienia logowania anonimowego
- Part 20
Skonfiguruj podstawowy serwer DNS z buforowaniem rekurencyjnym i skonfiguruj strefy dla domeny
- Part 21
Jak zainstalować, zabezpieczyć i dostroić wydajność serwera bazy danych MariaDB
- Part 22
-
Jak zainstalować i skonfigurować serwer NFS do udostępniania systemu plików
- Part 23
Jak skonfigurować Apache z wirtualnym hostingiem opartym na nazwach z certyfikatem SSL
- Part 24
Jak skonfigurować zaporę sieciową Iptables, aby umożliwić zdalny dostęp do usług w systemie Linux
- Part 25
Jak zamienić Linuksa w router do obsługi ruchu statycznego i dynamicznego
- Part 26
Jak skonfigurować zaszyfrowane systemy plików i dokonać zamiany za pomocą narzędzia Cryptsetup
- Part 27
Jak monitorować wykorzystanie systemu, awarie i rozwiązywać problemy z serwerami Linux
- Part 28
Jak skonfigurować repozytorium sieciowe w celu instalacji lub aktualizacji pakietów
- Part 29
Jak kontrolować wydajność sieci, bezpieczeństwo i rozwiązywanie problemów
- Part 30
Jak instalować maszyny wirtualne i kontenery oraz zarządzać nimi
- Part 31
Naucz się podstaw Git, aby efektywnie zarządzać projektami
- Part 32
Przewodnik dla początkujących dotyczący konfigurowania adresów IPv4 i IPv6 w systemie Linux
- Part 33
Przewodnik dla początkujących dotyczący tworzenia połączeń sieciowych i mostowania w systemie Ubuntu
Ten post jest 1 częścią serii 33 samouczków, która omawia niezbędne domeny i kompetencje wymagane do egzaminu certyfikacyjnego LFCS. Biorąc to pod uwagę, uruchom terminal i zaczynajmy.
Przetwarzanie strumieni tekstowych w systemie Linux
Linux traktuje dane wejściowe i wyjściowe programów jako strumienie (lub sekwencje) znaków. Aby zacząć rozumieć przekierowania i potoki, musimy najpierw zrozumieć trzy najważniejsze typy strumieni we/wy (wejściowych i wyjściowych), które w rzeczywistości są plikami specjalnymi (zgodnie z konwencją w systemach UNIX i Linux, strumienie danych i urządzenia peryferyjne lub pliki urządzeń, są również traktowane jak zwykłe pliki).
Różnica pomiędzy >
(operator przekierowania) a |
(operator potoku) polega na tym, że pierwszy łączy polecenie z plikiem, drugi łączy wyjście polecenia z innym Komenda.
command > file
command1 | command2
Ponieważ operator przekierowania tworzy lub nadpisuje pliki w trybie cichym, musimy go używać z najwyższą ostrożnością i nigdy nie mylić go z potokiem.
Jedną z zalet potoków w systemach Linux i UNIX jest to, że z potokiem nie jest związany żaden plik pośredni – standardowe wyjście pierwszego polecenia nie jest zapisywane w pliku, a następnie odczytywane przez drugie polecenie.
W poniższych ćwiczeniach praktycznych wykorzystamy wiersz „Szczęśliwe dziecko” (autor anonimowy).
Korzystanie z polecenia sed
Nazwa sed jest skrótem od edytora strumieniowego. Dla tych, którzy nie znają tego terminu, edytor strumieniowy służy do wykonywania podstawowych transformacji tekstu w strumieniu wejściowym (pliku lub danych wejściowych z potoku).
Zmień małe litery na wielkie w pliku
Najbardziej podstawowym (i popularnym) zastosowaniem sed jest zastępowanie znaków. Zaczniemy od zmiany każdego wystąpienia małych liter y
na UPPERCASE Y
i przekierowania danych wyjściowych do pliku ahappychild2.txt.
Flaga g
wskazuje, że sed powinien wykonać podstawienie dla wszystkich wystąpień terminu w każdej linii pliku. Jeśli ta flaga zostanie pominięta, sed zastąpi tylko pierwsze wystąpienie terminu w każdej linii.
Podstawowa składnia Seda:
sed ‘s/term/replacement/flag’ file
Nasz przykład:
sed ‘s/y/Y/g’ ahappychild.txt > ahappychild2.txt
Wyszukaj i zamień słowo w pliku
Jeśli chcesz wyszukać lub zamienić znak specjalny (taki jak /
, \
, &
), musisz go zmienić w wyrażeniu lub ciągi zastępcze, z ukośnikiem odwrotnym.
Na przykład zastąpimy słowo i ampersandem. Jednocześnie zastąpimy słowo I
słowem Ty
, gdy pierwsze znajdzie się na początku linii.
sed 's/and/\&/g;s/^I/You/g' ahappychild.txt
W powyższym poleceniu ^
(znak daszka) jest dobrze znanym wyrażeniem regularnym używanym do reprezentowania początku linii.
Jak widać, możemy połączyć dwa lub więcej poleceń podstawienia (i użyć w nich wyrażeń regularnych), oddzielając je średnikiem i umieszczając zestaw w pojedynczych cudzysłowach.
Wydrukuj wybrane linie z pliku
Innym zastosowaniem sed jest pokazanie (lub usunięcie) wybranej części pliku. W poniższym przykładzie wyświetlimy pierwszych 5 linii /var/log/messages z 8 czerwca.
sed -n '/^Jun 8/ p' /var/log/messages | sed -n 1,5p
Zauważ, że domyślnie sed wypisuje każdą linię. Możemy zastąpić to zachowanie opcją -n, a następnie nakazać sedowi wypisanie (oznaczone przez p) tylko tej części pliku (lub potoku), która pasuje do wzorca (8 czerwca na początku linii w pierwszym przypadku i linie od 1 do 5 włącznie w drugim przypadku).
Wreszcie, podczas sprawdzania skryptów lub plików konfiguracyjnych przydatne może być sprawdzenie samego kodu i pominięcie komentarzy. Następujący jednowierszowy sed usuwa (d
) puste linie lub te zaczynające się od #
(znak |
oznacza wartość logiczną OR< pomiędzy dwoma wyrażeniami regularnymi).
sed '/^#\|^$/d' apache2.conf
unikalne polecenie
Polecenie uniq pozwala nam zgłosić lub usunąć zduplikowane linie w pliku, domyślnie zapisując na standardowe wyjście. Musimy zauważyć, że uniq nie wykrywa powtarzających się linii, chyba że sąsiadują ze sobą.
Dlatego uniq jest powszechnie używany wraz z poprzedzającym go sortowaniem (który służy do sortowania linii plików tekstowych). Domyślnie funkcja sort przyjmuje pierwsze pole (oddzielone spacjami) jako pole kluczowe. Aby określić inne pole kluczowe, musimy skorzystać z opcji -k
.
Unikalne przykłady poleceń
Komenda du -sch /path/to/directory/* zwraca wykorzystanie miejsca na dysku na podkatalogi i pliki w określonym katalogu w formacie czytelnym dla człowieka (pokazuje także sumę na katalog) i nie uporządkuj dane wyjściowe według rozmiaru, ale według podkatalogu i nazwy pliku.
Możemy użyć następującego polecenia, aby posortować według rozmiaru.
du -sch /var/* | sort –h
Możesz policzyć liczbę zdarzeń w dzienniku według daty, nakazując uniq wykonanie porównania przy użyciu pierwszych 6 znaków (-w 6)
każdego wiersza (gdzie data jest określony) i poprzedzając każdą linię wyjściową liczbą wystąpień (-c
) za pomocą następującego polecenia.
cat /var/log/mail.log | uniq -c -w 6
Na koniec możesz połączyć sort i uniq (jak to zwykle bywa). Rozważ poniższy plik z listą darczyńców, datą darowizny i kwotą. Załóżmy, że chcemy wiedzieć, ilu jest unikalnych dawców.
Użyjemy następującego polecenia cat, aby wyciąć pierwsze pole (pola są oddzielone dwukropkiem), posortować według nazwy i usunąć zduplikowane linie.
cat sortuniq.txt | cut -d: -f1 | sort | uniq
Polecenie grep
Polecenie grep przeszukuje pliki tekstowe lub (wyjście polecenia) pod kątem wystąpienia określonego wyrażenia regularnego i wyświetla dowolną linię zawierającą dopasowanie do standardowego wyjścia.
Przykłady poleceń Grep
Wyświetl informacje z /etc/passwd dla użytkownika gacanepa, ignorując wielkość liter.
grep -i gacanepa /etc/passwd
Pokaż całą zawartość /etc, którego nazwa zaczyna się od rc, po którym następuje pojedyncza liczba.
ls -l /etc | grep rc[0-9]
tr Użycie polecenia
Komendy tr można użyć do tłumaczenia (zmiany) lub usuwania znaków ze standardowego wejścia i zapisania wyniku na standardowe wyjście.
Zmień wszystkie małe litery na wielkie w pliku sortuniq.txt.
cat sortuniq.txt | tr [:lower:] [:upper:]
Ściśnij ogranicznik na wyjściu ls –l tylko do jednej spacji.
ls -l | tr -s ' '
Wytnij użycie poleceń
Polecenie wycinania wyodrębnia fragmenty linii wejściowych (ze standardowego wejścia lub plików) i wyświetla wynik na standardowym wyjściu, w oparciu o liczbę bajtów (opcja -b
), znaków (-c
) lub pola (-f
).
W tym ostatnim przypadku (opartym na polach) domyślnym separatorem pól jest tabulator, ale można określić inny separator za pomocą opcji -d
.
Przykłady poleceń cięcia
Wyodrębnij konta użytkowników i przypisane im domyślne powłoki z /etc/passwd (opcja –d
pozwala nam określić ogranicznik pola i –f
Przełącznik wskazuje, które pola zostaną wyodrębnione.
cat /etc/passwd | cut -d: -f1,7
Podsumowując, utworzymy strumień tekstowy składający się z pierwszego i trzeciego niepustego pliku wyniku polecenia ostatniego. Użyjemy grep jako pierwszego filtra do sprawdzenia sesji użytkownika gacanepa, a następnie ściśnij ograniczniki tylko do jednej spacji (tr -s ' '
).
Następnie wyodrębnimy pierwsze i trzecie pole za pomocą wycięcia, a na koniec posortujemy według drugiego pola (w tym przypadku adresów IP), pokazując unikatowość.
last | grep gacanepa | tr -s ' ' | cut -d' ' -f1,3 | sort -k2 | uniq
Powyższe polecenie pokazuje, jak można łączyć wiele poleceń i potoków, aby uzyskać filtrowane dane zgodnie z naszymi pragnieniami. Możesz także uruchomić go w częściach, aby zobaczyć wynik przekazywany potokowo z jednego polecenia do drugiego (nawiasem mówiąc, może to być świetna nauka!).
Streszczenie
Chociaż ten przykład (wraz z resztą przykładów w bieżącym samouczku) może na pierwszy rzut oka nie wydawać się zbyt przydatny, jest to dobry punkt wyjścia do rozpoczęcia eksperymentów z poleceniami używanymi do tworzenia, edytowania i manipulowania plikami z systemu Linux wiersz poleceń.
Zachęcamy do pozostawiania pytań i komentarzy poniżej – będziemy bardzo wdzięczni!
E-Book LFCS jest już dostępny w sprzedaży. Zamów swój egzemplarz już dziś i rozpocznij swoją podróż do zostania certyfikowanym administratorem systemu Linux!
Product Name | Price | Buy |
---|---|---|
The Linux Foundation’s LFCS Certification Preparation Guide | $19.99 | [Buy Now] |
Na koniec, rozważ zakup kuponu egzaminacyjnego za pomocą poniższych linków, aby otrzymać niewielką prowizję, która pomoże nam aktualizować tę książkę.