När jag grep man-sidan för find -kommandot för matchar type det returnerar många sökresultat som jag inte vill ha. I stället vill jag använda ett kommando som bara returnerar sökresultaten för -type.

Kommandot man find | grep -type fungerar inte. Den returnerar:

grep: invalid option -- "t" 

Kommentarer

  • Vill du bara ha de enskilda raderna på den formaterade mansidan som innehåller strängen -type, eller vill du säga hela avsnittet eller två som beskriver vad -type gör?
  • Jag vill veta hur man gör det på båda sätten. Att greppa efter de enskilda raderna som innehåller strängen -type skulle räcka för det sätt jag brukar söka på man-sidorna, men återvänder hela stycket eller två som beskriver vad -type gör skulle vara mycket användbart att göra minst en gång.
  • BTW, om det är ett alternativ att visa en webbsida, Idan Kamara på explainshell.com har gjort ett bra jobb med att extrahera delarna av man-sidor som beskriver kommandoalternativ. Se till exempel explainshell.com/explain?cmd=find+-type+f för att se precis vad -type alternativet gör det.

Svar

Om du vill grep för ett mönster som börjar med bindestreck, använd -- före det mönster du anger.

man find | grep -- -type 

Om du vill ha mer info, till exempel hela avsnittet som beskriver ett alternativ , du kan försöka använda Sed:

$ man find | sed -n "/-mindepth/,/^$/p" -mindepth levels Do not apply any tests or actions at levels less than levels (a non-negative integer). -mindepth 1 means process all files except the command line arguments. 

Detta fungerar dock inte för alla alternativ du kan söka efter. Till exempel :

$ man find | sed -n "/^[[:space:]]*-type/,/^$/p" -type c File is of type c: 

Inte särskilt hjälpsam. Värre, för vissa alternativ kan du vilseledas till att tro att du skulle läsa hela texten om alternativet när du verkligen inte hade ” t. Att till exempel söka -delete utelämnar den mycket viktiga VARNINGEN som finns som ett andra stycke under den rubriken.


Min rekommendationen är att använda ett standardanrop till man med LESS miljövariabeluppsättningen. Jag använder det ganska vanligt i mina svar på den här webbplatsen.

LESS="+/^[[:space:]]*-type" man find 

För att lära dig mer om hur detta fungerar, se:

LESS="+/^[[:space:]]*LESS " man less LESS="+/\+cmd" man less LESS="+/\/" man less 

Om du bara vill hitta alternativet snabbt och interaktivt på mansidan, lär dig att använda less” s sökfunktioner. Och se även:

Kommentarer

  • Tack för att du publicerade. Kommandona i ditt svar gav de resultat som jag letade efter. Jag accepterar ett svar efter en dag eller två, så snälla ha tålamod.
  • @karel, inget problem, jag ' är väldigt tålmodig. 🙂 Lite förbryllad, dock: Jag vet att du kan ' t starta en bounty på en fråga i två dagar, men jag tror att tidsgränsen innan du kan acceptera ett svar är bara 15 minuter eller så.
  • man find | sed -n '/-type/,/^$/p' ger mycket mer än vad du postade som det kommer att matcha -type var som helst på raden … jobbar själv med litet skript för att söka man eller hjälp (för inbyggd) och använder för närvarande awk som fortfarande har få quirks att lösa .. awk -v RS= -v rx="^\\\s*$arg\\\>" '$0 ~ rx' "$file" där arg skulle vara -type i det här fallet
  • BTW, @Sundeep, kanske du vill testa de underliggande troff -filerna som innehåller den ursprungliga mansidan med formatinformation, istället för textutmatningen av kommandot man.
  • @Sundeep, här ' är utgångspunkten för dig . (Se till att följa länken i det svaret.) Det finns ' MYCKET att veta om troff. Ping mig i chatten när du är klar med att dyka ner i kaninhålet. 🙂

Svar

Eller rör till less och mata att ett sökord:

man 1 find | less -p " -type" 

(Detta kan misslyckas beroende på exakt vad less är feed, t.ex. om -type har fetstilats med baksteg.)

Kommentarer

  • Rör genom col -bx först.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *