Når jeg griber mandsiden til find -kommandoen matcher type det returnerer mange søgeresultater, som jeg ikke ønsker. I stedet for vil jeg bruge en kommando, der kun returnerer søgeresultaterne for -type.

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

grep: invalid option -- "t" 

Kommentarer

  • Vil du bare have de enkelte linjer på den formaterede man-side der indeholder strengen -type, eller vil du sige hele eller to afsnit, der beskriver hvad -type gør?
  • Jeg vil gerne vide, hvordan man gør det begge veje. Det at være grep for de enkelte linjer, der indeholder strengen -type, ville være nok til den måde, jeg normalt søger på mandsiderne, dog tilbage hele afsnit eller to, der beskriver, hvad -type gør, ville være meget nyttigt at gøre mindst en gang.
  • BTW, hvis det er et alternativ at se en webside, Idan Kamara på explainhell.com har gjort et godt stykke arbejde med at udtrække de dele af mandsider, der beskriver kommandomuligheder. Se for eksempel explainshell.com/explain?cmd=find+-type+f for at se, hvad -type indstillingen gør.

Svar

Hvis du vil gribe efter et mønster, der begynder med en bindestreg, skal du bruge -- før det mønster, du angiver.

man find | grep -- -type 

Hvis du vil have mere info, for eksempel hele sektionen, der beskriver en mulighed , du kunne prøve at bruge 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 dog ikke for enhver mulighed, du kan søge efter. For eksempel :

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

Ikke særlig nyttigt. Værre, for nogle indstillinger kan du vildledes til at tro, at du “læste hele teksten om indstillingen, når du virkelig ikke havde” t. Hvis du f.eks. søger -delete, udelades den meget vigtige ADVARSEL, der findes som et andet afsnit under den overskrift.


Min anbefaling er at bruge et standardopkald til man med LESS miljøvariabelsættet. Jeg bruger det ret almindeligt i mine svar på dette websted.

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

For at lære mere om, hvordan dette fungerer, se:

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

Hvis du bare vil finde muligheden hurtigt og interaktivt på mandsiden, skal du lære at bruge less” s søgefunktioner. Og se også:

Kommentarer

  • Tak for dit indlæg. Kommandoerne i dit svar returnerede de resultater, jeg ledte efter. Jeg accepterer et svar efter en dag eller to, så vær tålmodig.
  • @karel, ikke noget problem, jeg ' er meget tålmodig. 🙂 Dog lidt forvirret: Jeg ved, du kan ' t start en bounty på et spørgsmål i to dage, men jeg tror, at tidsfristen, inden du kan acceptere et svar, kun er cirka 15 minutter.
  • man find | sed -n '/-type/,/^$/p' giver meget mere end hvad du skrev som det vil matche -type hvor som helst på linjen … arbejder selv på lille script for at søge mand eller hjælp (til indbygget) og bruger i øjeblikket awk som stadig har få quirks at løse .. awk -v RS= -v rx="^\\\s*$arg\\\>" '$0 ~ rx' "$file" hvor arg ville være -type i denne sag
  • BTW, @Sundeep, kan du prøve at parsere de underliggende troff filer, der indeholder den originale man-side info med formatoplysninger i stedet for tekstoutput af kommandoen man.
  • @Sundeep, her ' er startpunktet for dig . (Sørg for at følge linket i det svar.) Der er ' MEGET at vide om troff. Ping mig i chat, når du er færdig med at dykke ned i kaninhullet. 🙂

Svar

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

man 1 find | less -p " -type" 

(Dette kan mislykkes afhængigt af, hvad less er foder, f.eks. hvis -type er blevet fed med backspaces.)

Kommentarer

  • Rør det gennem col -bx først.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *