Wyszukiwanie w witrynie

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ę.