VIDEO TRANSCRIPTION
Omówiono podstawowe polecenia systemowe w Ubuntu Server do zarządzania plikami i katalogami, takie jak CD, LS, mkdir, touch, CP, oraz RM. Dodatkowo omówiono programy RM, DIV, CAT, GREP oraz techniki takie jak tworzenie archiwów za pomocą TAR, dowiązania twarde i symboliczne, oraz aliasy w systemie Linux. Wspomniano o korzystaniu z dowiązań w systemach linuksowych, konfiguracji serwera Apache oraz trendzie wybierania skryptów zamiast aliasów. Planowane są także przyszłe tematy, takie jak serwery plikowe z LVM.
Witam serdecznie w trzecim odcinku z cyklu Ubuntu Server. Dzisiejszy epizod to będzie swoisty przegląd poleceń powłoki systemowej związanych z zarządzaniem plikami i katalogami. Oprócz typowych, prostych poleceń, które służą do poruszania się po strukturze katalogów, tworzenia czy też kopiowania plików oraz folderów, zajmiemy się również dużo bardziej ambitnymi komendami, które zdecydowanie ułatwiają codzienną pracę z systemem. Temat wydawać by się mogło banalny i trywialny, ale zdecydowanie tak nie jest. Konsola linuksowa obfituje w wiele ciekawych narzędzi związanych z operowaniem na plikach, o których użytkownicy Windowsa mogą tylko pomarzyć, a kilka z nich z całą pewnością jest wartych uwagi. Nie będziemy dzisiaj oczywiście omawiać wszystkich poleceń ze wszystkimi parametrami, bo to trwałoby pewnie kilka ładnych godzin. Skupimy się natomiast na poleceniach najczęściej używanych przeze mnie w pracy. Nie draćmy zatem czasu, tylko zaczynajmy zabawę.
Jak już wiemy, po zalogowaniu się do systemu znajdujemy się w katalogu domowym użytkownika. O tym świadczy znak tyldy tutaj. Ona w Linuxach z reguły oznacza katalog domowy. Do poruszania się po strukturze katalogów, czyli tak właściwie do zmiany lokalizacji, w jakiej się w danym momencie znajdujemy, wykorzystujemy polecenie CD. Oczywiście samo polecenie to trochę mało. Jak widzicie, wykonanie go, kiedy naszą lokalizacją jest katalog domowy bez żadnych argumentów niewiele daje. Dlatego zazwyczaj, poza jednym przypadkiem, nie stosujemy tego polecenia samodzielnie. Podstawowym argumentem polecenia CD są dwie kropki, a wykonanie takiej składni skutkować będzie przejściem do jednego katalogu wyżej w strukturze, czyli w tym wypadku do katalogu home wszystkich użytkowników. Widzimy to tutaj. Tutaj też widzimy, gdzie aktualnie znajdujemy się w całej strukturze katalogów, co ułatwia nam nawigację i przemieszczanie się.
Kolejny często używany argument w tym poleceniu to slash, zwany ukośnikiem, który pozwala nam z każdego dowolnego miejsca w strukturze katalogów przenieść się do katalogu głównego. Cyk i już jesteśmy w katalogu głównym. Podobnie do ukośnika zadziała nam również tylda, która spowoduje przeskok do katalogu domowego zalogowanego użytkownika z dowolnej lokalizacji, chociaż to też da się zrobić wykonując po prostu CD bez żadnych parametrów. I to jest ten jeden przywadek, o którym wspomniałem. CD pozwala oczywiście na poruszanie się po strukturze w nieco bardziej elastyczny sposób, aniżeli tylko przechodzenie do katalogu nadrzędnego czy domowego. Dzięki niemu możemy za pomocą jednej linii kodu przenieść się w dowolne miejsce w strukturze, bez względu na to, gdzie aktualnie się znajdujemy. Tyle o CD.
Nie ma się co tu rozgadywać, bo program prosty i banalny w obsłudze, a jego działanie jest oczywiste, także lecimy dalej. Skoro omówiliśmy CD, no to nie można nie wspomnieć o innym trywialnym, ale również bardzo ważnym i potrzebnym narzędziu jakim jest LS. LSA poznaliśmy już w poprzednim odcinku. Jest to program listujący zawartość danego katalogu. Żadna filozofia, ale polecenie bardzo często stosowane. Samo w sobie zwraca nam zawartość katalogu, w jakim aktualnie się znajdujemy. Nic jednak nie stoi na przeszkodzie, aby wylistować sobie zawartość zupełnie innego katalogu, znajdującego się w zupełnie innej lokalizacji. Parametrów polecenia LS jest sporo. Najważniejsze dwa z mojego punktu widzenia to parametry małe a oraz małe l.
Małe a pozwala nam wyświetlić całą zawartość katalogu łącznie z plikami ukrytymi, linkami oraz archiwami, a parametr l, który już doskonale znacie z poprzedniego odcinka, listuje zawartość wraz z dodatkowymi informacjami takimi jak uprawnienia, własność, wielkość czy też datę utworzenia pliku czy katalogu. Parametry można oczywiście ze sobą łączyć wedle życzenia. Z ciekawych moim zdaniem opcji programu znaleźć możemy chociażby sortowanie, dzięki któremu możemy sobie wyświetlić listę posortowaną według np. czasu utworzenia danego zasobu. Nie rzadziej niż zmiana pozycji w strukturze katalogów, czy listowanie zawartości przydają nam się w codziennej pracy z systemem narzędzia służące do budowania struktury katalogów. Jednym z takich narzędzi jest program mkdir, który to w całej swojej prostocie pozwala na tworzenie pojedynczych katalogów, całych zbiorów katalogów, a także daje możliwość definiowania miejsca, gdzie dany katalog czy zbiór ma zostać utworzony.
Wydanie takiego polecenia wraz z dowolną nazwą tworzy nam katalog o podanej nazwie w lokalizacji, w jakiej obecnie się znajdujemy. Jeśli taki katalog chcielibyśmy utworzyć np. w katalogu domowym Bolka, no to wcale nie musimy do niego przechodzić. Wystarczy, że podamy polecenie, a jako argument wpiszemy całą, bezwzględną ścieżkę, łącznie z nazwą katalogu na koniec. Ta nazwa na końcu to jest właśnie katalog, który będziemy tworzyć. Jeśli podczas tworzenia zasobu pojawi się monit o braku uprawnień, tak jak teraz, to pamiętajcie, że zawsze możecie temu zaradzić stosując sudo przed poleceniem. Tworzenie pojedynczych folderów to sprawa prosta i oczywista, ale działanie mkdir nie ogranicza się tylko do tworzenia pojedynczych elementów tego typu. Dzięki niemu możemy również nadawać już na etapie tworzenia zasobu uprawnienia, do czego służy parametr m.
A także, można powiedzieć przede wszystkim, dzięki mkdir możemy tworzyć całą strukturę, czyli wiele katalogów i podkatalogów jednocześnie. Zobaczmy sobie może taki przykładowy zbiór. Jego ręczne tworzenie na piechotę, gdzie najpierw tworzymy katalog główny, potem przechodzimy do niego i tworzymy następne itd. może okazać się męczące, a przy skryptach łatwo popełnić błąd. Dzięki wykorzystaniu mkdir z odpowiednim parametrem, strukturę taką wykonamy sobie bardzo szybko za pomocą jednej linii. Zacznijmy od parametru p oznaczającego parents, czyli rodziców, który informuje system, że pierwszy katalog ma być nadrzędny, a kolejne podrzędny. To jest bardzo ważne, aby tego użyć. bo inaczej nie zadziała to właściwie. Dalej podajemy nazwę katalogu nadrzędnego, a teraz po slashu i co ważne w nawiasie klamrowym podajemy po przecinku nazwy podkatalogów. To jeszcze nie wszystko. W katalogach oznaczonych latami mamy jeszcze kolejne podkatalogi, które również chcemy utworzyć.
Ich nazwy podajemy po kolejnym slashu w danym podkatalogu, oczywiście po przecinku i w nawiasie klamrowym. Analogicznie wykonujemy kolejne podkatalogi. Pamiętajmy również, aby pozamykać otwarte nawiasy. Gotowe. Teraz polecenie tree z nazwą katalogu nadrzędnego. No i jak widzicie gotowe, struktura utworzona. Zapamiętajcie, slash pozwala nam tworzyć kolejny poziom katalogów, a nazwy katalogów na danym poziomie, które chcemy utworzyć, podajemy po przecinku w klamrowym nawiasie. Zanim przejdziemy dalej, to mała zagadka. Jak utworzyć katalog o nazwie zupa Romana? Myślicie, że tak? No tak się nie uda, bo zapis wyrażony w taki sposób informuje system, że chcemy utworzyć dwa katalogi. Pierwszy o nazwie zupa, drugi Romana. Jeśli chcemy tworzyć nazwy kilkuczłonowe, to bierzemy je w cudzysłów albo stosujemy apostrofy. Ja zazwyczaj, kiedy tworzę złożone nazwy, to używam po prostu podkreśnika do łączenia poszczególnych elementów. Wy możecie zrobić jak chcecie.
Umiemy już tworzyć katalogi, no to może zobaczmy jak tworzyć pliki. Narzędzi w Linuxach pozwalających tworzyć pliki jest naprawdę sporo, ale ja przy robocie, kiedy muszę utworzyć jakiś pusty plik, stosuję polecenie touch. Generalnie touch w Linuxach stosowany jest głównie do zmian tzw. timestampsów, czyli po prostu znaczników czasowych informujących np. o tym, kiedy plik został utworzony. Moim zdaniem doskonale również sprawdzi się, kiedy chcemy utworzyć sobie jakiś pusty plik. Analogicznie do omawianych wcześniej poleceń, również touch tworzy domyślnie plik w lokalizacji, w jakiej się znajdujemy. Możemy oczywiście również tworzyć pliki w innym miejscu, podając po prostu ścieżkę, gdzie ten plik ma zostać utworzony. Jeśli chcemy np. utworzyć plik ukryty, to podajemy kropkę przed jego nazwą. Kopiowanie danych. Kolejna prosta czynność, a jak często stosowana i wykorzystywana.
W Linuxach do kopiowania plików i katalogów wykorzystać możemy polecenie cp. Jego składnia jest bardzo prosta. Składa się tak naprawdę z trzech elementów. Polecenia, lokalizacji pliku czy też katalogu, który chcemy przekopiować. Może to być też również po prostu nazwa, jeśli chcemy przekopiować to z lokalizacji, w której się aktualnie znajdujemy. No i na koniec mamy jeszcze trzeci element, czyli miejsce docelowe, do jakiego plik czy katalog ma zostać przekopiowany. Zupa to nazwa katalogu, do którego przekopiowaliśmy plik. Ten katalog znajduje się w lokalizacji, w której my aktualnie jesteśmy, dlatego nie było konieczne podawanie całej ścieżki. Nazwa katalogu wystarczyła. No i jak widzicie jest okej. Tak przy okazji, Tree nie jest poleceniem, które jest domyślnie instalowane na Ubuntu.
Jeśli chcecie tak jak ja sprawdzać zawartość struktury katalogów za pomocą Tree, musicie sobie takim poleceniem ten programik doinstalować. CP ma kilka ciekawych opcji. Jedną z nich jest możliwość zmiany pliku w nowej lokalizacji już na etapie przenoszenia. Jeśli wydamy takie polecenie, ale tutaj zamiast powiedzmy starej nazwy wpiszemy nową, plik zostanie przekopiowany z jednoczesną zmianą nazwy. CP nie służy tylko do kopiowania plików, ale również do kopiowania całych katalogów. Aby jednak przekopiować zawartość powiedzmy katalogu dokumenty do nowej lokalizacji, może to być tutaj, musimy użyć parametru R. Bez tego nie da rady. Nie wchodząc w szczegóły, parametr R pozwala na skopiowanie całych struktur katalogów, a nie tylko plików. Inny ciekawy parametr to U, który kopiuje tylko te pliki, które zostały zmienione. Skuteczne przy dużych zbiorach danych.
Wówczas pliki, które się nie zmieniły od ostatniego kopiowania, są po prostu pomijane. A teraz mały hak. Jeśli chcemy przekopiować całą zawartość bieżącego katalogu, to możemy zamiast nazwy czy też ścieżki, użyć po prostu kropki. Kropka w powłoce bash oznacza aktualny katalog, tak więc jeśli chcemy skopiować całą zawartość lokalizacji, w jakiej się znajdujemy, możemy użyć właśnie kropki. Spróbujmy teraz sudo i jest ok. Analogicznie do polecenia CP kopiującego pliki i katalogi zadziała również polecenie MV, który owe pliki i katalogi przenosi, ale że jako działa bardzo podobnie do CP nie będziemy go teraz omawiać. Pamiętać musicie jedynie tylko o tym, że CP tworzy kopie, a MV przenosi zasoby z jednej lokalizacji do innej. Z puli prostych, banalnych i oczywistych poleceń do omówienia pozostało nam jeszcze jedno polecenie, a mianowicie te, które usuwa nam pliki i katalogi.
Tym poleceniem w Linuxie jest rm. Polecenie samo w sobie może nie jakieś spektakularne, ale przy okazji jego omawiania wprowadzimy sobie dodatkowe haki ułatwiające pracę. Zacznijmy od składni. Jest banalna. Wystarczy wpisać rm, potem podać nazwę pliku i gotowe. Oczywiście pod warunkiem, że poda się poprawną nazwę. Teraz jest okej. Nieco trudniej jest z katalogami, bo te trzeba usuwać z parametrem r, ale ten już znacie. r oznacza rekursywność, czyli wykonywanie polecenia na każdym poziomie struktury katalogów, dlatego trzeba go używać, kiedy pracujemy z katalogami. Dzięki temu parametrowi możemy oczywiście usuwać nie tylko całe zbiory katalogów, ale też pojedyncze pliki czy katalogi znajdujące się głęboko w strukturze. Ta gwiazdka oznacza, że wszystko co znajduje się w katalogu 2018 zostanie usunięte. A przy okazji gwiazdki.
Ta ma bardzo fajną funkcję w systemie, ponieważ oprócz tego, że oznacza wszystko, działa również jak każdy dowolny znak. Zobaczcie. Załóżmy, że chcemy usunąć z katalogu dokumenty folder zawierający w swojej nazwie liczbę 9. Ja oczywiście teraz wiem, że z 9 jest tylko jeden katalog i łatwo mogę go usunąć, ale w dużych zbiorach takie oczywiste to już nie musi być. Zobaczcie, jeszcze raz polecenie RM, tym razem po gwiazdce, wpisze w kwadratowym nawiasie 9. Jak myślicie, co się stało? No stało się to, że zniknął nam katalog z 2019 roku, a ten z 2020 pozostał. A czemu? Ano temu. . . że tylko w nazwie 2019 jest 9 i tylko dla tego katalogu zostało wykonane polecenie.
Oczywiście w takim kwadratowym nawiasie zapisać sobie możemy dowolny inny ciąg znaków i wówczas polecenie zostanie wykonane tylko dla tych plików i katalogów, które w swoich nazwach mają przynajmniej jeden znak wpisany w kwadratowym nawiasie. Pamiętajcie o tym, że w Linuxach wielkość liter ma znaczenie. Plik o takiej nazwie to nie to samo co plik o takiej nazwie. To również musicie brać pod uwagę podając argumenty w kwadratowym nawiasie. Oczywiście da się również odwrócić sytuację. Jeśli przed dziewiątką damy sobie ptaszka, wówczas to zostaną usunięte wszystkie podkatalogi z wyłączeniem tych, w których nazwach pojawia się liczba 9. Odtwórzmy sobie strukturę katalogów, aby to zobaczyć. OK. No i wpisujemy polecenie. Teraz usunęliśmy wszystko, poza katalogiem z 9 w nazwie. Takie polecenie możemy sobie oczywiście komplikować dowolnie. Przywróćmy sobie jeszcze raz strukturę, aby zobaczyć wynik działania innej kombinacji.
Ok, struktura odzyskana, no to teraz wydajemy takie polecenie. To polecenie zadziała tak, że usunie wszystkie katalogi, które mają w swojej nazwie literę K, ale tylko z tych katalogów, które mają w swojej nazwie 8 i 9. Sprawdzamy. Tutaj jeszcze gwiazdkę zjadłem. Ok, teraz jest dobrze. Jak widać zagrało jak miało zagrać. To znaczy system usunął tylko katalogi o nazwie faktury znajdujące się w katalogu 2018 oraz 2019. W 2020 wszystko pozostało bez zmian. Kropki, gwiazdki, znaki zapytania czy też kwadratowe nawiasy stosować możemy w większości poleceń związanych z plikami i katalogami. Szczególnie przydatne jest to przy pisaniu skryptów.
Zanim jednak nauczymy się pisania skryptów, to przejdźmy do dalszej części odcinka, w której na warsztat weźmiemy kolejną grupę poleceń związanych z plikami, poleceń dużo ciekawszych niż te podstawowe, a o których istnieniu pewnie większość z Was nie zdawała sobie nawet sprawy. Zaczniemy od bardzo ciekawego i moim zdaniem bardzo przydatnego narzędzia jakim jest DIV. DIV to po prostu porównywarka zawartości plików oraz katalogów. Myślę, że co do użyteczności takiego narzędzia nikogo nie trzeba przekonywać. Wystarczy wyobrazić sobie sytuację, kiedy mamy dwa podobnie wyglądające pliki z jedną, może kilkoma drobnymi różnicami, które musimy wychwycić. Bez narzędzia porównującego dane zawarte w plikach niejednokrotnie zadanie takie może okazać się bardzo czasochłonne. Mnie osobiście bardzo ostatnio przydał się ten softcik, bo musiałem przekopiować wiele tysięcy plików z jednej lokalizacji do drugiej, a potem zweryfikować, czy aby na pewno wszystko się przekopiowało.
i wówczas div okazał się zbawienny, no bo okazało się, że kilka istotnych plików nie zostało przekopiowanych. Działanie programu pokażemy sobie może na nieco mniejszym plikowo przykładzie, plików nie będzie kilka tysięcy, ale to nie ma znaczenia. Zacznijmy od tego, że wywalimy sobie całą zawartość katalogu domowego. OK, a teraz odtworzymy sobie znaną już strukturę katalogów. Jest. No to teraz do tych katalogów dodajmy sobie kilka pustych plików. Pliki oczywiście nie muszą mieć rozszerzeń, ale jakoś z przyzwyczajenia tworząc puste pliki dodaję rozszerzenie tekstowe. Tak mi zostało chyba z Windowsa. Ok, pliki gotowe. Teraz zróbmy sobie kopię całego katalogu dokumenty. No i jeszcze teraz utwórzmy sobie dwa nowe pliki, tak aby zawartość całych struktur nam się nieco różniła. Mamy dodatkowe pliki, no to sprawdźmy jak spisze nam się softcik.
Musimy tutaj dopisać jeszcze parametr R, aby program przeldział przez wszystkie podkatalogi. Jeszcze nazwy katalogów do porównania. No i jest. Jak widzicie, program pięknie wylistował nam pliki, które znajdują się tylko w jednym katalogu. Podobnie oczywiście sprawa ma się przy plikach, ale z racji czasu opcje związane z porównywaniem plików pozostawię Wam do przetestowania samodzielnego. Teraz natomiast pokażę Wam bardzo proste w działaniu, ale jakże pożyteczne narzędzie jakim jest File. File to po prostu program, który pozwala na odczytanie informacji o wskazanych plikach. Kiedy plik posiada rozszerzenie, no to łatwo jesteśmy w stanie ogarnąć co to za plik i jak go odczytać.
Ale co jeśli takiego rozszerzenia plik nie posiada, albo chcemy dowiedzieć się o tym pliku nieco więcej? No i tutaj z pomocą przychodzi nam właśnie File, który pozwala nam na odczytanie metadanych, czyli dodatkowych informacji o plikach, których na pierwszy rzut oka nie widać. Zobaczmy jak to działa. Mamy tutaj trzy pliki. Poza ich nazwami i rozmiarem niewiele wiemy o tych plikach. Nie wiemy co to za pliki, jakiego typu, no i co zawierają. Dzięki file będziemy w stanie się tego dowiedzieć. Na początek pierwszy plik. Jak widać jest to plik audio. Prawdopodobnie jakaś mp3. Podane mamy tutaj nawet niektóre parametry dźwięku tego pliku. Teraz kolejny. Widzimy, że jest to 8-bitowy obraz PNG. Mamy podaną nawet jego rozdzielczość. Na koniec trzeci plik. Jak widzimy jest to plik pakietu Office.
Tyle o file. Bardzo przydatny program, ale my już lecimy dalej, aby omówić kolejne ciekawe narzędzie, jakim jest CAD. Ten programik charakteryzuje się kilkoma ciekawymi funkcjonalnościami. Po pierwsze, pozwala na wyświetlanie zawartości plików bez konieczności uruchamiania edytora. Podobną funkcję może spełniać polecenie getend, które poznaliśmy poprzednio, jednak zasada działania jest nieco inna. CAD jest moim zdaniem bardziej intuicyjny i elastyczny. Wyświetlanie zawartości pliku to tylko jedna z jego możliwości. CAD pozwala nam również tworzyć pliki. i zapisywać w nich dane. Wystarczy wpisać polecenie i przekierować znakiem większości strumień danych, czyli to, co zaraz zapiszemy, na dowolną nazwę pliku. Teraz możemy sobie dopisać jakiś dowolny tekst, a aby zamknąć edycję pliku, używamy kombinacji Ctrl-D. Jeszcze raz cut z nazwą pliku. No i jak widzicie, tekst, który wpisaliśmy, został do tego pliku zapisany.
Strumienie to bardzo często stosowana technika podczas pracy z systemem. Polega ona na przekierowaniu dowolnej informacji z wejścia lub wyjścia w inne miejsce. Wejściem może być np. znak wpisany z klawiatury, a wyjściem to, co dany program wyświetli na ekranie. Tym innym miejscem, do którego możemy dane przekopiować, może być np. jakiś plik. Tak jak w tym przypadku, może to być inny program, który potrzebuje konkretnych danych. lub też inne polecenie systemowe. Strumienie będą bardzo często pojawiać się przy administrowaniu systemem, my również podczas kursu będziemy ich używać. Jeśli do tego naszego pliku chcemy sobie coś jeszcze dopisać, no to ponownie użyjemy strumienia, tym razem znak większości musi zostać podwojony. Gdybyśmy tego podwojenia nie wykorzystali, to treść, którą dopisaliśmy tutaj, zastąpiłaby tę, która była poprzednio.
Pamiętajcie o tym, bo jeśli nie zwrócicie na to uwagi, to może się okazać, że utracicie poprzednio zapisane dane do plików, a bardzo często jest to zwyczajnie efekt bardzo niepożądany. Cat jest bardzo często stosowany razem z innymi poleceniami systemu, np. find czy grep. Oba jeszcze dzisiaj poznamy i zobaczycie jak Cat sprawdza się w kooperacji z tymi poleceniami. Zanim jednak do tych poleceń przejdziemy, to omówimy sobie jeszcze jedną, właściwie można powiedzieć zasadniczą funkcję narzędzia Cat, jaką jest łączenie pliku. Nazwa programu to skrót od angielskiego słowa concatenate oznaczającego łączyć, powiązać i to jest kluczowe zadanie tego programu. Utwórzmy sobie teraz dwa pliki z dowolnymi danymi. OK, mamy dwa pliki z zawartością, no to teraz połączymy je ze sobą. Możemy to połączenie wykonać można powiedzieć w locie, wówczas wystarczy polecenie z nazwami plików.
Jeśli są z rozszerzeniem to oczywiście trzeba je dopisać. Możemy również takie połączenie zapisać do nowego pliku. Do tego wykorzystamy sobie strumień i nadamy nową nazwę. Takie polecenie oznacza mniej więcej tyle, że dane z dwóch plików zostają zapisane w jednym, nowym pliku. Jak widzicie plik jest i nawet zawiera odpowiednie dane. Ok, CAD załatwiony, no to teraz kolejne ciekawe i fajne narzędzie, jakim jest wspomniany greb. Myślę, że nie ma na świecie admina pracującego na co dzień z linuchem, który nie używałby tego programu. Greb służy do odsiewania z całej zawartości plików treści, które nas interesują. Zobaczmy sobie taki przykład. To polecenie wyświetla nam informacje o procesorze. Dużo tego, a mnie interesuje tylko model. Za pomocą grepa mogę sobie taką informację z całego zbioru odfiltrować.
Wpisujemy polecenie, następnie szukane słowo i dalej ścieżkę do pliku. Jak widzicie, wynik uwzględnia szukaną frazę, a nie całą zawartość pliku. W przypadku wyszukiwania warto używać parametru i, który nie zwraca uwagi na wielkość liter, a jak już mówiłem kilkukrotnie, w Linuxach wielkość ma znaczenie. Jeśli chcemy oprócz modelu wyświetlić sobie powiedzmy jeszcze ilość rdzeni, no to też nie ma problemu. Możemy użyć więcej niż jednego argumentu wyszukiwania, a wówczas nasze polecenie będzie wyglądało tak. Backslashem oraz pionową kreską rozdzielamy po prostu warunki wyszukiwania. Inne zastosowanie grepa? No jest ich cała masa. Możemy na przykład sprawdzić czy w systemie jest użytkownik o podanej nazwie. Albo wyszukać w logach systemowych interesującego nas wyrażenia. Za pomocą grepa możemy również przeszukiwać całe katalogi, nie tylko pojedyncze pliki. Wystarczy do tego użyć parametru R.
Okej, no to jeszcze jedna sprawa na koniec tego wątku, a mianowicie łączenie poleceń. GREP jest świetnym przykładem programu, który można łączyć z innymi programami i komendami systemowymi, a dodatkowo dane, które wygenerowane zostały przez określone polecenie, zapisać można do pliku, jeśli potrzebujemy je np. archiwizować, czy też wykorzystywać w innych zadaniach. Zobaczmy to na takim przykładzie. Załóżmy, że chcemy zapisać ustawienia IP interfejsu ENP0S8 do pliku, ale tylko ustawienia tego interfejsu, a nie każdego jaki mamy w systemie. Do odczytu konfiguracji IP wykorzystać możemy oczywiście polecenie IPA. Wynik działania polecenia, czyli wyjście, bo to co mamy na ekranie to jest właśnie wyjście programu, będzie jednocześnie wejściem dla grepa, którego parametry zdefiniujemy sobie po pionowej kresce. Teraz zapiszmy sobie grep ENP0S8, no bo chcemy wyfiltrować tylko dane jednego konkretnego interfejsu. A teraz kolejna rura.
bo połączymy sobie to co już mamy z catem, który zapisze nam dane wygenerowane przez grepa do określonego pliku. Takim oto sposobem zapisaliśmy do pliku informację IP dla wybranego interfejsu. Całe to polecenie możemy sobie wytłumaczyć tak. Pokaż nam konfigurację IP, potem wynik przefiltruj przez odpowiednie argumenty funkcji grep, a wynik tego filtrowania zapisz do pliku. Spoko co? Tak to działa. Łączenie poleceń to również dość częsta praktyka, my również będziemy ją stosować. Lecimy dalej, bo jeszcze trochę pracy przed nami. Zajmiemy się teraz programem banalnym w założeniu, ale bardzo ciekawym w użytkowaniu i obszernym w możliwości. Programem tym jest FIND, czyli standardowa szukajka plików i wyrażeń w Linuxach.
Podstawowa składnia polecenia wygląda tak, że najpierw podajemy polecenie, żadna nowość, potem lokalizację, którą chcemy przeszukać, może to być cały dysk, może to być tylko jeden katalog, może to być dowolna inna lokalizacja. Ja wybiorę lokalizację bieżącą. Dalej podajemy parametry. Jeśli chcemy odnaleźć plik po nazwie, podajemy parametr name. Lepiej to jeszcze poprzedzić parametrem i, wówczas nie będzie wielkość liter brana pod uwagę. No a na koniec nazwa. Ja chcę odnaleźć wszystkie pliki, które mają w nazwie słowo faktura. Tak więc piszę fuck z gwiazdką. No i mamy wynik. Wszystko co zawiera w swojej nazwie frazę fuck zostało znalezione. Możemy to sobie również ładnie wylistować stosując parametr ls na końcu polecenia. Szukać możemy oczywiście również po typach plików, po ich wielkości, po uprawnieniach, po właścicielu, po zawartości itd. Naprawdę opcji jest ogrom.
Wszystkiego testować nie będziemy, ale zobaczymy bardzo ciekawą funkcję Finda, która pozwala wykonać praktycznie dowolne działanie na znalezionych zbiorach. A jakie to działanie? No różne, słuchajcie. Od kasowania plików, poprzez ich kopiowanie, zmianę uprawnień, zmianę właściciela, po wykonanie dalszej na nich obróbki za pomocą grepa. Opcji jest naprawdę sporo. My teraz przetestujemy możliwość jednoczesnego odnajdywania. i kopiowania wyszukiwanych plików do nowej lokalizacji. Po naszych działaniach pliki powinny zostać skopiowane do nowej lokalizacji, którą sobie teraz utworzymy. Jeszcze raz wyświetlamy sobie polecenie i teraz na koniec dodajemy parametr exec. Ten exec oznacza mniej więcej tyle. To, co znajdzie find, ma zostać przekierowane do nowej funkcji. Teraz tą nową funkcję sobie zapiszemy, a naszą funkcją będzie kopiowanie. Wpisujemy zatem cp Dalej klamrowy nawias, którego zadaniem jest można powiedzieć złapanie tego, co find znalazł.
Na koniec jeszcze nazwa katalogu oraz backslash ze średnikiem. Tej kombinacji wymaga od nas exec i to musicie zapamiętać. Na końcu zawsze musi się to pojawić. Wykonujemy polecenie. Pomimo tych komunikatów, które informują nas np. o tym, że pominięto katalogi, Widzimy pliki, które zostały skopiowane. Zabawy słuchajcie z Findem jest co niemiara, ale uwaga, to polecenie jest dość grymaśne jeśli chodzi o składnie i użycie, dlatego należy uważać i dobrze sobie różne opcje przetestować przed wdrożeniem na produkcyjnym serwerze. Tyle jeśli chodzi o Finda, my musimy lecieć dalej. Teraz zajmiemy się narzędziami umożliwiającymi zarządzanie archiwami danych oraz ich kompresją. Temat również bardzo często spotykany przy codziennej robocie z systemem, z pewnością garść informacji na ten temat Wam się przyda.
Czym jest archiwum? Archiwum to paczka, do której wrzuciliśmy zbiór katalogów i plików, tak aby łatwiej było nam je przechować lub też przenieść, a także zabezpieczyć. Znacie paczki 7-zip czy innego darmowego WinRara? To są właśnie archiwa, do których zapakowano pliki. Archiwizację stosuje się w celu łatwiejszego przechowywania i porządkowania danych. Archiwa są również bardzo często bazą kopii zapasowych, danych firmowych czy instytucjonalnych, a także za ich pomocą dystrybuowane jest czasami oprogramowanie. Jeśli chcemy na przykład zainstalować na linuchu WordPressa, to zrobimy to właśnie za pomocą archiwum. Nie wiem czy pamiętacie szczegóły z poprzedniego odcinka, tam również pojawił się temat archiwizacji. Podczas usuwania usera z systemu można jednocześnie stworzyć kopię jego danych zapisanych w katalogu domowym. Wówczas tworzy nam się właśnie archiwum, czyli jedna duża paczka plików, która dla systemu widoczna jest po prostu jako pojedynczy obiekt.
W Linuxach występuje kilka narzędzi, programów do zarządzania archiwami. Najpopularniejsze z nich to TAR oraz ZIP. Dzisiaj omówimy sobie narzędzie TAR wraz z jego podstawowymi opcjami, ponieważ jest to domyślny program do zarządzania archiwami instalowany na Linuxach. Zaczniemy od prostego zadania, a mianowicie wykonamy sobie archiwum z naszego katalogu z dokumentami. Lecimy. Polecenie TAR, potem parametry. Podstawowe to C oraz F. C tworzy nam archiwum, a F nadaje mu nazwę. Potem podajemy tą nazwę z rozszerzeniem. To ważne, zwróćcie uwagę, aby to rozszerzenie się pojawiło. No a na koniec nazwa katalogu, który chcemy zarchiwizować. Tyle. Jak widzicie, archiwum zrobione. To jest właśnie ten plik. Zobaczmy, co się w nim znajduje. Tym razem użyjemy parametru T oraz F.
T daje nam możliwość podglądu w zawartość archiwum, a F występuje zawsze, kiedy korzystamy z nazwy. A tak wygląda zawartość naszego archiwum. Oczywiście da się tą zawartość podejrzeć już na etapie tworzenia archiwum. Wystarczy wówczas użyć parametru V, który w wielu poleceniach linuksowych wyświetla po prostu komunikaty informujące nam o tym, co zrobiło dane polecenie. Kiedy V użyjemy podczas tworzenia archiwum, system pokaże nam, co do tego archiwum wrzuciliśmy. Pamiętajcie, że tutaj kolejność parametrów jest kluczowa. Zaczynamy od C, które tworzy archiwum, następnie musi być V, a na koniec zawsze jest F. Dodanie kolejnego pliku czy katalogu do archiwum? Prosta sprawa. Utwórzmy sobie najpierw jakiś dodatkowy plik w katalogu dokumenty. OK. A teraz dodajmy go do naszego archiwum. tar, parametry t oraz f, nazwa naszego archiwum, no i ścieżka do nowego pliku.
Tarsam w sobie nie obsługuje kompresji. Można jednak korzystając z tego programu i odpowiednich parametrów wymusić skompresowanie archiwum za pomocą jednego z kilku rodzajów oddzielnego oprogramowania do kompresji. Takim programem może być na przykład GZIP. Zobaczmy, czy będzie jakaś różnica w wielkości archiwum, jeśli dokonamy jego kompresji. Ponownie polecenie. Tym razem dodajmy sobie jeszcze parametr Z, a także zmieńmy nazwę naszego archiwum, co by nam się nie powtarzała. Jeszcze raz dodajemy rozszerzenie GZIP. No i jest zrobione. Teraz ls i widzimy, że wielkość archiwum jest różna, tak że kompresja nam zadziałała. Jeśli z jakichś powodów nie chcecie kompresować archiwum na etapie jego tworzenia lub też otrzymaliście paczkę, którą chcecie skompresować, to łatwo to zrobicie wydając polecenie gzip z nazwą archiwum, które chcecie skompresować. Wówczas stworzony zostaje plik z rozszerzeniem tar. gz, a samo archiwum z rozszerzeniem tar znika.
Dekompresję, czyli działanie odwrotne, wykonać możemy stosując polecenie gunzip wraz z nazwą skompresowanego archiwum. No dobra, umiemy już archiwa tworzyć i je kompresować, to zobaczmy teraz, jak rozpakować archiwum. Wywalę najpierw katalog dokumenty, co by zobaczyć, czy rozpakowanie nam zadziała. Okej, no to lecimy. Ponownie polecenie, tym razem z parametrami x oraz f, no a na koniec pełna nazwa archiwum ze wszystkimi rozszerzeniami. Okej. Jak widzicie wszystko jest. Domyślnie tar rozpakowuje archiwa do katalogu, w którym archiwum było zapisane. Jeśli chcemy tą lokalizację zmienić, to oczywiście możemy to zrobić. Wówczas musimy użyć parametru duże C, za pomocą którego możemy określić nową lokalizację, pod warunkiem oczywiście, że taka istnieje. Jeszcze sudo, bo folder docelowy znajduje się w katalogu głównym. No i jak widać, wszystko jest.
Archiwa załatwione, myślę, że tutaj nie ma większej filozofii i każdy z Was spokojnie sobie poradzi z tematem, a my tymczasem przejdźmy do ostatniego wątku dzisiejszego epizodu, a mianowicie do dowiązań zwanych linkami. Sprawa dość prosta, jeśli chodzi o samą mechanikę, jak i praktyczne wykorzystanie. Czym są linki? No to generalnie każdy z Was powinien już wiedzieć. W ogólnym pojęciu link wskazuje na jakiś inny obiekt, plik lub jego zawartość. W Linuxach występują dwa rodzaje dowiązań, takich linków. Twarde oraz symboliczne. Dowiązanie twarde tworzy nam nową nazwę dla zasobu, a sam link nie odwołuje się do pliku samego w sobie, ale do jego zawartości. Brzmi tajemniczo, natomiast jest proste w działaniu. Utwórzmy sobie katem nowy plik z zawartością.
OK, teraz utwórzmy sobie katalog o dowolnej nazwie, a następnie zróbmy sobie link do zawartości pliku, którą zapisaliśmy, a ten link zapiszemy w nowym katalogu w nowej lokalizacji. Do utworzenia linku użyjemy polecenie ln, A dalej zapiszemy nazwę pliku, a po niej ścieżkę zapisu dowiązania z nową nazwą. Sorry, tutaj ma być bez slasha. Jako, że utworzyliśmy twarde dowiązanie, to ten plik zawiera te same dane co jego dawca. Co więcej, kiedy usuniemy ten plik źródłowy, to ten nowy nam pozostanie. Dlaczego? No dlatego, że dowiązanie dotyczy zawartości danych w pliku, a nie samego pliku. Jeśli plik, powiedzmy, źródłowy zostanie usunięty, no to ten nowy pozostanie. Jaki wniosek? No żeby usunąć te dane, musimy usunąć wszystkie pliki, które je zawierają, łącznie z plikami dowiązanymi. W przypadku drugiego rodzaju dowiązań, zwanych symbolicznymi, sprawa jest dużo prostsza.
Te dowiązania w swoim działaniu są bardzo podobne do Windowsowych skrótów. One wskazują zwyczajnie na jakiś plik. Skasowanie pliku źródłowego spowoduje, że link, dowiązanie po prostu przestanie działać prawidłowo. Podobnie zresztą jak skróty w Windowsie. Sprawdźmy. Tworzymy kolejny plik i ponownie robimy dowiązanie, tym razem z parametrem s oznaczającym dowiązanie miękkie zwane symbolicznym. Ups, coś tu nie pykło. A, tutaj nazwa katalogu się nie zgadza. Hmm, co teraz? Slesza tutaj chce czy co? No nie, to też nie to. Ach, dobra, włącz myślenie. Tu ma być ln, a nie ls. Okej, teraz działa. Kiedy wyświetlimy sobie zawartość tego katalogu, no to zobaczymy, na jaki plik wskazuje nam link. Może z l będzie ładniej. Dokładnie.
Skasowanie pliku źródłowego, jak już mówiłem, wiązać się będzie oczywiście z tym, że taki link przestanie nam działać. Stosowanie do wiązań jest również powszechną praktyką w systemach linuksowych. Ja ostatnio korzystałem z tego rozwiązania konfigurując serwer webowy Apache. włączanie poszczególnych modułów może odbywać się właśnie za pomocą dowiązań. Dowiązania miały już kończyć nasze dzisiejsze spotkanie, ale jeszcze jedna kwestia mi się przypomniała. Jeśli często używacie tych samych długich poleceń bez zmiany ich parametrów, to możecie do takiego całego długiego polecenia zastosować sobie jednoczłonową nazwę skrótową, czyli tak zwany alias. Wielu adminów odchodzi od aliasów na rzecz skryptów, które są zdecydowanie bardziej elastyczne i wydajne, ale wydaje mi się, że dla początkujących może to być spore ułatwienie. Aby mocno nie przedłużać, przygotujemy sobie alias dla polecenia aktualizującego listę pakietów w repozytoriach.
Zaczynamy od polecenia, potem nazwa, ja dam sobie tutaj update, a po znaku równości i w cudzysłowie podajemy polecenie. Zamykamy cudzysłów i enter. Sprawdzamy czy to nam działa, wykonując po prostu nazwę alias. Jak widzicie działa, update się robi. Listę dostępnych aliasów znajdziecie wykonując po prostu polecenie alias. No okej, dobrnęliśmy do końca kolejnego, długiego odcinka. Dużo poleceń dzisiaj ogarnęliśmy, wiele się dowiedzieliśmy i jestem przekonany, że z pożytkiem wykorzystamy to w kolejnych odcinkach. Oczywiście polecenia, które dzisiaj przerobiliśmy, to nie wszystkie, jakie możemy znaleźć w arsenale linuksowym, ale serio, to jest ich tak wiele, że trudno byłoby je w kilku odcinkach nawet przerobić wszystkie. Tak czy inaczej, słuchajcie, mamy już sporą bazę do dalszej pracy i myślę, że w kolejnym odcinku zajmiemy się już zagadnieniami stricte administracyjnymi.
Może zrobimy sobie serwery plikowe wraz z LVM, a może co innego. Jeszcze zobaczymy. Czekajcie cierpliwie. Wszystkie oczywiście polecenia dzisiaj wykorzystane znajdziecie na stronie Passii, chociaż nie wiem, czy uda mi się je wrzucić zaraz po premierze. Tak czy inaczej znajdą się one na stronie, być może nieco później. Z mojej strony na dzisiaj to wszystko. Serdecznie dziękuję za uwagę i polecam kolejne nasze produkcje. Pozdrawiam. .
By visiting or using our website, you agree that our website or the websites of our partners may use cookies to store information for the purpose of delivering better, faster, and more secure services, as well as for marketing purposes.