Kommandot `less` är ett verktyg som låter dig navigera genom textfiler och visa innehållet skärmvis. Vid första anblicken kan det verka som ett av de enklaste kommandona i Linux, men det har många fler funktioner än vad man kan tro.
En Tillbakablick på `less`
I Linux- och Unixvärlden har nästan allting en historia. `less` är baserat på programmet `more`, som lanserades 1978 med version 3.0 av Berkeley Software Distribution Unix (3.0BSD). `more` tillät användare att stegvis bläddra genom en textfil, en skärmfull text i taget.
Då behovet är uppfinningens moder, var det den tidiga versionens oförmåga i `more` att bläddra bakåt i en fil som inspirerade Mark Nudelman att utveckla `less` för att lösa just detta problem. Arbetet påbörjades 1983, och den första versionen släpptes utanför hans arbetsplats 1985. Sedan oktober 2019 underhåller han fortfarande `less`.
Finns det någon Linux-användare som inte har stött på `less`? Även om man inte aktivt använt det för att läsa en textfil, är sannolikheten stor att man använt `man`-kommandot, som i sin tur använder `less` för att visa manualsidor.
Detta är ett kommando som har många ess i rockärmen.
Varför `less` överglänser `more`
`less` har utvecklats kontinuerligt under åren och erbjuder en imponerande mängd kommandon och tangentbordsgenvägar. Jämför man manualsidan för `less` med manualsidan för `more`, blir det tydligt hur `less` överträffar `more`.
`more` har visserligen överkommit sin initiala begränsning att inte kunna bläddra bakåt i en fil, men den kan fortfarande inte navigera bakåt genom inmatning som skickas via rörledningar, vilket är fullt möjligt med `less`.
Med sin flexibilitet att navigera i filer, hantera flera filer, söka efter text, skapa och återgå till bokmärken, samt hantera rörledningsinmatning, vinner `less` utan tvekan. Använd `less` istället för `more`.
Läsning av Filer med `less`
För att öppna en fil i `less`, ange filnamnet på kommandoraden:
less Dr-Jekyll-and-Mr-Hyde-001.txt
Filen laddas och visas med början (eller ”starten”) av filen högst upp i terminalfönstret. Du kan använda mushjulet för att scrolla framåt eller bakåt genom texten.
På tangentbordet kan du använda mellanslagstangenten eller Page Down-knappen för att navigera framåt i texten, en skärmfull åt gången.
Page Up-knappen tar dig bakåt genom filen (mot ”starten” av filen.) Home- och End-knapparna tar dig direkt till början respektive slutet av textfilen.
Filnamnet visas i det nedre vänstra hörnet av skärmen. När du börjar navigera i filen rensas den nedersta raden. Den används för att visa meddelanden och för att du ska kunna skriva in kommandon.
Tryck på ”q” för att avsluta `less`.
Visning av Radnummer
För att visa radnummer i textfilen, använd alternativet `-N` (radnummer).
less -N Dr-Jekyll-and-Mr-Hyde-001.txt
Radnummer kan vara användbara för att enkelt hitta specifika rader eller sektioner i loggfiler och andra filer som inte är skrivna i standardprosa.
Sökning i `less`
För att söka genom texten i filen, tryck på ”/” och skriv in din sökterm. Sökningen är skiftlägeskänslig. Din sökterm visas på den nedre raden i fönstret. Tryck på Enter för att starta sökningen.
I detta exempel är söktermen ”Enfield” och den syns längst ner på skärmen.
Sökningen görs från den aktuella positionen i filen fram till slutet av filen. För att söka i hela filen, gå till början av filen innan du påbörjar sökningen.
Du får ett meddelande om inga matchningar hittas. Om en matchning hittas flyttas visningen till det matchande resultatet.
För att hitta nästa matchande resultat, tryck på ”n”. För att gå till föregående matchande resultat, tryck på ”N”.
För att söka bakåt från din nuvarande plats i filen, mot början av filen, tryck på ”?” och ange din sökterm. För att hitta nästa matchande objekt, tryck på ”n”. För att söka efter föregående matchande objekt, tryck på ”N”.
Observera att vid bakåtsökning är nästa matchande objekt (som nås med ”n”) det närmaste objektet mot början av filen, medan ”N” för föregående matchande objekt söker efter ett objekt närmare slutet av filen. Med andra ord, ”n” och ”N” byter sökriktning vid bakåtsökning.
Öppna Fil Med Sökterm
Du kan använda alternativet `-p` (mönster) för att få `less` att söka igenom textfilen och hitta det första matchande objektet. Den kommer då att visa sidan med det matchande objektet i stället för den första sidan i filen, om inte objektet finns på första sidan.
Obs: det finns inget mellanslag mellan -p och söktermen.
less -pEnfield Dr-Jekyll-and-Mr-Hyde-001.txt
Filen öppnas och visar den första matchningen som är markerad.
Navigering i `less`: De Mest Användbara Tangenterna
Använd följande tangenter för att navigera och söka i en textfil:
Flytta en rad framåt: Nedåtpil, Enter, e eller j
Flytta bakåt en rad: Uppåtpil, y eller k
Flytta en sida framåt: Mellanslagstangent eller Page Down
Flytta bakåt en sida: Page Up eller b
Scrolla åt höger: Högerpil
Scrolla åt vänster: Vänsterpil
Gå till början av filen: Home eller g
Gå till slutet av filen: End eller G
Gå till en specifik rad: Skriv radnumret och tryck sedan ”g”
Gå till en specifik procentandel i filen: Skriv procentsatsen och tryck sedan ”p” eller ”%”. (Du kan även ange decimaltal. Så, för att hoppa till 27,2 procent, skriv ”27,2” och tryck sedan ”p” eller ”%”. Varför decimaler? Det är en bra fråga.)
Sök framåt: Tryck ”/” och skriv din sökterm, som t.ex. ”/Jekyll”, och tryck Enter
Sök bakåt: Tryck ”?” och skriv din sökterm, som t.ex. ”/Hyde”, och tryck Enter
Nästa matchande resultat: n
Föregående matchande resultat: N
Avsluta: q
Komprimera Tomma Rader
Alternativet `-s` (komprimera tomma rader) tar bort flera på varandra följande tomma rader och ersätter dem med en enda tom rad.
I vår exempelfil finns det några på varandra följande tomma rader, låt oss se hur `less` hanterar dem med alternativet `-s`:
less -s Dr-Jekyll-and-Mr-Hyde-001.txt
Alla dubbla (eller fler) tomma rader har ersatts av en enda tom rad.
Visa Flera Filer
`less` kan öppna flera filer samtidigt. Du kan enkelt växla fram och tillbaka mellan filerna. `less` kommer ihåg din position i varje fil.
less Dr-Jekyll-and-Mr-Hyde-001.txt Dr-Jekyll-and-Mr-Hyde-002.txt
Filerna öppnas och den första filen visas. Du ser vilken fil som visas och hur många filer som har laddats. Detta är markerat nedan.
För att se nästa fil, tryck ”:” och sedan ”n”.
Skärmen uppdateras och visar den andra filen. Informationen längst ner i fönstret visar att du ser den andra filen. Detta är markerat nedan.
För att gå tillbaka till föregående fil, skriv ”:” och tryck sedan ”p”.
Använda Markörer
`less` tillåter dig att skapa en markör så att du lätt kan återgå till en markerad sektion. Varje markör representeras av en bokstav. För att placera en markör på den översta visade raden, tryck ”m” och sedan den bokstav du vill använda, t.ex. ”a”.
När du trycker på ”m” visar den nedre raden en uppmaning och väntar på att du ska trycka på en bokstav.
När du trycker på en bokstav tas uppmaningen bort.
Från vilken annan plats som helst i filen kan du enkelt återgå till en markör genom att trycka på apostrof (eller enkelt citattecken) ”’” och sedan bokstaven för den markör du vill återvända till. När du trycker på ”’” visas en uppmaning där du kan ange vilken markör du vill hoppa till.
Tryck på bokstaven för den markör du vill återvända till, och den sektionen av textfilen visas.
Använda Rörinmatning med `less`
`less` kan visa information som kommer som en ström via rörledningar lika enkelt som om det vore en fil.
Kommandot `dmesg` visar meddelanden från kärnringbufferten. Vi kan skicka utdata från `dmesg` till `less` med följande kommando:
dmesg | less
Utdatan från `dmesg` visas.
Du kan bläddra och söka i den rörledda inmatningen precis som i en vanlig fil. För att se de senaste meddelandena, tryck ”End” för att gå till slutet av filen.
När nya meddelanden kommer in måste du fortsätta trycka på ”End” för att tvinga `less` att visa botten av filen. Detta är inte särskilt praktiskt. För att `less` alltid ska visa slutet av texten, även när ny data tillkommer, använd alternativet `+F` (framåt). Notera användningen av ”+” istället för ”-” som alternativflagga.
dmesg | less +F
Alternativflaggan `+` talar om för `less` att behandla alternativet som om du hade använt kommandot inuti `less`. Om du t.ex. glömde `+F`-alternativet, tryck ”F” i `less`.
`less` visar nu slutet av texten, som visar de senaste meddelandena från `dmesg`. Det visas ett meddelande om att `less` väntar på mer data. När fler kärnmeddelanden visas, scrollas skärmen så att du alltid ser de senaste meddelandena.
Du kan inte bläddra i detta läge; det är dedikerat till att visa slutet av texten. För att lämna detta läge, tryck Ctrl+c, och du återgår till det normala interaktiva läget i `less`.
Redigera Filer med `less`
Du kan redigera filer med `less` – ja, på sätt och vis. Kommandot kan inte redigera filer i sig, men om du skriver ”v” när du läser en fil, kommer filen att öppnas i din standardredigerare. När du lämnar redigeraren återvänder du till `less`.
Tryck ”v” när du läser en fil i `less`:
Filen laddas in i standardredigeraren, i detta fall `nano`:
När du stänger redigeraren återvänder du till `less`.
Sammanfattning
Hur kontraintuitivt det än kan verka, i detta fall är `less` > `more`.