Når jeg griper mansiden til find -kommandoen for samsvarer med type det returnerer mange søkeresultater som jeg ikke vil ha. I stedet vil jeg bruke en kommando som returnerer bare søkeresultatene for -type.

Kommandoen man find | grep -type fungerer ikke. Den returnerer:

grep: invalid option -- "t" 

Kommentarer

  • Vil du bare ha de enkelte linjene på den formaterte man-siden som inneholder strengen -type, eller vil du si det hele avsnittet eller to som beskriver hva -type gjør?
  • Jeg vil vite hvordan du gjør det begge veier. Det å være grep for de enkelte linjene som inneholder strengen -type ville være nok for måten jeg vanligvis søker på mansidene, men tilbake hele avsnittet eller to som beskriver hva -type gjør, vil være veldig nyttig å gjøre minst en gang.
  • BTW, hvis det å se på en webside er et alternativ, Idan Kamara på explainshell.com har gjort en god jobb med å trekke ut delene av mansider som beskriver kommandoalternativer. Se for eksempel explainshell.com/explain?cmd=find+-type+f for å se akkurat hva -type alternativet gjør det.

Svar

Hvis du vil gripe etter et mønster som begynner med en bindestrek, bruk -- før mønsteret du angir.

man find | grep -- -type 

Hvis du vil ha mer info, for eksempel hele delen som beskriver et alternativ , kan du prøve å bruke 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. 

Dette fungerer imidlertid ikke for alle alternativene du kan søke etter. For eksempel :

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

Ikke veldig nyttig. Verre, for noen alternativer kan du bli villedet til å tro at du «hadde lest hele teksten om alternativet når du virkelig ikke hadde» t. Hvis du for eksempel søker etter -delete, utelates den svært viktige ADVARSEL som er et andre avsnitt under den overskriften.


Min anbefaling er å bruke en standardanrop til man med settet LESS. Jeg bruker det ganske ofte i svarene mine på dette nettstedet.

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

For å lære mer om hvordan dette fungerer, se:

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

Hvis du bare vil finne alternativet raskt og interaktivt på mansiden, kan du lære å bruke less» s søkefunksjoner. Og se også:

Kommentarer

  • Takk for at du postet. Kommandoene i svaret ditt returnerte resultatene jeg lette etter. Jeg godtar svaret etter en dag eller to, så vær tålmodig.
  • @karel, ikke noe problem, jeg ' er veldig tålmodig. 🙂 Litt forvirret, skjønt: Jeg vet at du kan ' t starter en bounty på et spørsmål i to dager, men jeg tror tidsfristen før du kan godta et svar er bare 15 minutter eller så.
  • man find | sed -n '/-type/,/^$/p' gir mye mer enn det du la ut som det vil matche -type hvor som helst på linjen … jobber selv med lite skript for å søke mann eller hjelp (for innebygd) og bruker for øyeblikket awk som fremdeles har få quirks å løse .. awk -v RS= -v rx="^\\\s*$arg\\\>" '$0 ~ rx' "$file" der arg ville være -type i denne saken
  • BTW, @Sundeep, vil du kanskje prøve å analysere de underliggende troff filene som inneholder den opprinnelige mansiden info med formatinformasjon, i stedet for tekstutdata av kommandoen man.
  • @Sundeep, her ' er utgangspunktet for deg . (Pass på å følge lenken i det svaret.) ' er MYE å vite om troff. Ping meg i en prat når du er ferdig med å dykke ned i kaninhullet. 🙂

Svar

Eller rør til less og feed at et søkeord:

man 1 find | less -p " -type" 

(Dette kan mislykkes avhengig av nøyaktig hva less er feed, f.eks. hvis -type har blitt fet skrift med tilbaketast.)

Kommentarer

  • Rør den gjennom col -bx først.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *