Krótki przewodnik: wyszukiwanie w terminalu Linux w celu szybkiego i efektywnego uzyskania wyników

Krótki przewodnik: wyszukiwanie w terminalu Linux w celu szybkiego i efektywnego uzyskania wyników

Terminal Linux doskonale sprawdza się w wykonywaniu różnych zadań, w szczególności w wyszukiwaniu w terminalu, które często jest szybsze niż nawigacja za pomocą graficznego interfejsu użytkownika. Wykorzystanie kilku wydajnych poleceń Linuxa pozwala użytkownikom szybko zlokalizować pliki i treści, eliminując konieczność przeszukiwania folderów w interfejsie graficznym. Ten przewodnik zgłębia skuteczne techniki wyszukiwania w terminalu Linux, zapewniając łatwe znalezienie dokładnie tego, czego potrzebujesz.

Wykorzystanie grep do wyszukiwania tekstu w plikach

Jeśli chodzi o wyszukiwanie tekstu w plikach, to greppolecenie jest nieocenione. Skrót od Global Regular Expression Print (Global Regular Expression Print) greppozwala na wykrywanie określonych wzorców w tekście i jest preinstalowane w większości dystrybucji Linuksa i macOS.

Jego składnia jest prosta; wystarczy sparować grepz żądanym ciągiem wyszukiwania. Na przykład, aby znaleźć wszystkie wiersze zawierające słowo „błąd” w pliku o nazwie fileserver.log, możesz użyć następującego polecenia:

grep "error" fileserver.log

To polecenie zwraca każdy wiersz zawierający słowo „błąd”.Aby wykonać wyszukiwanie bez uwzględniania wielkości liter, które uwzględnia warianty takie jak „błąd” lub „błąd”, dodaj opcję -iw następujący sposób:

grep -i "error" fileserver.log

Jeśli nie masz pewności co do lokalizacji pliku i musisz przeszukać cały katalog, skorzystaj z -ropcji (rekurencyjnej):

grep -r "TODO"

Wyszukiwanie konkretnego słowa za pomocą Grep

To polecenie przeszuka wszystkie pliki w bieżącym katalogu i wszystkich podkatalogach w poszukiwaniu terminu „TODO”.

Wręcz przeciwnie, jeśli chcesz wyświetlić wszystko poza wyszukiwanym terminem, użyj -vflagi. Jest to szczególnie przydatne do filtrowania nieistotnych informacji z plików dziennika:

grep -v "DEBUG" app.log

To polecenie wyświetli wszystkie wiersze, app.logktóre nie są komunikatami debugowania.

Ulepszanie polecenia grep za pomocą dodatkowych poleceń

grepMożna je również łączyć z innymi poleceniami, aby usprawnić przepływ pracy. Na przykład, można przekierować dane wyjściowe z jednego polecenia bezpośrednio do programu grep. Załóżmy, że chcesz zidentyfikować wszystkie aktualnie uruchomione procesy SSH; możesz to zrobić, wyświetlając listę wszystkich procesów i filtrując dane wyjściowe:

ps aux | grep "ssh"

Listowanie procesów i filtrowanie za pomocą polecenia Grep

Chociaż ps auxpolecenie wyświetla listę licznych procesów, grepskutecznie zawęża dane wyjściowe do odpowiednich wpisów.

grepObsługuje również wyrażenia regularne do zaawansowanego wyszukiwania, umożliwiając wyszukiwanie złożonych wzorców, takich jak wiersze rozpoczynające się cyfrą lub określone formaty wiadomości e-mail. Na przykład, aby znaleźć wiersze rozpoczynające się cyfrą, wykonaj:

grep "^[0-9]" file.txt

Porównanie grep i ripgrep: kluczowe różnice

