4 svar
89 visningar
Marx behöver inte mer hjälp
Marx 361
Postad: 12 nov 2021 22:13

Manual page in Linux

Jag har lärt mig när man vill leta efter en sträng i en "manual page" i Linux terminalen behöver man endast skriva / och sen strängen. T.ex: Om vi vill söka efter strägen "Perl" i manual pagen för ls , skriver man först kommandot man ls i terminalen och sen /Perl . 

Det som jag inte kan är hur man letar efter flera strängar separerat ifrån varandra med mellanslag. Exempelvis om jag vill söka "this option" går det inte att skriva /this option, för då får jag meddelandet Pattern not found (press RETURN). 

Har ni något förslag på hur man söker efter flera stränger samtidigt i en manual page?

Tack på förhand!

Marx 361
Postad: 12 nov 2021 22:22

Jaaa! Nu hittade jag en lösning på problemet, man skriver helt enkelt /this\ option . Finns det flera sätt?

Programmeraren 3390
Postad: 12 nov 2021 22:25 Redigerad: 12 nov 2021 22:25

"man" använder kommandot "less". När du söker så är det i programmet less du är.

Alltså kan du köra "man less" för att få veta mer.

less används också för att läsa långa textfiler, "less file.txt" typ.

Programmeraren 3390
Postad: 13 nov 2021 08:07 Redigerad: 13 nov 2021 08:22

När du kör "man" så väljer den vilket program som ska visa texten. less är alltså default men det kan ändras med miljövariabler. Om du kör
env|grep -i pager
env|grep -i manpager
env|grep -i manless
kan du se om det är less eller något annat samt eventuella parametrar som de tar.

Vill du veta detaljerna om detta kör du "man man"

Om vi antar att det är less:
Sökuttycken är regular expressions (RE), t ex:

/means.*two

matchar "means" följt av vad som helst följt av "two. ".*" = ett godtyckligt tecken (".") som upprepas 0 eller flera gånger ("*").
Hade man använt "+" istf "*" så hade det behövt vara 1 eller flera tecken.
Hade man använt ".+q+" hade det behövt vara ett eller flera tecken vilket som helst följt av ett eller flera "q".
(Gör inget om du inte förstår, i början är det bra att prova sig fram.)

Regular expressions är enkla att lära sig för enklare sökuttryck men kan bli komplexa. Dock är det bra kunskap eftersom de används överallt i kommandon och programmering.

Dock brukar "/means option" fungera, space är ren text. Backslash är "escape" i RE och gör att nästa tecken inte tolkas. Behövs för specialtecken, t ex "." som annars matchar vilket tecken som helst. Kan vara så att din less har någon parameter som ändrar tolkningen.

Laguna Online 30472
Postad: 13 nov 2021 11:04

"/this option" borde hitta det du vill om det står precis så, men det kan vara fler än ett mellanslag i texten och då får du skriva 

/this *option

Svara
Close