9 niezbędnych potoków poleceń, które upraszczają codzienny Linux

9 niezbędnych potoków poleceń, które upraszczają codzienny Linux

Potoki w Linuksie umożliwiają łączenie poleceń, co znacznie zwiększa efektywność pracy. Oto praktyczne przykłady ich zastosowania w codziennej obsłudze systemu.

Funkcja potoku jest jedną z sił napędowych filozofii Linuksa, pojedynczym znakiem, który zmienia wszystko w sposobie, w jaki pracujesz. Łącząc wyjście jednego polecenia z wejściem drugiego, możesz połączyć małe programy w jeden, tworząc narzędzie, które jest znacznie większe niż suma jego części.

Jeśli z trudem dostrzegasz wartość potoków lub po prostu chcesz lepiej zrozumieć ich praktyczne zastosowanie, nie ma lepszego miejsca na rozpoczęcie niż te powszechne, skuteczne przykłady.

grep | less

Filtruj dane i przeglądaj wyniki

Typowe polecenie grep może zwrócić wiele wyników, zwłaszcza jeśli używasz próby i błędu, aby udoskonalić wyrażenie regularne. Polecenie takie jak grep '[Qq]' /usr/share/dict/words wygeneruje więcej niż jedną stronę wyników:

Aby zobaczyć więcej niż tylko ostatnią stronę wyników, musisz użyć paginatora. Polecenie grep nie obsługuje go bezpośrednio, ale możesz przekierować jakiekolwiek wyjście do paginatora i przeglądać je strona po stronie:

grep '[Qq]' /usr/share/dict/words | less 

tail | grep

Polecenie tail jest użyteczne wszędzie tam, gdzie chcesz zbadać ostatnie linie pliku, najczęściej pliku dziennika. Opcja -f zapewnia na żywo podgląd pliku (lub standardowego wejścia), kontynuując drukowanie linii dodawanych do pliku. Jest doskonałe do monitorowania plików dziennika, takich jak dziennik dostępu apache:

Prawdopodobnie będziesz chciał filtrować takie linie dziennika, szukając specyficznych danych, które pasują do adresów URL, konkretnych wiadomości, kodów odpowiedzi itp. Narzędzie grep idealnie się do tego nadaje i doskonale współpracuje z tail w potoku, takim jak tail -f plik | grep wzór.

Możesz zapomnieć o kolejności tych poleceń i oczekiwać, że będą działać odwrotnie. Jednak przekazywanie grep do tail -f spowoduje natychmiastowe zakończenie potoku, ponieważ tail ignoruje -f, gdy wejściem jest potok.

history | grep

Szybki dostęp do poleceń, które wykonałeś wcześniej

Polecenie history jest niezwykle przydatne, zapewniając dostęp do poleceń, które wcześniej wykonałeś. Jednak historia zawiera wiele szczegółów; domyślnie w bashu to ostatnie 500 poleceń. Może być ich nawet więcej, zwłaszcza jeśli skonfigurowałeś nieograniczoną historię.

To kolejna doskonała okazja dla grep, by filtrować jedynie linie, którymi naprawdę się interesujesz:

history | grep ls 

sort | uniq

Proste podsumowanie informacji z ustrukturyzowanych danych

Filtry sort i uniq są tak przydatne, gdy są połączone z innymi poleceniami, że będziesz je widział w potokach raz po raz. uniq to skrót od "unikalny", a oba polecenia robią dokładnie to, czego się spodziewasz, na podstawie ich nazw.

Oto przykład potoku, który pokazuje, które adresy IP odwiedziły stronę internetową i ile razy każdy z nich wysłał żądanie:

</var/log/apache2/access_log cut -f1 -d' ' | sort | uniq -c 

Taki potok składa się z trzech poleceń, z których pierwsze — cut — wyodrębnia pole z adresem IP z standardowego dziennika dostępu Apache. sort uporządkuje wszystkie linie wejściowe, które są do niego przesyłane, podczas gdy uniq usuwa duplikaty i z opcją -c zlicza ich całkowitą liczbę. Uzyskasz piękne podsumowanie:

df | tee

Uzyskaj raporty o przestrzeni dyskowej na ekranie i w pliku

Polecenie tee zostało stworzone dla potoku; jego podstawowa operacja polega na skopiowaniu swojego standardowego wejścia do standardowego wyjścia. Może to wydawać się bezużyteczne, z wyjątkiem jednej dodatkowej funkcji, którą zapewnia: zapisywania tego samego wejścia do jednego lub więcej plików.

Zwykle, aby zapisać wyjście polecenia, możesz użyć przekierowania:

echo "Witaj świecie" > myfile.txt 

Jednak przekierowanie tego wyjścia uniemożliwia jego przeglądanie na ekranie lub przesyłanie gdzie indziej:

Korzystając z polecenia tee, możesz zapisać wyjście do pliku, ale nadal mieć je w potoku, do dalszego przetwarzania lub wyświetlania na ekranie:

echo "Witaj świecie" | tee myfile.txt 

Możesz nawet podać wiele argumentów do tee, w przypadku, gdy chcesz zapisać wyjście w więcej niż jednym pliku jednocześnie.

tee to doskonały wybór, jeśli kiedykolwiek chcesz sprawdzić wyjście polecenia, ale jednocześnie zachować jego zapis.

raport dotyczący użycia dysku:

df -h | tee diskusage.txt 