Chociaż grepjest to potężne narzędzie do wyszukiwania tekstu, istnieje nowsza i szybsza alternatywa o nazwie ripgrep( rg. Narzędzie to działa podobnie, grepale oferuje lepszą wydajność i przyjazne dla użytkownika domyślne ustawienia.

Główną różnicą jest szybkość wykonywania. Chociaż greppliki są odczytywane sekwencyjnie, ripgrepwykorzystuje zaawansowane optymalizacje, w tym wielowątkowość i możliwość pomijania niepotrzebnych plików, co znacznie zwiększa szybkość. W przypadku dużych katalogów wyszukiwanie, które może trwać grep30 sekund, można często skrócić do mniej niż jednej sekundy dzięki ripgrepprogramowi, który został zaprojektowany w języku Rust dla zwiększenia wydajności.

W przeciwieństwie do grep, ripgrepwymaga ręcznej instalacji za pośrednictwem menedżera pakietów. Na przykład w Ubuntu/Debianie można go zainstalować za pomocą:

sudo apt install ripgrep

Po zainstalowaniu możesz go używać niemal tak samo, jak grep:

rg "TODO"

Wyszukiwanie i znajdowanie konkretnego słowa za pomocą Ripgrep

To polecenie wyszukuje termin „TODO” we wszystkich plikach w bieżącym katalogu i jego podfolderach, automatycznie wykluczając ukryte pliki i katalogi git, a także podświetlając numery wierszy.

Podsumowując, oba narzędzia służą temu samemu celowi, ale ripgrepwyróżniają się szybkością i użytecznością, szczególnie w przypadku obsługi dużych baz kodu.grepPozostają jednak niezawodną opcją w przypadku ograniczonego dostępu do dodatkowego oprogramowania.

Korzystanie z funkcji find do lokalizowania plików i katalogów

Chociaż greppolecenie to pozwala na przeszukiwanie plików, findpomaga również w lokalizowaniu plików i katalogów na podstawie różnych atrybutów. Jest to szczególnie przydatne, gdy znasz nazwę lub typ pliku, ale nie masz pewności co do jego lokalizacji.

Składnia findjest następująca:

find /path -name "filename"

Na przykład, jeśli szukasz pliku konfiguracyjnego o nazwie config.json, możesz uruchomić:

find /etc -name "config.json"

Domyślnie -nameopcja uwzględnia wielkość liter. Aby wykonać wyszukiwanie bez uwzględniania wielkości liter, użyj -iname:

find.-iname "readme.md"

Kropka (.) oznacza, że ​​wyszukiwanie rozpoczyna się w bieżącym katalogu. Oprócz wyszukiwania po nazwie, findmożliwe jest filtrowanie wyników według czasu modyfikacji, co pozwala na znalezienie ostatnio zmodyfikowanych plików, co jest przydatne przy zarządzaniu plikami dziennika lub kopiami zapasowymi. Na przykład, aby znaleźć pliki dziennika zmodyfikowane w ciągu ostatnich trzech dni, wykonaj polecenie:

find /var/log -name "*.log" -mtime -3

Użycie gwiazdki jako symbolu wieloznacznego pozwala na dopasowanie dowolnego ciągu znaków, co ułatwia identyfikację dużych plików mogących zajmować miejsce na dysku.

Interaktywne wyszukiwanie za pomocą fzf

Przedstawiamy fzf, wyszukiwarkę rozmytą i interaktywne narzędzie do wyszukiwania w terminalu. To narzędzie umożliwia zaawansowane filtrowanie i szybkie generowanie wyników, zapewniając intuicyjne wyszukiwanie. W przeciwieństwie do tradycyjnych narzędzi wyszukiwania, fzfpozwala na wprowadzanie wzorców rozmytych; na przykład, aby znaleźć plik o nazwie „react_component.js”, wystarczy wpisać szukaną frazę, rctjsaby otrzymać trafne wyniki.

Aby rozpocząć korzystanie z pakietu fzf, wymagana jest instalacja za pośrednictwem menedżera pakietów. W systemach Ubuntu/Debian można go zainstalować, uruchamiając:

sudo apt install fzf

Po instalacji fzfwystarczy rozpocząć, wpisując:

fzf

Znajdowanie plików za pomocą narzędzia Fzf

Wyświetli się lista plików z bieżącego katalogu, którą można przeszukiwać. W miarę wpisywania wyniki są filtrowane dynamicznie w czasie rzeczywistym. Możesz poruszać się po liście za pomocą klawiszy strzałek i wybierać pliki, naciskając Enter.

fzfmożna również używać w połączeniu z find. Przykładowe polecenie to:

find.-type f | fzf

Ten kanał umożliwia interaktywne wybieranie pliku spośród wyników wygenerowanych przez find.

Co więcej, fzfmożesz udoskonalić historię wyszukiwania poleceń dzięki:

history | fzf

Dzięki temu możesz szybko znaleźć polecenia, które wykonałeś wcześniej, i interaktywnie filtrować historię. Możesz łatwo zlokalizować polecenie uruchomione kilka dni wcześniej, którego być może nie pamiętasz – wystarczy wpisać kilka znaków, znaleźć je, nacisnąć Enter, a polecenie będzie gotowe do ponownego wykonania.

Efektywne filtrowanie plików z potwierdzeniem

To ackpolecenie stanowi alternatywę dla greppolecenia stworzonego specjalnie do wyszukiwania kodu. Inteligentnie pomija nieistotne typy plików (takie jak pliki binarne, logi czy katalogi kontroli wersji), co czyni je idealnym rozwiązaniem dla programistów. Chociaż acknie jest ono preinstalowane, można je łatwo dodać do systemu. Użytkownicy Ubuntu powinni po prostu uruchomić:

sudo apt install ack

Po zainstalowaniu ackmożna go używać do przeszukiwania baz kodu. Na przykład, aby znaleźć definicję funkcji w plikach Pythona, wykonaj:

ack --python "def my_function"

Jeśli chcesz wyświetlić wszystkie komentarze TODO w swoim projekcie, możesz uruchomić:

ack "TODO"

ackObsługuje również różne flagi. Na przykład, aby wykonać wyszukiwanie bez uwzględniania wielkości liter i wyświetlania numerów wierszy, należy uruchomić:

ack -i -n "config"

Ponadto ackrozpoznaje powszechnie używane typy plików języków programowania, co pozwala ograniczyć wyszukiwanie do plików JavaScript, Python lub Markdown za pomocą flag takich jak --jslub --python.

Chociaż ripgrepzyskał popularność dzięki szybkości, acknadal jest chętnie wybierany przez deweloperów ze względu na przyjazne dla użytkownika wyniki i skuteczne możliwości filtrowania.

Wniosek

Terminal Linuxa może początkowo wydawać się onieśmielający, ale te narzędzia wyszukiwania bezproblemowo zintegrują się z Twoją codzienną rutyną. W miarę jak się z nimi oswajasz, rozważ utworzenie aliasów w powłoce, aby usprawnić korzystanie z poleceń i wyeliminować trudności związane ze skomplikowanymi ciągami poleceń.

Źródło i obrazy

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *