15%

Zaoszczędź 15% na wszystkich usługach hostingowych

Sprawdź swoje umiejętności i zdobądź Rabat na dowolny plan hostingowy

Użyj kodu:

Skills
Rozpocznij
10.11.2023

Polecenie `less` w Linux: Kompletny przewodnik ze składnią, opcjami i praktycznym zastosowaniem

Polecenie less w systemie Linux to terminalowe narzędzie typu pager, które umożliwia interaktywne przeglądanie zawartości plików tekstowych i wyników poleceń bez ładowania całego pliku do pamięci. W przeciwieństwie do edytorów tekstu, takich jak Vim czy Nano, less otwiera pliki w trybie tylko do odczytu z podziałem na strony, co czyni go podstawowym narzędziem do przeglądania dużych plików dziennika, plików konfiguracyjnych i strumieni wyjściowych poleceń w każdym systemie uniksopodobnym.

Krótka odpowiedź: less filename otwiera dowolny plik tekstowy w interaktywnej, przewijalnej przeglądarce. Możesz nawigować do przodu i do tyłu, wyszukiwać wzorce i czysto wychodzić — wszystko bez modyfikowania pliku.

Dlaczego less jest ważny dla administratorów systemów

Zarządzając serwerem Linux, regularnie masz do czynienia z plikami liczącymi tysiące linii — dziennikami aplikacji, komunikatami jądra, dziennikami dostępu Apache lub Nginx, zrzutami konfiguracji i innymi. Otwieranie ich w pełnym edytorze jest nieefektywne i niesie ryzyko przypadkowej modyfikacji. Pager less ładuje zawartość na żądanie, co oznacza, że odczytuje tylko tę część pliku, która jest aktualnie wyświetlana. Dzięki temu jest wyjątkowo wydajny w przypadku plików o rozmiarze gigabajtów.

To zachowanie zasadniczo różni się od poleceń takich jak cat, które zrzuca cały plik na standardowe wyjście naraz, lub head/tail, które pokazują tylko stałą część. less daje pełną interaktywną kontrolę nad nawigacją bez żadnego narzutu pamięciowego proporcjonalnego do rozmiaru pliku.

Jeśli zarządzasz środowiskiem VPS Hosting lub Serwerem Dedykowanym, less będzie jednym z najczęściej używanych narzędzi diagnostycznych w codziennej pracy — szczególnie podczas przeglądania /var/log/syslog, /var/log/auth.log lub katalogów dzienników specyficznych dla aplikacji.

less vs. more: Porównanie techniczne

Polecenie more poprzedza less i jest jego konceptualnym poprzednikiem. Choć oba są pagerami, ich możliwości znacznie się różnią. Nazwa „less” to celowy żart uniksowy: *less is more than more*.

Funkcjalessmore
Przewijanie do przoduTakTak
Przewijanie do tyłuTakNie
Nawigacja klawiszami strzałekTakOgraniczona
Wyszukiwanie do przodu (/pattern)TakTak
Wyszukiwanie do tyłu (?pattern)TakNie
Przejście do numeru liniiTakNie
Procent odczytanego plikuTakNie
Obsługa potokówTakTak
Otwieranie wielu plikówTakNie
Użycie pamięci dla dużych plikówStałe (na żądanie)Wyższe
Dostępność na minimalnych systemachCzasem nie jest preinstalowanyPrawie zawsze obecny

Praktyczny wniosek: używaj more tylko wtedy, gdy less jest niedostępny, na przykład na bardzo okrojonych obrazach kontenerów lub starszych systemach wbudowanych. We wszystkich innych przypadkach less jest zdecydowanie lepszy.

Podstawowa składnia

less [OPTIONS] filename

Możesz również przekierować wyjście bezpośrednio do less za pomocą potoku:

command | less

Przykłady:

less /var/log/syslog
grep "error" /var/log/nginx/access.log | less
dmesg | less
cat /etc/nginx/nginx.conf | less

Wzorzec potoku jest szczególnie przydatny. Każde polecenie generujące obszerne wyjście — ps aux, netstat -tulnp, find / -name "*.conf" — staje się łatwe w obsłudze po przekierowaniu do less.

Domyślne skróty klawiszowe nawigacji

Po wejściu do less następujące skróty klawiszowe sterują nawigacją. Nie są to opcjonalne flagi — są to interaktywne polecenia wpisywane podczas otwartego pliku.

KlawiszAkcja
Space lub fPrzewiń do przodu o jeden pełny ekran
bPrzewiń do tyłu o jeden pełny ekran
Down arrow lub jPrzewiń do przodu o jedną linię
Up arrow lub kPrzewiń do tyłu o jedną linię
dPrzewiń do przodu o pół ekranu
uPrzewiń do tyłu o pół ekranu
gPrzejdź na początek pliku
GPrzejdź na koniec pliku
nG lub ngPrzejdź do numeru linii n
/patternWyszukaj wzorzec do przodu
?patternWyszukaj wzorzec do tyłu
nPowtórz ostatnie wyszukiwanie w tym samym kierunku
NPowtórz ostatnie wyszukiwanie w przeciwnym kierunku
qWyjdź z less
hWyświetl ekran pomocy
FTryb śledzenia — jak tail -f, strumieniuje nową zawartość

Klawisz F (tryb śledzenia) zasługuje na szczególną uwagę. Zamienia less w monitor dziennika na żywo, odpowiednik tail -f, ale z dodatkową możliwością naciśnięcia Ctrl+C w celu zatrzymania śledzenia i nawigacji wstecz przez już załadowaną zawartość. Jest to coś, czego tail -f nie potrafi.

Informacje o opcjach wiersza poleceń

Te flagi są przekazywane podczas wywoływania less z wiersza poleceń, modyfikując jego zachowanie przed otwarciem pliku.

OpcjaOpis
-NWyświetl numery linii na lewym marginesie
-nUkryj numery linii (domyślnie w niektórych systemach)
-iWyszukiwanie bez rozróżniania wielkości liter (ignoruje wielkie/małe litery)
-IWyszukiwanie bez rozróżniania wielkości liter, nawet dla samego wzorca
-SPrzycinaj długie linie zamiast zawijać je (przydatne dla szerokich plików CSV lub dzienników)
-p patternOtwórz plik i przejdź bezpośrednio do pierwszego wystąpienia określonego wzorca
-cOdmaluj ekran od góry zamiast przewijać (zmniejsza migotanie na wolnych terminalach)
-gPodświetl tylko ciąg znaleziony przez ostatnie wyszukiwanie, a nie wszystkie dopasowania
-GCałkowicie wyłącz podświetlanie wyników wyszukiwania
-FWyjdź automatycznie, jeśli cały plik mieści się na jednym ekranie
-XNie czyść ekranu po wyjściu z less (pozostawia zawartość widoczną w terminalu)
-RRenderuj sekwencje ucieczki kolorów ANSI (niezbędne przy przekierowaniu kolorowego wyjścia)
-eWyjdź automatycznie przy drugim końcu pliku
+nZacznij od numeru linii n
+/patternZacznij od pierwszego wystąpienia pattern (alternatywna składnia do -p)
-mPokaż procent odczytanego pliku w wierszu zachęty (jak more)
-MPokaż bardziej szczegółowy wiersz zachęty zawierający numery linii i procent

Praktyczne kombinacje opcji

Przeglądaj plik dziennika z numerami linii, wyszukiwaniem bez rozróżniania wielkości liter i bez zawijania linii:

less -NiS /var/log/apache2/error.log

Otwórz plik i przejdź bezpośrednio do pierwszego wystąpienia „segfault”:

less -p "segfault" /var/log/kern.log

Przekieruj kolorowe wyjście polecenia i zachowaj kolory:

grep --color=always "FAILED" /var/log/auth.log | less -R

Otwórz plik i wyjdź natychmiast, jeśli mieści się na jednym ekranie:

less -F /etc/hosts

Wyszukiwanie w less: Zaawansowane techniki

Funkcja wyszukiwania w less obsługuje wyrażenia regularne, a nie tylko ciągi dosłowne. Jest to kluczowa różnica, którą wielu użytkowników pomija.

/error|warning|critical

Ten wzorzec dopasowuje każdą linię zawierającą „error”, „warning” lub „critical” — używając standardowej składni rozszerzonych wyrażeń regularnych POSIX. W połączeniu z -i dla wyszukiwania bez rozróżniania wielkości liter, staje się to potężnym narzędziem do analizy dzienników bez potrzeby używania grep jako preprocesora.

Wyszukiwanie w wielu plikach:

less file1.log file2.log file3.log

Użyj :n, aby przejść do następnego pliku, i :p, aby wrócić do poprzedniego. Wyszukiwanie /pattern dotyczy tylko bieżącego pliku, ale możesz je ręcznie powtarzać w kolejnych plikach.

Praca z wieloma plikami i nazwanymi potokami

less może otwierać wiele plików kolejno:

less /var/log/syslog /var/log/kern.log /var/log/auth.log

Działa również poprawnie z nazwanymi potokami (FIFO) i podstawianiem procesów, co jest przydatne w zaawansowanych skryptach powłoki:

less <(journalctl -u nginx --since "1 hour ago")

Otwiera to wyjście journalctl tak, jakby był to plik, z pełnym przewijaniem wstecz — czego zwykły potok nie obsługuje dla nawigacji wstecz we wszystkich środowiskach powłoki.

Rzeczywiste przypadki brzegowe i pułapki

Pliki binarne: Uruchomienie less na pliku binarnym (skompilowane pliki wykonywalne, skompresowane archiwa) spowoduje wyświetlenie nieczytelnych znaków i może wywołać ostrzeżenie. Użyj less -f, aby wymusić otwarcie, ale wyjście będzie w dużej mierze nieczytelne. Do inspekcji binarnej właściwym narzędziem jest xxd lub hexdump.

Bardzo szerokie linie: Pliki dziennika generowane przez niektóre frameworki Java lub aplikacje intensywnie korzystające z JSON często zawierają bardzo długie pojedyncze linie. Bez -S, less zawija te linie, utrudniając ich czytanie. Flaga -S umożliwia poziome przewijanie klawiszami strzałek, co jest znacznie bardziej praktyczne.

Skompresowane pliki: W systemach ze skonfigurowanym lesspipe (powszechne w Debian/Ubuntu), less może transparentnie otwierać pliki .gz, .bz2, .zip i inne skompresowane formaty. Sprawdź, czy jest włączony za pomocą echo $LESSOPEN. Jeśli nie jest skonfigurowany, użyj zless (skryptu opakowującego) dla plików skompresowanych gzip.

Utrata kolorowego wyjścia w potokach: Podczas przekierowywania wyjścia z narzędzi takich jak grep --color, ls --color lub diff, kody kolorów są sekwencjami ucieczki ANSI. Bez -R, less wyświetla je jako surowe znaki ucieczki. Zawsze używaj less -R podczas przekierowywania kolorowego wyjścia.

LESSOPEN i LESSCLOSE: Te zmienne środowiskowe definiują skrypty preprocesora i postprocesora, które less uruchamia na plikach przed ich wyświetleniem. W prawidłowo skonfigurowanym systemie pozwala to less transparentnie wyświetlać zawartość archiwów, plików PDF, a nawet obrazów (jako ASCII art). Jest to niedoceniana funkcja o znacznej użyteczności diagnostycznej.

Trwała konfiguracja less za pomocą zmiennej środowiskowej LESS

Zamiast wpisywać flagi za każdym razem, możesz ustawić domyślne opcje za pomocą zmiennej środowiskowej LESS w profilu powłoki (~/.bashrc lub ~/.zshrc):

export LESS="-NiRMS"

Powoduje to automatyczne stosowanie -N (numery linii), -i (wyszukiwanie bez rozróżniania wielkości liter), -R (renderowanie kolorów), -M (szczegółowy wiersz zachęty) i -S (bez zawijania linii) do każdego wywołania less. Jest to standardowa praktyka na serwerach produkcyjnych, gdzie częsta analiza dzienników jest normą.

Używanie less w skryptach powłoki i automatyzacji

Choć less jest przede wszystkim narzędziem interaktywnym, integruje się płynnie ze skryptami administracyjnymi. Powszechnym wzorcem jest warunkowe wywoływanie go tylko wtedy, gdy działa w interaktywnym terminalu:

if [ -t 1 ]; then
    some_command | less -R
else
    some_command
fi

Test -t 1 sprawdza, czy standardowe wyjście jest podłączone do terminala. Zapobiega to blokowaniu przez less nieinteraktywnych potoków lub zadań cron.

less w kontekście zarządzania serwerem

Na VPS z cPanel lub w dowolnym środowisku zarządzanym przez panel sterowania, less pozostaje niezbędny do administracji przez SSH, nawet gdy dostępny jest interfejs graficzny. Panele sterowania oferują ograniczone widoki dzienników; bezpośredni dostęp przez SSH z less zapewnia niefiltrowany wgląd w zachowanie systemu w czasie rzeczywistym.

Podczas konfigurowania Serwerów Dedykowanych dla aplikacji o dużym ruchu, ustrukturyzowane przepływy pracy analizy dzienników zbudowane wokół less, grep, awk i sed stanowią podstawę reagowania na incydenty. Umiejętność sprawnego nawigowania po 2 GB dzienniku dostępu bez ładowania go do pamięci to fundamentalna umiejętność administratora systemu.

Dla zespołów zarządzających infrastrukturą Hostingu Poczty E-mail, less jest standardowym narzędziem do przeglądania dzienników poczty Postfix (/var/log/mail.log) i dzienników uwierzytelniania Dovecot, gdzie nawigacja wstecz linia po linii jest niezbędna do śledzenia błędów dostarczania.

Macierz decyzyjna — szybki przewodnik

Użyj tej macierzy, aby zdecydować, po jakie narzędzie sięgnąć podczas przeglądania zawartości pliku:

ScenariuszZalecane narzędzie
Interaktywne przeglądanie dużego pliku dziennikaless -NiS
Monitorowanie pliku dziennika w czasie rzeczywistymless +F lub tail -f
Wyświetlenie tylko ostatnich N liniitail -n N
Wyświetlenie tylko pierwszych N liniihead -n N
Wyszukiwanie i filtrowanie bez interakcjigrep
Przeglądanie skompresowanego pliku .gzzless lub less z lesspipe
Inspekcja zawartości binarnej/szesnastkowejxxd lub hexdump
Przeglądanie z podświetlaniem składnibat (pager zewnętrzny)
Szybki zrzut małego plikucat
Minimalny system, less niedostępnymore

Kluczowe wnioski techniczne

  • less ładuje zawartość pliku na żądanie — użycie pamięci nie skaluje się z rozmiarem pliku, co czyni go bezpiecznym dla plików o rozmiarze wielu gigabajtów.
  • Flaga -R jest obowiązkowa podczas przekierowywania kolorowego wyjścia; jej pominięcie powoduje wyświetlanie nieczytelnych sekwencji ucieczki.
  • Tryb śledzenia (klawisz F) zapewnia funkcjonalność tail -f z dodatkową możliwością przewijania wstecz przez buforowaną zawartość.
  • Wyrażenia regularne są natywnie obsługiwane we wzorcach wyszukiwania — nie ma potrzeby wstępnego filtrowania za pomocą grep do dopasowywania wzorców.
  • Ustaw export LESS="-NiRMS" w profilu powłoki, aby globalnie stosować rozsądne ustawienia domyślne.
  • Używaj less <(command) z podstawianiem procesów, aby uzyskać pełną interaktywną nawigację po wyjściu poleceń, w tym przewijanie wstecz.
  • Zmienna LESSOPEN umożliwia transparentną dekompresję i konwersję formatów — sprawdź, czy jest skonfigurowana na Twoich serwerach.
  • Nigdy nie używaj cat na dużych plikach, gdy dostępny jest less; nasyca bufor terminala i nie zapewnia żadnej możliwości nawigacji.

Często zadawane pytania

Jaka jest różnica między less a cat w systemie Linux?

cat wyświetla całą zawartość pliku na standardowe wyjście naraz, bez interaktywności ani podziału na strony. less otwiera plik w interaktywnym pagerze, gdzie można przewijać, wyszukiwać i nawigować. Dla każdego pliku dłuższego niż wysokość terminala, less jest właściwym narzędziem.

Czy less może edytować pliki?

Nie. less jest wyłącznie przeglądarką tylko do odczytu. W żadnych okolicznościach nie modyfikuje plików. Do edycji użyj vim, nano lub innego edytora tekstu.

Jak wyszukać słowo w less?

Gdy plik jest otwarty w less, wpisz /word i naciśnij Enter, aby wyszukać do przodu. Użyj ?word, aby wyszukać do tyłu. Naciśnij n, aby przejść do następnego dopasowania, i N, aby przejść do poprzedniego. Wyszukiwania obsługują wyrażenia regularne.

Dlaczego less wyświetla nieczytelne znaki podczas przekierowywania kolorowego wyjścia?

Sekwencje ucieczki kolorów ANSI nie są domyślnie renderowane. Przekaż flagę -R — jako less -R lub ustawiając export LESS="-R" w profilu powłoki — aby poprawnie renderować kolory.

Czy less jest dostępny we wszystkich dystrybucjach Linux?

less jest domyślnie dołączony do praktycznie wszystkich głównych dystrybucji Linux, w tym Debian, Ubuntu, CentOS, RHEL, Fedora i Arch Linux. Na minimalnych obrazach bazowych Docker lub Alpine Linux może wymagać jawnej instalacji za pomocą apk add less lub równoważnego polecenia menedżera pakietów.

15%

Zaoszczędź 15% na wszystkich usługach hostingowych

Sprawdź swoje umiejętności i zdobądź Rabat na dowolny plan hostingowy

Użyj kodu:

Skills
Rozpocznij