Przekierowanie wyjścia do tee oznacza, że wynik będzie widoczny na ekranie, a jednocześnie zostanie zapisany na stałe w pliku.

echo | xargs

Kopiuj plik do wielu katalogów

Komenda xargs jest trochę jak tee; to "meta komenda", która zmienia sposób działania samej linii poleceń. xargs pozwala wstrzyknąć swój input jako argumenty innej komendy, co często wykorzystuje się w bardziej złożonych potokach.

Domyślnie, xargs przekształca każdą wartość oddzieloną spacją w argument, dodając je do komendy, którą mu przekażesz. Możesz również użyć opcji -n, aby wywołać komendę więcej niż raz, przekazując fragment argumentów za każdym razem, jak w tym przykładzie:

echo "dir1 dir2" | xargs -n 1 cp -v myfile.md 

Komenda cp nie skopiuje pliku do wielu katalogów, więc ten potok instruuje xargs, aby dostarczał po jednym argumencie na raz, rozszerzając do:

cp -v myfile.md dir1 cp -v myfile.md dir2 

curl | jq

Przetwarzaj dane pobrane z web API

Jeśli kiedykolwiek używałeś curl do dostępu do web API z linii poleceń, prawdopodobnie spotkałeś się z długą odpowiedzią zawierającą JSON, który musisz dalej przetworzyć:

Komenda curl świetnie radzi sobie z różnymi żądaniami web, ale dalsze przetwarzanie wymaga innych komend, jak w tym przypadku, jq, przetwornika JSON w linii poleceń. Używając jq, możesz pisać filtry, aby przekształcać dane JSON w bardziej czytelne lub odpowiednie formy. Na przykład, najprostsza rzecz, jaką możesz zrobić, to użyć operatora identyfikacji (.) do skopiowania inputu, ale jednocześnie go walidować i formatować:

curl -s https://catfact.ninja/fact | jq '.' 

Możesz pisać wszelkiego rodzaju filtry, aby dostosować dane w dowolny sposób. Przykład powyżej zwraca pojedynczy obiekt z właściwościami fact i length, które możesz wyodrębnić za pomocą prostego filtru:

curl -s https://catfact.ninja/fact | jq -r '.fact' 

du -sh * | sort -h

Znajdź swoje największe pliki i katalogi

Program du raportuje całkowity rozmiar plików i katalogów, które mu przekażesz:

To świetne, ale prawdopodobnie szukasz plików zajmujących najwięcej miejsca na dysku. Niestety, du nie oferuje wbudowanego sposobu sortowania swojego wyjścia. Na szczęście istnieje dobra, stara komenda sort.

sort to komenda filtrująca, która porządkuje swoje wejście i wypisuje jako wyjście. Możesz jej użyć do sortowania standardowego wyjścia du:

du -s * | sort 

To w porządku, ale wyjście jest w blokach, co nie jest najbardziej czytelne. Aby zrobić to samo, z bardziej czytelnymi rozmiarami, użyj opcji -h dla obu komend:

du -sh * | sort -h 

Nawet jeśli wyjście nie sortuje się naturalnie, sort jest wystarczająco sprytny, aby rozpoznać format i sortować kilobajty przed megabajtami itd.

date | md5sum

Najszybszy sposób na wygenerowanie porządnego hasła

Sięgam po tę komendę cały czas przy generowaniu haseł; jest szybka, efektywna i łatwa do zapamiętania. md5sum zhashuje swoje wejście używając algorytmu MD5 i wydrukuje wynik:

Kiedy potrzebuję losowego zestawu znaków szesnastkowych, to jest mój wybór. Możesz jej użyć do różnych celów, w tym do generowania losowych kolorów CSS, ale jest również dość wygodna do generowania haseł.

To może nie być najbezpieczniejszy sposób na wybór hasła. Proszę skonsultować się z poradami dotyczącymi bezpieczeństwa przed wybraniem hasła, szczególnie do zastosowań wysokiego ryzyka!

Z praktyką, powszechne potoki staną się drugą naturą

Jeśli jest jakiś potok, którego wcześniej nie używałeś, może zająć trochę czasu, aby się z nim zapoznać. Praktykuj wszystkie, które wydają się użyteczne, a po krótkim czasie zaczniesz tak często używać grep czy sort, że będziesz się zastanawiać, jak mogłeś wcześniej bez nich żyć.

Jeśli ciekawią Cię artykuły podobne do 9 niezbędnych potoków poleceń, które upraszczają codzienny Linux, zajrzyj do kategorii Linux i odkryj jeszcze więcej interesujących treści.

Indeks
  1. grep | less
    1. Filtruj dane i przeglądaj wyniki
  2. tail | grep
  3. history | grep
    1. Szybki dostęp do poleceń, które wykonałeś wcześniej
  4. sort | uniq
    1. Proste podsumowanie informacji z ustrukturyzowanych danych
  5. df | tee
    1. Uzyskaj raporty o przestrzeni dyskowej na ekranie i w pliku
  6. echo | xargs
    1. Kopiuj plik do wielu katalogów
  7. curl | jq
    1. Przetwarzaj dane pobrane z web API
  8. du -sh * | sort -h
    1. Znajdź swoje największe pliki i katalogi
  9. date | md5sum
    1. Najszybszy sposób na wygenerowanie porządnego hasła
    2. Z praktyką, powszechne potoki staną się drugą naturą

Możesz być zainteresowany

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone *

Go up